[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
<PAXPR04MB84595C6840D6B79B728F8B1B88182@PAXPR04MB8459.eurprd04.prod.outlook.com>
Date: Tue, 14 Jan 2025 08:31:03 +0000
From: Peng Fan <peng.fan@....com>
To: "Peng Fan (OSS)" <peng.fan@....nxp.com>, Cristian Marussi
<cristian.marussi@....com>, Sudeep Holla <sudeep.holla@....com>
CC: Sudeep Holla <sudeep.holla@....com>, Greg Kroah-Hartman
<gregkh@...uxfoundation.org>, Saravana Kannan <saravanak@...gle.com>, Linus
Walleij <linus.walleij@...aro.org>, Aisheng Dong <aisheng.dong@....com>,
Fabio Estevam <festevam@...il.com>, Shawn Guo <shawnguo@...nel.org>, Jacky
Bai <ping.bai@....com>, Pengutronix Kernel Team <kernel@...gutronix.de>,
Sascha Hauer <s.hauer@...gutronix.de>, "arm-scmi@...r.kernel.org"
<arm-scmi@...r.kernel.org>, "linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>, "linux-kernel@...r.kernel.org"
<linux-kernel@...r.kernel.org>, "linux-gpio@...r.kernel.org"
<linux-gpio@...r.kernel.org>, "imx@...ts.linux.dev" <imx@...ts.linux.dev>
Subject: RE: [PATCH 2/4] firmware: arm_scmi: bus: Bypass setting fwnode for
pinctrl
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
Powered by blists - more mailing lists