[PATCH 2/2] firmware: arm_scmi: Support 'reg-io-width' property for shared memory
Florian Fainelli
florian.fainelli at broadcom.com
Sun Aug 11 14:08:38 PDT 2024
On 8/10/2024 2:46 PM, Florian Fainelli wrote:
> Some shared memory areas might only support a certain access width,
> (e.g.: 32 bits accesses only). Update the shmem layer to support
> reading from and writing to such shared memory area using the specified
> I/O width in the Device Tree. The various transport layers making use of
> the shmem.c code are updated accordingly to pass the I/O width to the
> routines that need it.
>
> Signed-off-by: Florian Fainelli <florian.fainelli at broadcom.com>
> ---
[snip]
> static void shmem_fetch_response(struct scmi_shared_mem __iomem *shmem,
> - struct scmi_xfer *xfer)
> + struct scmi_xfer *xfer,
> + u32 shmem_io_width)
> {
> size_t len = ioread32(&shmem->length);
>
> @@ -90,20 +144,19 @@ static void shmem_fetch_response(struct scmi_shared_mem __iomem *shmem,
> /* Skip the length of header and status in shmem area i.e 8 bytes */
> xfer->rx.len = min_t(size_t, xfer->rx.len, len > 8 ? len - 8 : 0);
>
> - /* Take a copy to the rx buffer.. */
> - memcpy_fromio(xfer->rx.buf, shmem->msg_payload + 4, xfer->rx.len);
> + __shmem_fetch_resp_notif_data(xfer, shmem, shmem_io_width);
As Justin pointed out to me separately, the source pointer is different
for response and notifications, will fix that, too.
--
Florian
More information about the linux-arm-kernel
mailing list