Re: [PATCH v2 2/2] firmware: arm_scmi: mailbox: support P2A channel completion

From: Sudeep Holla
Date: Fri Jun 14 2024 - 05:19:56 EST


On Fri, May 10, 2024 at 11:19:48AM +0800, Peng Fan (OSS) wrote:

There was some coding style error reported(unbalanced {}) which made me
look at the code again. I don't think we need to splat out error.

> @@ -300,8 +326,30 @@ static void mailbox_fetch_notification(struct scmi_chan_info *cinfo,
> static void mailbox_clear_channel(struct scmi_chan_info *cinfo)
> {
> struct scmi_mailbox *smbox = cinfo->transport_info;
> + struct device *cdev = cinfo->dev;
> + struct mbox_chan *intr;
> + int ret;
>
> shmem_clear_channel(smbox->shmem);
> +
> + if (!shmem_channel_intr_enabled(smbox->shmem))
> + return;
> +
> + if (smbox->chan_platform_receiver)
> + intr = smbox->chan_platform_receiver;
> + else if (smbox->chan)
> + intr = smbox->chan;
> + else {
> + dev_err(cdev, "Channel INTR wrongly set?\n");
> + return;
> + }
>

If it is OK I would like to fix it up with below change.

Regards,
Sudeep

-->8

diff --git i/drivers/firmware/arm_scmi/mailbox.c w/drivers/firmware/arm_scmi/mailbox.c
index adb69a6a0223..3bb3fba8f478 100644
--- i/drivers/firmware/arm_scmi/mailbox.c
+++ w/drivers/firmware/arm_scmi/mailbox.c
@@ -326,30 +326,25 @@ static void mailbox_fetch_notification(struct scmi_chan_info *cinfo,
static void mailbox_clear_channel(struct scmi_chan_info *cinfo)
{
struct scmi_mailbox *smbox = cinfo->transport_info;
- struct device *cdev = cinfo->dev;
- struct mbox_chan *intr;
+ struct mbox_chan *intr_chan = NULL;
int ret;

shmem_clear_channel(smbox->shmem);

- if (!shmem_channel_intr_enabled(smbox->shmem))
- return;
-
if (smbox->chan_platform_receiver)
- intr = smbox->chan_platform_receiver;
+ intr_chan = smbox->chan_platform_receiver;
else if (smbox->chan)
- intr = smbox->chan;
- else {
- dev_err(cdev, "Channel INTR wrongly set?\n");
+ intr_chan = smbox->chan;
+
+ if (!(intr_chan && shmem_channel_intr_enabled(smbox->shmem)))
return;
- }

- ret = mbox_send_message(intr, NULL);
+ ret = mbox_send_message(intr_chan, NULL);
/* mbox_send_message returns non-negative value on success, so reset */
if (ret > 0)
ret = 0;

- mbox_client_txdone(intr, ret);
+ mbox_client_txdone(intr_chan, ret);
}

static bool