On Tue, Jan 14, 2025 at 08:31:03AM +0000, Peng Fan wrote: > 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. > Hi Peng, sorry for the delay. Why both blacklist and allowlist ? Cristian > > > > 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