Re: [PATCH] base: soc: set machine name in soc_device_register if empty

From: Greg Kroah-Hartman
Date: Fri Mar 17 2023 - 01:09:01 EST


On Thu, Mar 16, 2023 at 09:35:59PM +0100, Heiner Kallweit wrote:
> Several SoC drivers use the same of-based mechanism to populate the machine
> name. Therefore move this to the core and try to populate the machine name
> in soc_device_register if it's not set yet.
>
> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx>
> ---
> drivers/base/soc.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/drivers/base/soc.c b/drivers/base/soc.c
> index 0fb1d4ab9..8dec5228f 100644
> --- a/drivers/base/soc.c
> +++ b/drivers/base/soc.c
> @@ -7,6 +7,7 @@
>
> #include <linux/sysfs.h>
> #include <linux/init.h>
> +#include <linux/of.h>
> #include <linux/stat.h>
> #include <linux/slab.h>
> #include <linux/idr.h>
> @@ -110,6 +111,18 @@ static void soc_release(struct device *dev)
> kfree(soc_dev);
> }
>
> +static void soc_device_set_machine(struct soc_device_attribute *soc_dev_attr)
> +{
> + struct device_node *np;
> +
> + if (soc_dev_attr->machine)
> + return;
> +
> + np = of_find_node_by_path("/");
> + of_property_read_string(np, "model", &soc_dev_attr->machine);
> + of_node_put(np);
> +}
> +
> static struct soc_device_attribute *early_soc_dev_attr;
>
> struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr)
> @@ -118,6 +131,8 @@ struct soc_device *soc_device_register(struct soc_device_attribute *soc_dev_attr
> const struct attribute_group **soc_attr_groups;
> int ret;
>
> + soc_device_set_machine(soc_dev_attr);
> +

Does this mean some SoC drivers should also be changed at the same time
if they are trying to do this?

And is "model" the correct of property for this? I thought that devices
also had "model" as a valid entry, is this documented somewhere in the
DTS schema that I couldn't find?

thanks,

greg k-h