From: Shawn Guo <shawnguo@kernel.org>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: s.hauer@pengutronix.de, kernel@pengutronix.de,
festevam@gmail.com, linux-imx@nxp.com, aisheng.dong@nxp.com,
alexander.stein@ew.tq-group.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V5 7/9] firmware: imx: scu-irq: export imx_scu_irq_get_status
Date: Mon, 7 Aug 2023 11:17:43 +0800 [thread overview]
Message-ID: <20230807031743.GQ151430@dragon> (raw)
In-Reply-To: <20230731090449.2845997-8-peng.fan@oss.nxp.com>
On Mon, Jul 31, 2023 at 05:04:47PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Cleanup code to export imx_scu_irq_get_status API to make it could
> be used by others, such as SECO.
The first read on subject and commit log gets me the impression that
imx_scu_irq_get_status() is an existing function. Please improve to
make it clear that this is a new function.
Shawn
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> drivers/firmware/imx/imx-scu-irq.c | 40 ++++++++++++++++++++----------
> include/linux/firmware/imx/sci.h | 6 +++++
> 2 files changed, 33 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c
> index 4408f150b3d5..6549f3792a0f 100644
> --- a/drivers/firmware/imx/imx-scu-irq.c
> +++ b/drivers/firmware/imx/imx-scu-irq.c
> @@ -1,6 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * Copyright 2019 NXP
> + * Copyright 2019,2023 NXP
> *
> * Implementation of the SCU IRQ functions using MU.
> *
> @@ -66,29 +66,18 @@ static int imx_scu_irq_notifier_call_chain(unsigned long status, u8 *group)
>
> static void imx_scu_irq_work_handler(struct work_struct *work)
> {
> - struct imx_sc_msg_irq_get_status msg;
> - struct imx_sc_rpc_msg *hdr = &msg.hdr;
> u32 irq_status;
> int ret;
> u8 i;
>
> for (i = 0; i < IMX_SC_IRQ_NUM_GROUP; i++) {
> - hdr->ver = IMX_SC_RPC_VERSION;
> - hdr->svc = IMX_SC_RPC_SVC_IRQ;
> - hdr->func = IMX_SC_IRQ_FUNC_STATUS;
> - hdr->size = 2;
> -
> - msg.data.req.resource = mu_resource_id;
> - msg.data.req.group = i;
> -
> - ret = imx_scu_call_rpc(imx_sc_irq_ipc_handle, &msg, true);
> + ret = imx_scu_irq_get_status(i, &irq_status);
> if (ret) {
> pr_err("get irq group %d status failed, ret %d\n",
> i, ret);
> return;
> }
>
> - irq_status = msg.data.resp.status;
> if (!irq_status)
> continue;
>
> @@ -97,6 +86,31 @@ static void imx_scu_irq_work_handler(struct work_struct *work)
> }
> }
>
> +int imx_scu_irq_get_status(u8 group, u32 *irq_status)
> +{
> + struct imx_sc_msg_irq_get_status msg;
> + struct imx_sc_rpc_msg *hdr = &msg.hdr;
> + int ret;
> +
> + hdr->ver = IMX_SC_RPC_VERSION;
> + hdr->svc = IMX_SC_RPC_SVC_IRQ;
> + hdr->func = IMX_SC_IRQ_FUNC_STATUS;
> + hdr->size = 2;
> +
> + msg.data.req.resource = mu_resource_id;
> + msg.data.req.group = group;
> +
> + ret = imx_scu_call_rpc(imx_sc_irq_ipc_handle, &msg, true);
> + if (ret)
> + return ret;
> +
> + if (irq_status)
> + *irq_status = msg.data.resp.status;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(imx_scu_irq_get_status);
> +
> int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable)
> {
> struct imx_sc_msg_irq_enable msg;
> diff --git a/include/linux/firmware/imx/sci.h b/include/linux/firmware/imx/sci.h
> index 7fa0f3b329b5..df17196df5ff 100644
> --- a/include/linux/firmware/imx/sci.h
> +++ b/include/linux/firmware/imx/sci.h
> @@ -21,6 +21,7 @@ int imx_scu_enable_general_irq_channel(struct device *dev);
> int imx_scu_irq_register_notifier(struct notifier_block *nb);
> int imx_scu_irq_unregister_notifier(struct notifier_block *nb);
> int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable);
> +int imx_scu_irq_get_status(u8 group, u32 *irq_status);
> int imx_scu_soc_init(struct device *dev);
> #else
> static inline int imx_scu_soc_init(struct device *dev)
> @@ -47,5 +48,10 @@ static inline int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable)
> {
> return -EOPNOTSUPP;
> }
> +
> +static inline int imx_scu_irq_get_status(u8 group, u32 *irq_status)
> +{
> + return -EOPNOTSUPP;
> +}
> #endif
> #endif /* _SC_SCI_H */
> --
> 2.37.1
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Shawn Guo <shawnguo@kernel.org>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: s.hauer@pengutronix.de, kernel@pengutronix.de,
festevam@gmail.com, linux-imx@nxp.com, aisheng.dong@nxp.com,
alexander.stein@ew.tq-group.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V5 7/9] firmware: imx: scu-irq: export imx_scu_irq_get_status
Date: Mon, 7 Aug 2023 11:17:43 +0800 [thread overview]
Message-ID: <20230807031743.GQ151430@dragon> (raw)
In-Reply-To: <20230731090449.2845997-8-peng.fan@oss.nxp.com>
On Mon, Jul 31, 2023 at 05:04:47PM +0800, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> Cleanup code to export imx_scu_irq_get_status API to make it could
> be used by others, such as SECO.
The first read on subject and commit log gets me the impression that
imx_scu_irq_get_status() is an existing function. Please improve to
make it clear that this is a new function.
Shawn
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> drivers/firmware/imx/imx-scu-irq.c | 40 ++++++++++++++++++++----------
> include/linux/firmware/imx/sci.h | 6 +++++
> 2 files changed, 33 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/firmware/imx/imx-scu-irq.c b/drivers/firmware/imx/imx-scu-irq.c
> index 4408f150b3d5..6549f3792a0f 100644
> --- a/drivers/firmware/imx/imx-scu-irq.c
> +++ b/drivers/firmware/imx/imx-scu-irq.c
> @@ -1,6 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * Copyright 2019 NXP
> + * Copyright 2019,2023 NXP
> *
> * Implementation of the SCU IRQ functions using MU.
> *
> @@ -66,29 +66,18 @@ static int imx_scu_irq_notifier_call_chain(unsigned long status, u8 *group)
>
> static void imx_scu_irq_work_handler(struct work_struct *work)
> {
> - struct imx_sc_msg_irq_get_status msg;
> - struct imx_sc_rpc_msg *hdr = &msg.hdr;
> u32 irq_status;
> int ret;
> u8 i;
>
> for (i = 0; i < IMX_SC_IRQ_NUM_GROUP; i++) {
> - hdr->ver = IMX_SC_RPC_VERSION;
> - hdr->svc = IMX_SC_RPC_SVC_IRQ;
> - hdr->func = IMX_SC_IRQ_FUNC_STATUS;
> - hdr->size = 2;
> -
> - msg.data.req.resource = mu_resource_id;
> - msg.data.req.group = i;
> -
> - ret = imx_scu_call_rpc(imx_sc_irq_ipc_handle, &msg, true);
> + ret = imx_scu_irq_get_status(i, &irq_status);
> if (ret) {
> pr_err("get irq group %d status failed, ret %d\n",
> i, ret);
> return;
> }
>
> - irq_status = msg.data.resp.status;
> if (!irq_status)
> continue;
>
> @@ -97,6 +86,31 @@ static void imx_scu_irq_work_handler(struct work_struct *work)
> }
> }
>
> +int imx_scu_irq_get_status(u8 group, u32 *irq_status)
> +{
> + struct imx_sc_msg_irq_get_status msg;
> + struct imx_sc_rpc_msg *hdr = &msg.hdr;
> + int ret;
> +
> + hdr->ver = IMX_SC_RPC_VERSION;
> + hdr->svc = IMX_SC_RPC_SVC_IRQ;
> + hdr->func = IMX_SC_IRQ_FUNC_STATUS;
> + hdr->size = 2;
> +
> + msg.data.req.resource = mu_resource_id;
> + msg.data.req.group = group;
> +
> + ret = imx_scu_call_rpc(imx_sc_irq_ipc_handle, &msg, true);
> + if (ret)
> + return ret;
> +
> + if (irq_status)
> + *irq_status = msg.data.resp.status;
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(imx_scu_irq_get_status);
> +
> int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable)
> {
> struct imx_sc_msg_irq_enable msg;
> diff --git a/include/linux/firmware/imx/sci.h b/include/linux/firmware/imx/sci.h
> index 7fa0f3b329b5..df17196df5ff 100644
> --- a/include/linux/firmware/imx/sci.h
> +++ b/include/linux/firmware/imx/sci.h
> @@ -21,6 +21,7 @@ int imx_scu_enable_general_irq_channel(struct device *dev);
> int imx_scu_irq_register_notifier(struct notifier_block *nb);
> int imx_scu_irq_unregister_notifier(struct notifier_block *nb);
> int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable);
> +int imx_scu_irq_get_status(u8 group, u32 *irq_status);
> int imx_scu_soc_init(struct device *dev);
> #else
> static inline int imx_scu_soc_init(struct device *dev)
> @@ -47,5 +48,10 @@ static inline int imx_scu_irq_group_enable(u8 group, u32 mask, u8 enable)
> {
> return -EOPNOTSUPP;
> }
> +
> +static inline int imx_scu_irq_get_status(u8 group, u32 *irq_status)
> +{
> + return -EOPNOTSUPP;
> +}
> #endif
> #endif /* _SC_SCI_H */
> --
> 2.37.1
>
next prev parent reply other threads:[~2023-08-07 3:18 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-31 9:04 [PATCH V5 0/9] firmware: imx: scu/scu-irq: misc update Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-07-31 9:04 ` [PATCH V5 1/9] firmware: imx: scu: change init level to subsys_initcall_sync Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-07-31 9:04 ` [PATCH V5 2/9] firmware: imx: scu: increase RPC timeout Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 2:27 ` Shawn Guo
2023-08-07 2:27 ` Shawn Guo
2023-07-31 9:04 ` [PATCH V5 3/9] firmware: imx: scu: drop return value check Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 2:33 ` Shawn Guo
2023-08-07 2:33 ` Shawn Guo
2023-08-07 3:00 ` Peng Fan
2023-08-07 3:00 ` Peng Fan
2023-07-31 9:04 ` [PATCH V5 4/9] firmware: imx: scu: use soc name for soc_id Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 2:51 ` Shawn Guo
2023-08-07 2:51 ` Shawn Guo
2023-07-31 9:04 ` [PATCH V5 5/9] firmware: imx: scu: use EOPNOTSUPP Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 2:54 ` Shawn Guo
2023-08-07 2:54 ` Shawn Guo
2023-08-07 2:57 ` Peng Fan
2023-08-07 2:57 ` Peng Fan
2023-08-07 3:14 ` Shawn Guo
2023-08-07 3:14 ` Shawn Guo
2023-07-31 9:04 ` [PATCH V5 6/9] firmware: imx: scu-irq: fix RCU complains after M4 partition reset Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 3:13 ` Shawn Guo
2023-08-07 3:13 ` Shawn Guo
2023-08-07 3:28 ` Peng Fan
2023-08-07 3:28 ` Peng Fan
2023-07-31 9:04 ` [PATCH V5 7/9] firmware: imx: scu-irq: export imx_scu_irq_get_status Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 3:17 ` Shawn Guo [this message]
2023-08-07 3:17 ` Shawn Guo
2023-07-31 9:04 ` [PATCH V5 8/9] firmware: imx: scu-irq: enlarge the IMX_SC_IRQ_NUM_GROUP Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-07-31 9:04 ` [PATCH V5 9/9] firmware: imx: scu-irq: support identifying SCU wakeup source from sysfs Peng Fan (OSS)
2023-07-31 9:04 ` Peng Fan (OSS)
2023-08-07 3:47 ` Shawn Guo
2023-08-07 3:47 ` Shawn Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230807031743.GQ151430@dragon \
--to=shawnguo@kernel.org \
--cc=aisheng.dong@nxp.com \
--cc=alexander.stein@ew.tq-group.com \
--cc=festevam@gmail.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peng.fan@nxp.com \
--cc=peng.fan@oss.nxp.com \
--cc=s.hauer@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.