diff mbox series

arm: rpi: perform XHCI firmware upload only once

Message ID 20210917081943.13865-1-m.szyprowski@samsung.com
State Accepted
Commit 33166054c72716e46d492a0588f00900a9684a97
Headers show
Series arm: rpi: perform XHCI firmware upload only once | expand

Commit Message

Marek Szyprowski Sept. 17, 2021, 8:19 a.m. UTC
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(+)

-- 
2.17.1

Comments

nicolas saenz julienne Sept. 17, 2021, 8:40 a.m. UTC | #1
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
Matthias Brugger Sept. 17, 2021, 8:42 a.m. UTC | #2
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,

>
Matthias Brugger Sept. 17, 2021, 8:44 a.m. UTC | #3
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,

>>
diff mbox series

Patch

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,