Re: [PATCH 1/2] net: mvneta: remove bogus use of
flat view
From: Marcin Wojtas <hidden>
Date: 2017-07-20 16:01:04
Also in:
linux-devicetree
Hi Rob, I somehow missed this patch. 2017-07-20 17:06 GMT+02:00 Gregory CLEMENT [off-list ref]:
Hi Rob, On jeu., juil. 20 2017, Rob Herring [off-list ref] wrote: (Adding Marcin in CC who wrote this part of code)quoted
Nothing sets ever sets data, so it is always NULL. Remove it as this is the only user of data ptr in the whole kernel, and it is going to be removed from struct device_node.Actually the use of device_node.data ptr is not bogus and it is set in mvneta_bm_probe: http://elixir.free-electrons.com/linux/latest/source/drivers/net/ethernet/marvell/mvneta_bm.c#L433 Your patch will break the BM support on this driver. So if you need to remove this data ptr, then you have to offer an alternative for it.
Exactly, this breaks NETA operation with BM block. The data is set in: dn->data = priv; platform_set_drvdata(pdev, priv); At the time I couldn't have found out a nicer solution to make work two different HW blocks (network controller and buffer manager). There was once a patchset enabling calling another driver's probe basing on the phandle and of_node information, but after it reached ~v7 it eventually didn't make it to the tree. Do you any way for solving such dependencies, if you really want to get rid of this field? Best regards, Marcin
Thanks, Gregoryquoted
Cc: Thomas Petazzoni <redacted> Signed-off-by: Rob Herring <robh@kernel.org> --- Probably there's a better fix here to actually enable the h/w buffer manager. I intend to take this thru the DT tree as patch 2 is dependent on this. Rob drivers/net/ethernet/marvell/mvneta.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c index 0aab74c2a209..5624f4b49f9d 100644 --- a/drivers/net/ethernet/marvell/mvneta.c +++ b/drivers/net/ethernet/marvell/mvneta.c@@ -4296,8 +4296,8 @@ static int mvneta_probe(struct platform_device *pdev) /* Obtain access to BM resources if enabled and already initialized */ bm_node = of_parse_phandle(dn, "buffer-manager", 0); - if (bm_node && bm_node->data) { - pp->bm_priv = bm_node->data; + if (bm_node) { + pp->bm_priv = NULL; err = mvneta_bm_port_init(pdev, pp); if (err < 0) { dev_info(&pdev->dev, "use SW buffer management\n"); --2.11.0-- Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com