
Hi Walter,
On Wed, 4 Mar 2020 at 12:40, Walter Lozano walter.lozano@collabora.com wrote:
When OF_PLATDATA is enabled DT information is parsed and platdata structures are populated. In this context the links between DT nodes are represented as pointers to platdata structures, and there is no clear way to access to the device which owns the structure.
This patch implements a set of functions:
- device_find_by_platdata
- uclass_find_device_by_platdata
to access to the device.
Signed-off-by: Walter Lozano walter.lozano@collabora.com
drivers/core/device.c | 19 +++++++++++++++++++ drivers/core/uclass.c | 34 ++++++++++++++++++++++++++++++++++ include/dm/device.h | 2 ++ include/dm/uclass-internal.h | 3 +++ include/dm/uclass.h | 2 ++ 5 files changed, 60 insertions(+)
This is interesting. Could you also add the motivation for this? It's not clear to me who would call this function.
Also it relates to another thing I've been thinking about for a while, which is to validate that all the structs pointed to are correct.
E.g. if every struct had a magic number like:
struct tpm_platdata { DM_STRUCT(UCLASS_TPM, DM_STRUCT_PLATDATA, ...) fields here };
then we could check the structure pointers are correct.
DM_STRUCT() would define to nothing if we were not building with CONFIG_DM_DEBUG or similar.
Anyway, I wonder whether you could expand your definition a bit so you have an enum for the different types of struct you can request:
enum dm_struct_t { DM_STRUCT_PLATDATA, ...
DM_STRUCT_COUNT, };
and modify the function so it can request it via the enum?
Regards, Simon