[PATCH] arm: rpi: perform XHCI firmware upload only once

XHCI firmware upload must be performed only once after initializing the PCI bridge. This fixes USB stack initialization after calling "usb stop; usb start" on Raspberry Pi 4B.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com --- arch/arm/mach-bcm283x/msg.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c index 347aece3cd..345f7fe2b7 100644 --- a/arch/arm/mach-bcm283x/msg.c +++ b/arch/arm/mach-bcm283x/msg.c @@ -170,6 +170,12 @@ int bcm2711_notify_vl805_reset(void) ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset, msg_notify_vl805_reset, 1); int ret; + static int done = false; + + if (done) + return 0; + + done = true;
BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset); BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr,

On Fri, 2021-09-17 at 10:19 +0200, Marek Szyprowski wrote:
XHCI firmware upload must be performed only once after initializing the PCI bridge. This fixes USB stack initialization after calling "usb stop; usb start" on Raspberry Pi 4B.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Reviewed-by: Nicolas Saenz Julienne nsaenz@kernel.org
Regards, Nicolas

On 17/09/2021 10:19, Marek Szyprowski wrote:
XHCI firmware upload must be performed only once after initializing the PCI bridge. This fixes USB stack initialization after calling "usb stop; usb start" on Raspberry Pi 4B.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Looks good to me. I'll wait a bit more to see if Nicolas can do a review as well before queuing it.
Regards, Matthias
arch/arm/mach-bcm283x/msg.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c index 347aece3cd..345f7fe2b7 100644 --- a/arch/arm/mach-bcm283x/msg.c +++ b/arch/arm/mach-bcm283x/msg.c @@ -170,6 +170,12 @@ int bcm2711_notify_vl805_reset(void) ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset, msg_notify_vl805_reset, 1); int ret;
static int done = false;
if (done)
return 0;
done = true;
BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset); BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr,

On 17/09/2021 10:42, Matthias Brugger wrote:
On 17/09/2021 10:19, Marek Szyprowski wrote:
XHCI firmware upload must be performed only once after initializing the PCI bridge. This fixes USB stack initialization after calling "usb stop; usb start" on Raspberry Pi 4B.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com
Looks good to me. I'll wait a bit more to see if Nicolas can do a review as well before queuing it.
There was a race condition, I'll queque it now :)
Regards, Matthias
arch/arm/mach-bcm283x/msg.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c index 347aece3cd..345f7fe2b7 100644 --- a/arch/arm/mach-bcm283x/msg.c +++ b/arch/arm/mach-bcm283x/msg.c @@ -170,6 +170,12 @@ int bcm2711_notify_vl805_reset(void) ALLOC_CACHE_ALIGN_BUFFER(struct msg_notify_vl805_reset, msg_notify_vl805_reset, 1); int ret; + static int done = false;
+ if (done) + return 0;
+ done = true; BCM2835_MBOX_INIT_HDR(msg_notify_vl805_reset); BCM2835_MBOX_INIT_TAG(&msg_notify_vl805_reset->dev_addr,
participants (3)
-
Marek Szyprowski
-
Matthias Brugger
-
nicolas saenz julienne