From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> To: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>, Naushir Patuck <naush@raspberrypi.com>, Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Conor Dooley <conor+dt@kernel.org>, Florian Fainelli <florian.fainelli@broadcom.com>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Nicolas Saenz Julienne <nsaenz@kernel.org>, Ray Jui <rjui@broadcom.com>, Rob Herring <robh@kernel.org>, Scott Branden <sbranden@broadcom.com>, Stefan Wahren <wahrenst@gmx.net> Subject: [PATCH v2 2/3] firmware: raspberrypi: Use correct device for DMA mappings Date: Tue, 26 Mar 2024 21:58:06 +0200 [thread overview] Message-ID: <20240326195807.15163-3-laurent.pinchart@ideasonboard.com> (raw) In-Reply-To: <20240326195807.15163-1-laurent.pinchart@ideasonboard.com> The buffer used to transfer data over the mailbox interface is mapped using the client's device. This is incorrect, as the device performing the DMA transfer is the mailbox itself. Fix it by using the mailbox controller device instead. This requires including the mailbox_controller.h header to dereference the mbox_chan and mbox_controller structures. The header is not meant to be included by clients. This could be fixed by extending the client API with a function to access the controller's device. Fixes: 4e3d60656a72 ("ARM: bcm2835: Add the Raspberry Pi firmware driver") Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- drivers/firmware/raspberrypi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index 322aada20f74..ac34876a97f8 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -9,6 +9,7 @@ #include <linux/dma-mapping.h> #include <linux/kref.h> #include <linux/mailbox_client.h> +#include <linux/mailbox_controller.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_platform.h> @@ -97,8 +98,8 @@ int rpi_firmware_property_list(struct rpi_firmware *fw, if (size & 3) return -EINVAL; - buf = dma_alloc_coherent(fw->cl.dev, PAGE_ALIGN(size), &bus_addr, - GFP_ATOMIC); + buf = dma_alloc_coherent(fw->chan->mbox->dev, PAGE_ALIGN(size), + &bus_addr, GFP_ATOMIC); if (!buf) return -ENOMEM; @@ -126,7 +127,7 @@ int rpi_firmware_property_list(struct rpi_firmware *fw, ret = -EINVAL; } - dma_free_coherent(fw->cl.dev, PAGE_ALIGN(size), buf, bus_addr); + dma_free_coherent(fw->chan->mbox->dev, PAGE_ALIGN(size), buf, bus_addr); return ret; } -- Regards, Laurent Pinchart
WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> To: devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org Cc: Dave Stevenson <dave.stevenson@raspberrypi.com>, Naushir Patuck <naush@raspberrypi.com>, Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, Conor Dooley <conor+dt@kernel.org>, Florian Fainelli <florian.fainelli@broadcom.com>, Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>, Nicolas Saenz Julienne <nsaenz@kernel.org>, Ray Jui <rjui@broadcom.com>, Rob Herring <robh@kernel.org>, Scott Branden <sbranden@broadcom.com>, Stefan Wahren <wahrenst@gmx.net> Subject: [PATCH v2 2/3] firmware: raspberrypi: Use correct device for DMA mappings Date: Tue, 26 Mar 2024 21:58:06 +0200 [thread overview] Message-ID: <20240326195807.15163-3-laurent.pinchart@ideasonboard.com> (raw) In-Reply-To: <20240326195807.15163-1-laurent.pinchart@ideasonboard.com> The buffer used to transfer data over the mailbox interface is mapped using the client's device. This is incorrect, as the device performing the DMA transfer is the mailbox itself. Fix it by using the mailbox controller device instead. This requires including the mailbox_controller.h header to dereference the mbox_chan and mbox_controller structures. The header is not meant to be included by clients. This could be fixed by extending the client API with a function to access the controller's device. Fixes: 4e3d60656a72 ("ARM: bcm2835: Add the Raspberry Pi firmware driver") Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- drivers/firmware/raspberrypi.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c index 322aada20f74..ac34876a97f8 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -9,6 +9,7 @@ #include <linux/dma-mapping.h> #include <linux/kref.h> #include <linux/mailbox_client.h> +#include <linux/mailbox_controller.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_platform.h> @@ -97,8 +98,8 @@ int rpi_firmware_property_list(struct rpi_firmware *fw, if (size & 3) return -EINVAL; - buf = dma_alloc_coherent(fw->cl.dev, PAGE_ALIGN(size), &bus_addr, - GFP_ATOMIC); + buf = dma_alloc_coherent(fw->chan->mbox->dev, PAGE_ALIGN(size), + &bus_addr, GFP_ATOMIC); if (!buf) return -ENOMEM; @@ -126,7 +127,7 @@ int rpi_firmware_property_list(struct rpi_firmware *fw, ret = -EINVAL; } - dma_free_coherent(fw->cl.dev, PAGE_ALIGN(size), buf, bus_addr); + dma_free_coherent(fw->chan->mbox->dev, PAGE_ALIGN(size), buf, bus_addr); return ret; } -- Regards, Laurent Pinchart _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-03-26 19:58 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-26 19:58 [PATCH v2 0/3] dt-bindings: arm: bcm: raspberrypi,bcm2835-firmware: Drive-by fixes Laurent Pinchart 2024-03-26 19:58 ` Laurent Pinchart 2024-03-26 19:58 ` [PATCH v2 1/3] dt-bindings: arm: bcm: raspberrypi,bcm2835-firmware: Add gpio child node Laurent Pinchart 2024-03-26 19:58 ` Laurent Pinchart 2024-04-04 16:46 ` Florian Fainelli 2024-04-04 16:46 ` Florian Fainelli 2024-03-26 19:58 ` Laurent Pinchart [this message] 2024-03-26 19:58 ` [PATCH v2 2/3] firmware: raspberrypi: Use correct device for DMA mappings Laurent Pinchart 2024-04-04 16:46 ` Florian Fainelli 2024-04-04 16:46 ` Florian Fainelli 2024-03-26 19:58 ` [PATCH v2 3/3] ARM: dts: bcm283x: Drop unneeded properties in the bcm2835-firmware node Laurent Pinchart 2024-03-26 19:58 ` Laurent Pinchart 2024-04-04 16:47 ` Florian Fainelli 2024-04-04 16:47 ` Florian Fainelli 2024-03-27 6:49 ` [PATCH v2 0/3] dt-bindings: arm: bcm: raspberrypi,bcm2835-firmware: Drive-by fixes Stefan Wahren 2024-03-27 6:49 ` Stefan Wahren 2024-03-27 23:37 ` Laurent Pinchart 2024-03-27 23:37 ` Laurent Pinchart 2024-03-28 7:38 ` Ivan T. Ivanov 2024-04-02 8:58 ` Ivan T. Ivanov 2024-04-02 8:58 ` Ivan T. Ivanov 2024-04-02 19:52 ` Stefan Wahren 2024-04-02 19:52 ` Stefan Wahren 2024-04-02 20:08 ` Laurent Pinchart 2024-04-02 20:08 ` Laurent Pinchart 2024-04-02 20:18 ` Florian Fainelli 2024-04-02 20:18 ` Florian Fainelli 2024-04-02 20:32 ` Laurent Pinchart 2024-04-02 20:32 ` Laurent Pinchart 2024-04-02 20:52 ` Florian Fainelli 2024-04-02 20:52 ` Florian Fainelli 2024-04-02 20:22 ` Stefan Wahren 2024-04-02 20:22 ` Stefan Wahren 2024-04-02 20:22 ` Florian Fainelli 2024-04-02 20:22 ` Florian Fainelli
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=20240326195807.15163-3-laurent.pinchart@ideasonboard.com \ --to=laurent.pinchart@ideasonboard.com \ --cc=bcm-kernel-feedback-list@broadcom.com \ --cc=conor+dt@kernel.org \ --cc=dave.stevenson@raspberrypi.com \ --cc=devicetree@vger.kernel.org \ --cc=florian.fainelli@broadcom.com \ --cc=krzysztof.kozlowski+dt@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-rpi-kernel@lists.infradead.org \ --cc=naush@raspberrypi.com \ --cc=nsaenz@kernel.org \ --cc=rjui@broadcom.com \ --cc=robh@kernel.org \ --cc=sbranden@broadcom.com \ --cc=wahrenst@gmx.net \ /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: linkBe 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.