Message ID | 20240201045253.14390-1-flash.liu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | firmware: arm_scmi: Avoid to call mbox_client_txdone on txdone_irq mode | expand |
Il 01/02/24 05:52, Pin-Chuan Liu ha scritto: > On txdone_irq mode, tx_tick is done from mbox_chan_txdone. > Calling to mbox_client_txdone could get error message > and return directly, add a check to avoid this. > > Signed-off-by: Pin-Chuan Liu <flash.liu@mediatek.com> > Change-Id: Iacbe0d36ef9cc16974c013c3e94c47dc79eae52b Change-Id is something internal to you and has no meaning upstream. Please remove it. > --- > drivers/firmware/arm_scmi/mailbox.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c > index b8d470417e8f..f6fe801c2e34 100644 > --- a/drivers/firmware/arm_scmi/mailbox.c > +++ b/drivers/firmware/arm_scmi/mailbox.c > @@ -8,6 +8,7 @@ > > #include <linux/err.h> > #include <linux/device.h> > +#include <linux/mailbox_controller.h> > #include <linux/mailbox_client.h> > #include <linux/of.h> > #include <linux/of_address.h> > @@ -275,7 +276,12 @@ static void mailbox_mark_txdone(struct scmi_chan_info *cinfo, int ret, > * Unfortunately, we have to kick the mailbox framework after we have > * received our message. > */ > - mbox_client_txdone(smbox->chan, ret); > + > + /* > + * With txdone_irq mode, kick can be done by mbox_chan_txdone. > + */ Besides, you need one single line for this comment Regards, Angelo > + if (!(smbox->chan->mbox->txdone_irq)) > + mbox_client_txdone(smbox->chan, ret); > } > > static void mailbox_fetch_response(struct scmi_chan_info *cinfo,
Thanks to Angelo, V2 updated. Best, Pin-Chuan On Thu, 2024-02-01 at 09:44 +0100, AngeloGioacchino Del Regno wrote: > Il 01/02/24 05:52, Pin-Chuan Liu ha scritto: > > On txdone_irq mode, tx_tick is done from mbox_chan_txdone. > > Calling to mbox_client_txdone could get error message > > and return directly, add a check to avoid this. > > > > Signed-off-by: Pin-Chuan Liu <flash.liu@mediatek.com> > > Change-Id: Iacbe0d36ef9cc16974c013c3e94c47dc79eae52b > > Change-Id is something internal to you and has no meaning upstream. > Please remove it. > > > --- > > drivers/firmware/arm_scmi/mailbox.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/firmware/arm_scmi/mailbox.c > > b/drivers/firmware/arm_scmi/mailbox.c > > index b8d470417e8f..f6fe801c2e34 100644 > > --- a/drivers/firmware/arm_scmi/mailbox.c > > +++ b/drivers/firmware/arm_scmi/mailbox.c > > @@ -8,6 +8,7 @@ > > > > #include <linux/err.h> > > #include <linux/device.h> > > +#include <linux/mailbox_controller.h> > > #include <linux/mailbox_client.h> > > #include <linux/of.h> > > #include <linux/of_address.h> > > @@ -275,7 +276,12 @@ static void mailbox_mark_txdone(struct > > scmi_chan_info *cinfo, int ret, > > * Unfortunately, we have to kick the mailbox framework after > > we have > > * received our message. > > */ > > - mbox_client_txdone(smbox->chan, ret); > > + > > + /* > > + * With txdone_irq mode, kick can be done by mbox_chan_txdone. > > + */ > > Besides, you need one single line for this comment > > Regards, > Angelo > > > + if (!(smbox->chan->mbox->txdone_irq)) > > + mbox_client_txdone(smbox->chan, ret); > > } > > > > static void mailbox_fetch_response(struct scmi_chan_info *cinfo, > >
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c index b8d470417e8f..f6fe801c2e34 100644 --- a/drivers/firmware/arm_scmi/mailbox.c +++ b/drivers/firmware/arm_scmi/mailbox.c @@ -8,6 +8,7 @@ #include <linux/err.h> #include <linux/device.h> +#include <linux/mailbox_controller.h> #include <linux/mailbox_client.h> #include <linux/of.h> #include <linux/of_address.h> @@ -275,7 +276,12 @@ static void mailbox_mark_txdone(struct scmi_chan_info *cinfo, int ret, * Unfortunately, we have to kick the mailbox framework after we have * received our message. */ - mbox_client_txdone(smbox->chan, ret); + + /* + * With txdone_irq mode, kick can be done by mbox_chan_txdone. + */ + if (!(smbox->chan->mbox->txdone_irq)) + mbox_client_txdone(smbox->chan, ret); } static void mailbox_fetch_response(struct scmi_chan_info *cinfo,
On txdone_irq mode, tx_tick is done from mbox_chan_txdone. Calling to mbox_client_txdone could get error message and return directly, add a check to avoid this. Signed-off-by: Pin-Chuan Liu <flash.liu@mediatek.com> Change-Id: Iacbe0d36ef9cc16974c013c3e94c47dc79eae52b --- drivers/firmware/arm_scmi/mailbox.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)