linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] of/platform: Initialise dev->fwnode appropriately
@ 2016-09-14 15:01 Robin Murphy
  2016-09-15 13:36 ` Rob Herring
  0 siblings, 1 reply; 4+ messages in thread
From: Robin Murphy @ 2016-09-14 15:01 UTC (permalink / raw)
  To: robh+dt, frowand.list
  Cc: devicetree, linux-arm-kernel, linux-kernel, lorenzo.pieralisi,
	okaya, yisen.zhuang, salil.mehta

Whilst we're some of the way towards a universal firmware property
interface, drivers which deal with both OF and ACPI probing end up
having to do things like this:

    dev->of_node ? &dev->of_node->fwnode : dev->fwnode

This seems unnecessary, when the OF code could instead simply fill in
the device's fwnode when binding the of_node, and let the drivers use
dev->fwnode either way. Let's give it a go and see what falls out.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
---
 drivers/of/platform.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index f39ccd5aa701..f811d2796437 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -142,6 +142,7 @@ struct platform_device *of_device_alloc(struct device_node *np,
 	}
 
 	dev->dev.of_node = of_node_get(np);
+	dev->dev.fwnode = &np->fwnode;
 	dev->dev.parent = parent ? : &platform_bus;
 
 	if (bus_id)
@@ -241,6 +242,7 @@ static struct amba_device *of_amba_device_create(struct device_node *node,
 
 	/* setup generic device info */
 	dev->dev.of_node = of_node_get(node);
+	dev->dev.fwnode = &node->fwnode;
 	dev->dev.parent = parent ? : &platform_bus;
 	dev->dev.platform_data = platform_data;
 	if (bus_id)
-- 
2.8.1.dirty

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] of/platform: Initialise dev->fwnode appropriately
  2016-09-14 15:01 [PATCH] of/platform: Initialise dev->fwnode appropriately Robin Murphy
@ 2016-09-15 13:36 ` Rob Herring
  2016-09-16 11:12   ` Lorenzo Pieralisi
  2016-09-16 12:07   ` Robin Murphy
  0 siblings, 2 replies; 4+ messages in thread
From: Rob Herring @ 2016-09-15 13:36 UTC (permalink / raw)
  To: Robin Murphy
  Cc: frowand.list, devicetree, linux-arm-kernel, linux-kernel,
	lorenzo.pieralisi, okaya, yisen.zhuang, salil.mehta

On Wed, Sep 14, 2016 at 04:01:24PM +0100, Robin Murphy wrote:
> Whilst we're some of the way towards a universal firmware property
> interface, drivers which deal with both OF and ACPI probing end up
> having to do things like this:
> 
>     dev->of_node ? &dev->of_node->fwnode : dev->fwnode
> 
> This seems unnecessary, when the OF code could instead simply fill in
> the device's fwnode when binding the of_node, and let the drivers use
> dev->fwnode either way. Let's give it a go and see what falls out.
> 
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> ---
>  drivers/of/platform.c | 2 ++
>  1 file changed, 2 insertions(+)

I've applied this, but what about non-platform devices such as i2c?

Rob

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] of/platform: Initialise dev->fwnode appropriately
  2016-09-15 13:36 ` Rob Herring
@ 2016-09-16 11:12   ` Lorenzo Pieralisi
  2016-09-16 12:07   ` Robin Murphy
  1 sibling, 0 replies; 4+ messages in thread
From: Lorenzo Pieralisi @ 2016-09-16 11:12 UTC (permalink / raw)
  To: Rob Herring
  Cc: Robin Murphy, frowand.list, devicetree, linux-arm-kernel,
	linux-kernel, okaya, yisen.zhuang, salil.mehta

On Thu, Sep 15, 2016 at 08:36:57AM -0500, Rob Herring wrote:
> On Wed, Sep 14, 2016 at 04:01:24PM +0100, Robin Murphy wrote:
> > Whilst we're some of the way towards a universal firmware property
> > interface, drivers which deal with both OF and ACPI probing end up
> > having to do things like this:
> > 
> >     dev->of_node ? &dev->of_node->fwnode : dev->fwnode
> > 
> > This seems unnecessary, when the OF code could instead simply fill in
> > the device's fwnode when binding the of_node, and let the drivers use
> > dev->fwnode either way. Let's give it a go and see what falls out.
> > 
> > Signed-off-by: Robin Murphy <robin.murphy@arm.com>
> > ---
> >  drivers/of/platform.c | 2 ++
> >  1 file changed, 2 insertions(+)
> 
> I've applied this, but what about non-platform devices such as i2c?

Thanks ! Patch below should do for mfd and i2c (to be confirmed) but
I am pretty certain it is still missing some devices, are we going
to convert them on a case-by-case policy (ie when/if needed) ?

Lorenzo

-- >8 --
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index da3a02e..667a393 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -1574,6 +1574,7 @@ static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap,
 
 	info.addr = addr;
 	info.of_node = of_node_get(node);
+	info.fwnode = &node->fwnode;
 	info.archdata = &dev_ad;
 
 	if (of_get_property(node, "wakeup-source", NULL))
diff --git a/drivers/mfd/mfd-core.c b/drivers/mfd/mfd-core.c
index 3ac486a..c264bf5 100644
--- a/drivers/mfd/mfd-core.c
+++ b/drivers/mfd/mfd-core.c
@@ -179,6 +179,7 @@ static int mfd_add_device(struct device *parent, int id,
 		for_each_child_of_node(parent->of_node, np) {
 			if (of_device_is_compatible(np, cell->of_compatible)) {
 				pdev->dev.of_node = np;
+				pdev->dev.fwnode = &np->fwnode;
 				break;
 			}
 		}

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] of/platform: Initialise dev->fwnode appropriately
  2016-09-15 13:36 ` Rob Herring
  2016-09-16 11:12   ` Lorenzo Pieralisi
@ 2016-09-16 12:07   ` Robin Murphy
  1 sibling, 0 replies; 4+ messages in thread
From: Robin Murphy @ 2016-09-16 12:07 UTC (permalink / raw)
  To: Rob Herring
  Cc: frowand.list, devicetree, linux-arm-kernel, linux-kernel,
	lorenzo.pieralisi, okaya, yisen.zhuang, salil.mehta

On 15/09/16 14:36, Rob Herring wrote:
> On Wed, Sep 14, 2016 at 04:01:24PM +0100, Robin Murphy wrote:
>> Whilst we're some of the way towards a universal firmware property
>> interface, drivers which deal with both OF and ACPI probing end up
>> having to do things like this:
>>
>>     dev->of_node ? &dev->of_node->fwnode : dev->fwnode
>>
>> This seems unnecessary, when the OF code could instead simply fill in
>> the device's fwnode when binding the of_node, and let the drivers use
>> dev->fwnode either way. Let's give it a go and see what falls out.
>>
>> Signed-off-by: Robin Murphy <robin.murphy@arm.com>
>> ---
>>  drivers/of/platform.c | 2 ++
>>  1 file changed, 2 insertions(+)
> 
> I've applied this, but what about non-platform devices such as i2c?

I was indeed wondering that, coming from the perspective of DMA/IOMMU
configuration which doesn't really apply beyond the PCI and platform
buses. More generally, at this point it's largely for the benefit of
subsystems which need to chuck around firmware data for other devices
that don't exist yet (or at all), which maybe is just the DMA and IRQ
layers.

I guess beyond that it comes down to auditing the intersection between
callers of the property API and OF-probed buses, then killing the
dev_fwnode() helper in property.c and making sure nothing else breaks.
The possible alternative would be pushing this right down into
device_initialize(), but that seems a bit wrong.

Thanks,
Robin.

> 
> Rob
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-09-16 12:07 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-14 15:01 [PATCH] of/platform: Initialise dev->fwnode appropriately Robin Murphy
2016-09-15 13:36 ` Rob Herring
2016-09-16 11:12   ` Lorenzo Pieralisi
2016-09-16 12:07   ` Robin Murphy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).