Re: [PATCH] arm: rpi: perform XHCI firmware upload only once
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 > --- Reviewed-by: Nicolas Saenz Julienne Regards, Nicolas
Re: [PATCH] arm: rpi: perform XHCI firmware upload only once
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 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(_notify_vl805_reset->dev_addr,
Re: [PATCH] arm: rpi: perform XHCI firmware upload only once
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 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(_notify_vl805_reset->dev_addr,