* [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
@ 2020-02-06 12:59 ` peng.fan
0 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-02-06 12:59 UTC (permalink / raw)
To: sudeep.holla
Cc: viresh.kumar, f.fainelli, linux-imx, linux-arm-kernel,
linux-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
When shmem property of protocol is not specificed, let it use
its parent's shmem property.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Based on Viresh's V6 patchset.
drivers/firmware/arm_scmi/mailbox.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c
index 73077bbc4ad9..68ed58e2a47a 100644
--- a/drivers/firmware/arm_scmi/mailbox.c
+++ b/drivers/firmware/arm_scmi/mailbox.c
@@ -69,6 +69,8 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
return -ENOMEM;
shmem = of_parse_phandle(cdev->of_node, "shmem", idx);
+ if (!shmem)
+ shmem = of_parse_phandle(dev->of_node, "shmem", idx);
ret = of_address_to_resource(shmem, 0, &res);
of_node_put(shmem);
if (ret) {
--
2.16.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
@ 2020-02-06 12:59 ` peng.fan
0 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-02-06 12:59 UTC (permalink / raw)
To: sudeep.holla
Cc: Peng Fan, f.fainelli, viresh.kumar, linux-kernel, linux-imx,
linux-arm-kernel
From: Peng Fan <peng.fan@nxp.com>
When shmem property of protocol is not specificed, let it use
its parent's shmem property.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
Based on Viresh's V6 patchset.
drivers/firmware/arm_scmi/mailbox.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c
index 73077bbc4ad9..68ed58e2a47a 100644
--- a/drivers/firmware/arm_scmi/mailbox.c
+++ b/drivers/firmware/arm_scmi/mailbox.c
@@ -69,6 +69,8 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
return -ENOMEM;
shmem = of_parse_phandle(cdev->of_node, "shmem", idx);
+ if (!shmem)
+ shmem = of_parse_phandle(dev->of_node, "shmem", idx);
ret = of_address_to_resource(shmem, 0, &res);
of_node_put(shmem);
if (ret) {
--
2.16.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] firmware: arm_scmi: mark channel free when init
2020-02-06 12:59 ` peng.fan
@ 2020-02-06 12:59 ` peng.fan
-1 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-02-06 12:59 UTC (permalink / raw)
To: sudeep.holla
Cc: viresh.kumar, f.fainelli, linux-imx, linux-arm-kernel,
linux-kernel, Peng Fan
From: Peng Fan <peng.fan@nxp.com>
The firmware itself might not mark channel free, so let's explicitly
mark it free when do initialization.
Also move struct scmi_shared_mem to common.h
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/firmware/arm_scmi/common.h | 19 +++++++++++++++++--
drivers/firmware/arm_scmi/mailbox.c | 2 ++
drivers/firmware/arm_scmi/shmem.c | 18 ------------------
3 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
index fd091a4ccbff..5df262a564a4 100644
--- a/drivers/firmware/arm_scmi/common.h
+++ b/drivers/firmware/arm_scmi/common.h
@@ -211,8 +211,23 @@ extern const struct scmi_desc scmi_mailbox_desc;
void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr);
void scmi_free_channel(struct scmi_chan_info *cinfo, struct idr *idr, int id);
-/* shmem related declarations */
-struct scmi_shared_mem;
+/*
+ * SCMI specification requires all parameters, message headers, return
+ * arguments or any protocol data to be expressed in little endian
+ * format only.
+ */
+struct scmi_shared_mem {
+ __le32 reserved;
+ __le32 channel_status;
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR BIT(1)
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE BIT(0)
+ __le32 reserved1[2];
+ __le32 flags;
+#define SCMI_SHMEM_FLAG_INTR_ENABLED BIT(0)
+ __le32 length;
+ __le32 msg_header;
+ u8 msg_payload[0];
+};
void shmem_tx_prepare(struct scmi_shared_mem __iomem *shmem,
struct scmi_xfer *xfer);
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c
index 68ed58e2a47a..2d34bf6e94e2 100644
--- a/drivers/firmware/arm_scmi/mailbox.c
+++ b/drivers/firmware/arm_scmi/mailbox.c
@@ -104,6 +104,8 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
cinfo->transport_info = smbox;
smbox->cinfo = cinfo;
+ iowrite32(BIT(0), &smbox->shmem->channel_status);
+
return 0;
}
diff --git a/drivers/firmware/arm_scmi/shmem.c b/drivers/firmware/arm_scmi/shmem.c
index 02c6c7540f42..c9e334654ba3 100644
--- a/drivers/firmware/arm_scmi/shmem.c
+++ b/drivers/firmware/arm_scmi/shmem.c
@@ -11,24 +11,6 @@
#include "common.h"
-/*
- * SCMI specification requires all parameters, message headers, return
- * arguments or any protocol data to be expressed in little endian
- * format only.
- */
-struct scmi_shared_mem {
- __le32 reserved;
- __le32 channel_status;
-#define SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR BIT(1)
-#define SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE BIT(0)
- __le32 reserved1[2];
- __le32 flags;
-#define SCMI_SHMEM_FLAG_INTR_ENABLED BIT(0)
- __le32 length;
- __le32 msg_header;
- u8 msg_payload[0];
-};
-
void shmem_tx_prepare(struct scmi_shared_mem __iomem *shmem,
struct scmi_xfer *xfer)
{
--
2.16.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] firmware: arm_scmi: mark channel free when init
@ 2020-02-06 12:59 ` peng.fan
0 siblings, 0 replies; 8+ messages in thread
From: peng.fan @ 2020-02-06 12:59 UTC (permalink / raw)
To: sudeep.holla
Cc: Peng Fan, f.fainelli, viresh.kumar, linux-kernel, linux-imx,
linux-arm-kernel
From: Peng Fan <peng.fan@nxp.com>
The firmware itself might not mark channel free, so let's explicitly
mark it free when do initialization.
Also move struct scmi_shared_mem to common.h
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/firmware/arm_scmi/common.h | 19 +++++++++++++++++--
drivers/firmware/arm_scmi/mailbox.c | 2 ++
drivers/firmware/arm_scmi/shmem.c | 18 ------------------
3 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/drivers/firmware/arm_scmi/common.h b/drivers/firmware/arm_scmi/common.h
index fd091a4ccbff..5df262a564a4 100644
--- a/drivers/firmware/arm_scmi/common.h
+++ b/drivers/firmware/arm_scmi/common.h
@@ -211,8 +211,23 @@ extern const struct scmi_desc scmi_mailbox_desc;
void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr);
void scmi_free_channel(struct scmi_chan_info *cinfo, struct idr *idr, int id);
-/* shmem related declarations */
-struct scmi_shared_mem;
+/*
+ * SCMI specification requires all parameters, message headers, return
+ * arguments or any protocol data to be expressed in little endian
+ * format only.
+ */
+struct scmi_shared_mem {
+ __le32 reserved;
+ __le32 channel_status;
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR BIT(1)
+#define SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE BIT(0)
+ __le32 reserved1[2];
+ __le32 flags;
+#define SCMI_SHMEM_FLAG_INTR_ENABLED BIT(0)
+ __le32 length;
+ __le32 msg_header;
+ u8 msg_payload[0];
+};
void shmem_tx_prepare(struct scmi_shared_mem __iomem *shmem,
struct scmi_xfer *xfer);
diff --git a/drivers/firmware/arm_scmi/mailbox.c b/drivers/firmware/arm_scmi/mailbox.c
index 68ed58e2a47a..2d34bf6e94e2 100644
--- a/drivers/firmware/arm_scmi/mailbox.c
+++ b/drivers/firmware/arm_scmi/mailbox.c
@@ -104,6 +104,8 @@ static int mailbox_chan_setup(struct scmi_chan_info *cinfo, struct device *dev,
cinfo->transport_info = smbox;
smbox->cinfo = cinfo;
+ iowrite32(BIT(0), &smbox->shmem->channel_status);
+
return 0;
}
diff --git a/drivers/firmware/arm_scmi/shmem.c b/drivers/firmware/arm_scmi/shmem.c
index 02c6c7540f42..c9e334654ba3 100644
--- a/drivers/firmware/arm_scmi/shmem.c
+++ b/drivers/firmware/arm_scmi/shmem.c
@@ -11,24 +11,6 @@
#include "common.h"
-/*
- * SCMI specification requires all parameters, message headers, return
- * arguments or any protocol data to be expressed in little endian
- * format only.
- */
-struct scmi_shared_mem {
- __le32 reserved;
- __le32 channel_status;
-#define SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR BIT(1)
-#define SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE BIT(0)
- __le32 reserved1[2];
- __le32 flags;
-#define SCMI_SHMEM_FLAG_INTR_ENABLED BIT(0)
- __le32 length;
- __le32 msg_header;
- u8 msg_payload[0];
-};
-
void shmem_tx_prepare(struct scmi_shared_mem __iomem *shmem,
struct scmi_xfer *xfer)
{
--
2.16.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
2020-02-06 12:59 ` peng.fan
@ 2020-02-06 15:55 ` Sudeep Holla
-1 siblings, 0 replies; 8+ messages in thread
From: Sudeep Holla @ 2020-02-06 15:55 UTC (permalink / raw)
To: peng.fan
Cc: viresh.kumar, f.fainelli, linux-imx, linux-arm-kernel,
linux-kernel, Sudeep Holla
On Thu, Feb 06, 2020 at 08:59:25PM +0800, peng.fan@nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> When shmem property of protocol is not specificed, let it use
> its parent's shmem property.
I had replied already to the thread without ALKML you had sent earlier,
please refer them.
--
Regards,
Sudeep
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
@ 2020-02-06 15:55 ` Sudeep Holla
0 siblings, 0 replies; 8+ messages in thread
From: Sudeep Holla @ 2020-02-06 15:55 UTC (permalink / raw)
To: peng.fan
Cc: f.fainelli, viresh.kumar, linux-kernel, linux-imx, Sudeep Holla,
linux-arm-kernel
On Thu, Feb 06, 2020 at 08:59:25PM +0800, peng.fan@nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
>
> When shmem property of protocol is not specificed, let it use
> its parent's shmem property.
I had replied already to the thread without ALKML you had sent earlier,
please refer them.
--
Regards,
Sudeep
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
[not found] ` <20200206142204.GB3383@bogus>
@ 2020-02-07 2:08 ` Peng Fan
0 siblings, 0 replies; 8+ messages in thread
From: Peng Fan @ 2020-02-07 2:08 UTC (permalink / raw)
To: Sudeep Holla
Cc: viresh.kumar, f.fainelli, dl-linux-imx,
moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
linux-kernel
> Subject: Re: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for
> protocols
>
> On Thu, Feb 06, 2020 at 08:57:25PM +0800, peng.fan@nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > When shmem property of protocol is not specificed, let it use its
> > parent's shmem property.
> >
>
+arm list
> Why do you even need this ? If shmem property of protocol is not specified
> then why is the mailbox property ? Either you need both or none. I don't see
> the point of this patch. I am interested to know how are you even hitting this
> case.
Without this patch, I need add shmem property in each protocol node.
With this patch, I only need to add shmem property in scmi node.
In mailbox_chan_setup, cdev is protocol device, input parameter device
is the parent, saying scmi device.
>
> If you don't have mailbox property, then chan_available is false and hence we
> don't call chan_setup.
chan_avilable only parse mbox properties, not shmem.
Regards,
Peng.
>
> --
> Regards,
> Sudeep
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols
@ 2020-02-07 2:08 ` Peng Fan
0 siblings, 0 replies; 8+ messages in thread
From: Peng Fan @ 2020-02-07 2:08 UTC (permalink / raw)
To: Sudeep Holla
Cc: viresh.kumar, f.fainelli, dl-linux-imx,
moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE,
linux-kernel
> Subject: Re: [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for
> protocols
>
> On Thu, Feb 06, 2020 at 08:57:25PM +0800, peng.fan@nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > When shmem property of protocol is not specificed, let it use its
> > parent's shmem property.
> >
>
+arm list
> Why do you even need this ? If shmem property of protocol is not specified
> then why is the mailbox property ? Either you need both or none. I don't see
> the point of this patch. I am interested to know how are you even hitting this
> case.
Without this patch, I need add shmem property in each protocol node.
With this patch, I only need to add shmem property in scmi node.
In mailbox_chan_setup, cdev is protocol device, input parameter device
is the parent, saying scmi device.
>
> If you don't have mailbox property, then chan_available is false and hence we
> don't call chan_setup.
chan_avilable only parse mbox properties, not shmem.
Regards,
Peng.
>
> --
> Regards,
> Sudeep
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-02-07 2:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-06 12:59 [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols peng.fan
2020-02-06 12:59 ` peng.fan
2020-02-06 12:59 ` [PATCH 2/2] firmware: arm_scmi: mark channel free when init peng.fan
2020-02-06 12:59 ` peng.fan
2020-02-06 15:55 ` [PATCH 1/2] firmware: arm_scmi: mailbox: share shmem for protocols Sudeep Holla
2020-02-06 15:55 ` Sudeep Holla
[not found] <1580993846-17712-1-git-send-email-peng.fan@nxp.com>
[not found] ` <20200206142204.GB3383@bogus>
2020-02-07 2:08 ` Peng Fan
2020-02-07 2:08 ` Peng Fan
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.