Hi Cristian, Sudeep > Subject: Re: [PATCH 2/4] firmware: arm_scmi: bus: Bypass setting > fwnode for pinctrl > [...] > >> fix here) than this change. > > > >...or indeed this is another possibility > > I am doing a patch as below, how to do you think? Do you have any comments on below ideas? I am thinking to send out new patchset based on below ideas in this week. > > With below patch, we could resolve the devlink issue and also support > mutitple vendor drivers built in, with each vendor driver has a > machine_allowlist. > > diff --git a/drivers/firmware/arm_scmi/bus.c > b/drivers/firmware/arm_scmi/bus.c index > 1d2aedfcfdb4..c1c45b545480 100644 > --- a/drivers/firmware/arm_scmi/bus.c > +++ b/drivers/firmware/arm_scmi/bus.c > @@ -55,6 +55,20 @@ static int scmi_protocol_device_request(const > struct scmi_device_id *id_table) > unsigned int id = 0; > struct list_head *head, *phead = NULL; > struct scmi_requested_dev *rdev; > + const char * const *allowlist = id_table->machine_allowlist; > + const char * const *blocklist = id_table->machine_blocklist; > + > + if (blocklist && of_machine_compatible_match(blocklist)) { > + pr_debug("block SCMI device (%s) for protocol %x\n", > + id_table->name, id_table->protocol_id); > + return 0; > + } > + > + if (allowlist && !of_machine_compatible_match(allowlist)) { > + pr_debug("block SCMI device (%s) for protocol %x\n", > + id_table->name, id_table->protocol_id); > + return 0; > + } > > pr_debug("Requesting SCMI device (%s) for protocol %x\n", > id_table->name, id_table->protocol_id); diff --git > a/include/linux/scmi_protocol.h b/include/linux/scmi_protocol.h index > 688466a0e816..e1b822d3522f 100644 > --- a/include/linux/scmi_protocol.h > +++ b/include/linux/scmi_protocol.h > @@ -950,6 +950,9 @@ struct scmi_device { struct scmi_device_id { > u8 protocol_id; > const char *name; > + /* Optional */ > + const char * const *machine_blocklist; > + const char * const *machine_allowlist; > }; Thanks, Peng. > > struct scmi_driver { > > Thanks, > Peng > > > >Thanks, > >Cristian