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