On Thu, Jan 17, 2019 at 8:16 AM Ian Abbott <abbotti@xxxxxxxxx> wrote: > > Hi, > > All the examples of "barebox,state" compatible nodes I can find in > Barebox seem to follow this basic pattern: > > / { > /* ... */ > aliases { > /* ... */ > state = &state; > }; > /* ... */ > state: state { > magic = <0xdeadbeef>; /* or whatever */ > compatible = "barebox,state"; > /* ... */ > }; > /* ... */ > }; > > Note that the alias name is the same as the node name in the above example. > > However, when I try to follow that pattern for my own board, I get an > error (-EINVAL): > > ERROR: register_device: already registered state > > This is because the node "state" has been already registered as a device > called "state" by of_platform_device_create() (via of_probe() and > of_arm_init()). Later, the state device driver is initialized and > state_probe() is called on the device that was previously registered. > state_probe() calls state_new_from_node() which calls of_alias_get() to > get the name of the alias for this device (the alias is also called > "state" in this example), and calls state_new() with this alias name. > state_new() allocates a struct state with an embedded struct device_d, > sets the device name to the alias name it was called with ("state"), and > calls register_device() to register this embedded struct device_d. The > call to register_device() fails with return value -EINVAL because the > name is not unique. > > I'm wondering if this has ever worked or whether there is a regression > bug. I fixed it on my board by renaming node to "state_nor", keeping > the alias name as "state". > > I'm currently using Barebox 2018.12.0, but I don't see any relevant > changes in Barebox 2019.01.0 or barebox-next. > This should be fixed by: http://lists.infradead.org/pipermail/barebox/2018-November/035432.html I don't think it is a part of 2018.12.0, though Thanks, Andrey Smirnov _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox