Thread (17 messages) 17 messages, 6 authors, 2017-01-11

Re: [PATCH v4 2/5] mfd: lm3533: Support initialization from Device Tree

From: Lee Jones <hidden>
Date: 2017-01-09 08:33:06
Also in: linux-iio, linux-leds, lkml

On Fri, 06 Jan 2017, Bjorn Andersson wrote:
On Fri 06 Jan 01:53 PST 2017, Lee Jones wrote:
quoted
On Thu, 05 Jan 2017, Bjorn Andersson wrote:
quoted
On Wed 04 Jan 23:49 PST 2017, Lee Jones wrote:
quoted
On Wed, 04 Jan 2017, Bjorn Andersson wrote:
quoted
On Wed 04 Jan 03:54 PST 2017, Lee Jones wrote:
quoted
On Mon, 26 Dec 2016, Bjorn Andersson wrote:
quoted
From: Bjorn Andersson <bjorn.andersson-/MT0OVThwyLZJqsBc5GL+g@public.gmane.org>

Implement support for initialization of the lm3533 driver core and
probing child devices from Device Tree.
[..]
quoted
quoted
@@ -512,6 +514,11 @@ static int lm3533_device_init(struct lm3533 *lm3533)
 	lm3533_device_bl_init(lm3533);
 	lm3533_device_led_init(lm3533);
 
+	if (lm3533->dev->of_node) {
+		of_platform_populate(lm3533->dev->of_node, NULL, NULL,
+				     lm3533->dev);
+	}
I think it's save to call of_platform_populate(), even if !of_node.
It will just fail and return an error code, which you are ignoring
anyway.
I thought so too, but that's apparently how you trigger probing children
of the root node. So we're stuck with a conditional.
Ah, so this is to protect against the case where DT is present, but a
node for this device is not (or is disabled), so is left unprobed.
Then the bind is initiated via I2C?  Or something else?
In the event that a new lm3533 is spawned from sysfs we would not have
platform_data when entering lm3533_device_init() and just bail early.

Therefor, this issue would be limited to the odd case of lm3533 being
initiated from code (e.g. a board file) on a DT enabled system. In which
case it will create and probe new devices from the root of the DT.
Eewww, do we really want to support that?
As long as we support non-DT probing of the driver this is a possible
scenario. And with modern ARM being DT-centric I think that if anyone
uses this driver with a modern version of the Linux kernel it's likely
that they would have this kind of hybrid solution.

So, although ugly, I think we should keep this conditional and hope that
anyone using the driver will transition to use the DT binding.
Very well, but can you add a comment describing the reason for its
existence with a view to removing it further down the line?

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help