[Pdbg] [RFC 09/12] libpdbg: Initialise target class from device-tree

Amitay Isaacs amitay at ozlabs.org
Tue Aug 20 14:06:52 AEST 2019


I guess we can keep this for time being till we add drivers for all the
hardware units.

Reviewed-by: Amitay Isaacs <amitay at ozlabs.org>

On Tue, 2019-08-06 at 11:37 +1000, Alistair Popple wrote:
> The target class is usually initialised from the hardware unit
> description. However if no hardware unit is found no class is
> assigned. This patch makes it possible to assign one in cases when no
> hardware unit is available.
> 
> This is primarily useful for busses and other targets that have
> drivers assigned via the backend selection logic.
> 
> Signed-off-by: Alistair Popple <alistair at popple.id.au>
> ---
>  libpdbg/device.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/libpdbg/device.c b/libpdbg/device.c
> index f6d27db..428d946 100644
> --- a/libpdbg/device.c
> +++ b/libpdbg/device.c
> @@ -118,6 +118,8 @@ static struct pdbg_target *pdbg_target_new(const
> void *fdt, int node_offset)
>  
>  static struct pdbg_target *dt_new_node(const char *name, const void
> *fdt, int node_offset)
>  {
> +	struct pdbg_target_class *target_class;
> +	const struct fdt_property *prop;
>  	struct pdbg_target *node = NULL;
>  	size_t size = sizeof(*node);
>  
> @@ -132,6 +134,15 @@ static struct pdbg_target *dt_new_node(const
> char *name, const void *fdt, int no
>  		abort();
>  	}
>  
> +	if (fdt && !node->class) {
> +		prop = fdt_get_property(fdt, node_offset, "class",
> NULL);
> +		if (prop) {
> +			node->class = (char *) &prop->data[0];
> +			target_class = get_target_class(node);
> +			list_add_tail(&target_class->targets, &node-
> >class_link);
> +		}
> +	}
> +
>  	node->dn_name = take_name(name);
>  	node->parent = NULL;
>  	list_head_init(&node->properties);
> -- 
> 2.20.1
> 

Amitay.
-- 

To have a friend, be a friend. - Old saying



More information about the Pdbg mailing list