Re: [PATCH 04/15] firmware: arm_scmi: Add names to scmi devices created
From: Cristian Marussi
Date: Tue Dec 10 2019 - 13:26:46 EST
Hi
On 10/12/2019 14:53, Sudeep Holla wrote:
> Now that scmi bus provides option to create named scmi device, let us
> create the default devices with names. This will help to add names for
> matching to respective drivers and eventually to add multiple devices
> and drivers per protocol.
>
> Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx>
> ---
> drivers/firmware/arm_scmi/driver.c | 36 +++++++++++++++++++++++++++++-
> 1 file changed, 35 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
> index 2952fcd8dd8a..0bbdc7c9eb0f 100644
> --- a/drivers/firmware/arm_scmi/driver.c
> +++ b/drivers/firmware/arm_scmi/driver.c
> @@ -829,6 +829,40 @@ scmi_create_protocol_device(struct device_node *np, struct scmi_info *info,
> scmi_set_handle(sdev);
> }
>
> +#define MAX_SCMI_DEV_PER_PROTOCOL 2
> +struct scmi_prot_devnames {
> + int protocol_id;
> + char *names[MAX_SCMI_DEV_PER_PROTOCOL];
> +};
> +
> +static struct scmi_prot_devnames devnames[] = {
> + { SCMI_PROTOCOL_POWER, { "genpd" },},
> + { SCMI_PROTOCOL_PERF, { "cpufreq" },},
> + { SCMI_PROTOCOL_CLOCK, { "clocks" },},
> + { SCMI_PROTOCOL_SENSOR, { "hwmon" },},
> + { SCMI_PROTOCOL_RESET, { "reset" },},
> +};
> +
> +static inline void
> +scmi_create_protocol_devices(struct device_node *np, struct scmi_info *info,
> + int prot_id)
> +{
> + int loop, cnt;
> +
> + for (loop = 0; loop < ARRAY_SIZE(devnames); loop++) {
> + if (devnames[loop].protocol_id != prot_id)
> + continue;
> +
> + for (cnt = 0; cnt < ARRAY_SIZE(devnames[loop].names); cnt++) {
> + const char *name = devnames[loop].names[cnt];
> +
> + if (name)
> + scmi_create_protocol_device(np, info, prot_id,
> + name);
> + }
> + }
> +}
> +
> static int scmi_probe(struct platform_device *pdev)
> {
> int ret;
> @@ -897,7 +931,7 @@ static int scmi_probe(struct platform_device *pdev)
> continue;
> }
>
> - scmi_create_protocol_device(child, info, prot_id, NULL);
> + scmi_create_protocol_devices(child, info, prot_id);
> }
>
> return 0;
> --
> 2.17.1
>
I'm a little bit puzzled by the builtin fixed define MAX_SCMI_DEV_PER_PROTOCOL, but
I have not really an alternative solution as of now, so looks good to me.
Reviewed-by: Cristian Marussi <cristian.marussi@xxxxxxx>
Cheers
Cristian