From 08c3b88dd145d3f7f06e7ad8458905bde7a286ef Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 3 Oct 2020 09:25:21 -0600 Subject: dm: core: Avoid void * in the of-platdata structs These pointers point to drivers. Update the definition to make this clear. Signed-off-by: Simon Glass --- include/dt-structs.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'include/dt-structs.h') diff --git a/include/dt-structs.h b/include/dt-structs.h index 924d51f..eed8273 100644 --- a/include/dt-structs.h +++ b/include/dt-structs.h @@ -8,18 +8,20 @@ /* These structures may only be used in SPL */ #if CONFIG_IS_ENABLED(OF_PLATDATA) +struct driver_info; + struct phandle_0_arg { - const void *node; + const struct driver_info *node; int arg[0]; }; struct phandle_1_arg { - const void *node; + const struct driver_info *node; int arg[1]; }; struct phandle_2_arg { - const void *node; + const struct driver_info *node; int arg[2]; }; #include -- cgit v1.1 From 8a38abfc43f94a92b63e428738714111710bda53 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 3 Oct 2020 11:31:40 -0600 Subject: dm: Use driver_info index instead of pointer At present we use a 'node' pointer in the of-platadata phandle_n_arg structs. This is a pointer to the struct driver_info for a particular device, and we can use it to obtain the struct udevice pointer itself. Since we don't know the struct udevice pointer until it is allocated in memory, we have to fix up the phandle_n_arg.node at runtime. This is annoying since it requires that SPL's data is writable and adds a small amount of extra (generated) code in the dm_populate_phandle_data() function. Now that we can find a driver_info by its index, it is easier to put the index in the phandle_n_arg structures. Update dtoc to do this, add a new device_get_by_driver_info_idx() to look up a device by drive_info index and update the tests to match. Signed-off-by: Simon Glass --- include/dt-structs.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include/dt-structs.h') diff --git a/include/dt-structs.h b/include/dt-structs.h index eed8273..f0e1c9c 100644 --- a/include/dt-structs.h +++ b/include/dt-structs.h @@ -11,17 +11,17 @@ struct driver_info; struct phandle_0_arg { - const struct driver_info *node; + uint idx; int arg[0]; }; struct phandle_1_arg { - const struct driver_info *node; + uint idx; int arg[1]; }; struct phandle_2_arg { - const struct driver_info *node; + uint idx; int arg[2]; }; #include -- cgit v1.1