On Wed, Dec 01, 2021 at 02:53:42PM +0100, Bartosz Golaszewski wrote:
On Wed, Dec 1, 2021 at 2:40 PM Andy Shevchenko andriy.shevchenko@linux.intel.com wrote:
On Wed, Dec 01, 2021 at 02:11:28PM +0100, Bartosz Golaszewski wrote:
On Tue, Nov 30, 2021 at 10:04 PM Bartosz Golaszewski brgl@bgdev.pl wrote:
...
Let me maybe rephrase the problem: currently, for GPIO devices instantiating multiple banks created outside of the OF or ACPI frameworks (e.g. instantiated manually and configured using a hierarchy of software nodes with a single parent swnode and a number of child swnodes representing the children), it is impossible to assign firmware nodes other than the one representing the top GPIO device to the gpiochip child devices.
In fact if we want to drop the OF APIs entirely from gpiolib - this would be the right first step as for gpio-sim it actually replaces the gc->of_node = some_of_node; assignment that OF-based drivers do for sub-nodes defining banks and it does work with device-tree (I verified that too) thanks to the fwnode abstraction layer.
I still don't see how you set up hierarchy of primary/secondary fwnodes.
And I don't like this change. It seems it band-aids some issue with fwnode usage. What the easiest way to reproduce the issue with your series applied (without this change)?
Drop this patch and drop the line where the fwnode is assigned in gpio-sim.c. Then probe the device and print the addresses of the parent and child swnodes. See how they are the same and don't match the swnode hierarchy we created. You can then apply this patch and see how it becomes correct.
Thanks. I will give a spin.
Note, it seems I have to revert your older code first...