lkml.org 
[lkml]   [2019]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH 04/15] firmware: arm_scmi: Add names to scmi devices created
    From
    Date
    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@arm.com>
    > ---
    > 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@arm.com>

    Cheers

    Cristian

    \
     
     \ /
      Last update: 2019-12-10 19:27    [W:4.154 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site