[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aMGWeswjrsJDiBKJ@lizhi-Precision-Tower-5810>
Date: Wed, 10 Sep 2025 11:17:14 -0400
From: Frank Li <Frank.li@....com>
To: Peng Fan <peng.fan@....com>
Cc: Sudeep Holla <sudeep.holla@....com>,
Cristian Marussi <cristian.marussi@....com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>, arm-scmi@...r.kernel.org,
imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] firmware: arm_scmi: imx: Support getting syslog of
MISC protocol
On Wed, Sep 10, 2025 at 10:28:17PM +0800, Peng Fan wrote:
> MISC protocol supports getting system log regarding system sleep latency,
> wakeup interrupt and etc. Add the API for user to retrieve the information
> from SM.
>
> Signed-off-by: Peng Fan <peng.fan@....com>
> ---
> .../firmware/arm_scmi/vendors/imx/imx-sm-misc.c | 83 ++++++++++++++++++++++
> include/linux/scmi_imx_protocol.h | 2 +
> 2 files changed, 85 insertions(+)
>
...
> +
> +static int scmi_imx_misc_syslog_get(const struct scmi_protocol_handle *ph, u16 *size,
> + void *array)
> +{
> + struct scmi_iterator_ops ops = {
> + .prepare_message = iter_misc_syslog_prepare_message,
> + .update_state = iter_misc_syslog_update_state,
> + .process_response = iter_misc_syslog_process_response,
> + };
Does it need const? looks like also need static.
Frank
> + struct scmi_imx_misc_syslog_ipriv ipriv = {
> + .array = array,
> + .size = size,
> + };
> + void *iter;
> +
> + if (!array || !size || !*size)
> + return -EINVAL;
> +
> + iter = ph->hops->iter_response_init(ph, &ops, *size, SCMI_IMX_MISC_SYSLOG_GET,
> + sizeof(struct scmi_imx_misc_syslog_in),
> + &ipriv);
> + if (IS_ERR(iter))
> + return PTR_ERR(iter);
> +
> + /* If firmware return NOT SUPPORTED, propagate value to caller */
> + return ph->hops->iter_response_run(iter);
> +}
> +
> static const struct scmi_imx_misc_proto_ops scmi_imx_misc_proto_ops = {
> .misc_ctrl_set = scmi_imx_misc_ctrl_set,
> .misc_ctrl_get = scmi_imx_misc_ctrl_get,
> .misc_ctrl_req_notify = scmi_imx_misc_ctrl_notify,
> + .misc_syslog = scmi_imx_misc_syslog_get,
> };
>
> static int scmi_imx_misc_protocol_init(const struct scmi_protocol_handle *ph)
> diff --git a/include/linux/scmi_imx_protocol.h b/include/linux/scmi_imx_protocol.h
> index 27bd372cbfb142b6acb0b1cf4b82f061529d0d45..2407d7693b6ba1303e07629e45e2a7eaaa906fd3 100644
> --- a/include/linux/scmi_imx_protocol.h
> +++ b/include/linux/scmi_imx_protocol.h
> @@ -59,6 +59,8 @@ struct scmi_imx_misc_proto_ops {
> u32 *num, u32 *val);
> int (*misc_ctrl_req_notify)(const struct scmi_protocol_handle *ph,
> u32 ctrl_id, u32 evt_id, u32 flags);
> + int (*misc_syslog)(const struct scmi_protocol_handle *ph, u16 *size,
> + void *array);
> };
>
> /* See LMM_ATTRIBUTES in imx95.rst */
>
> --
> 2.37.1
>
Powered by blists - more mailing lists