diff mbox series

arm: rpi: perform XHCI firmware upload only once

Message ID 20210917081943.13865-1-m.szyprowski@samsung.com
State Accepted
Commit 33166054c72716e46d492a0588f00900a9684a97
Delegated to: Matthias Brugger
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(+)

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,