Re: [RFC PATCH] mfd: arizona: Update device tree regulator bindings
From: Mark Brown <hidden>
Date: 2013-09-29 17:53:03
Also in:
lkml
Attachments
- signature.asc [application/pgp-signature] 836 bytes
From: Mark Brown <hidden>
Date: 2013-09-29 17:53:03
Also in:
lkml
On Sun, Sep 29, 2013 at 03:11:37PM +0100, Charles Keepax wrote:
There is currently only one other MFD driver (tps65910) which defines the GPIOs on the main MFD node as we do in the Arizona driver and it uses the 'hack' that I suggested in my first email of copying the of_node.
tps65910_gpio->gpio_chip.of_node = tps65910->dev->of_node;
Look where it's copying it to - this isn't the hack you were suggesting before. What you were suggesting before was setting the of_node of the child struct device which is a managed thing that the driver core knows about, the device is the owner of the of_node hanging off it. You would end up with the same of_node referenced from two struct devices which isn't clever. The above is putting a pointer into the gpio_chip which is just telling gpiolib that it should use this of_node when it needs one, gpiolib won't try and lifecycle manage the of_node.
Looking around there seem to be quite a few drivers that copy of_node pointers like this are we sure this isn't an acceptable solution? I mean the arizona driver we know the components will always be loaded as part of the MFD and thus will be freed before the parent node.
It's fine to reference an of_node, that's obviously something that will need to happen at some point in order to do anything useful with the data.