Patch "usb: dwc2: Skip clock gating on Broadcom SoCs" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    usb: dwc2: Skip clock gating on Broadcom SoCs

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     usb-dwc2-skip-clock-gating-on-broadcom-socs.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 35b0f4c3a4006ff371d22a4a0c0ce1e30bffb02b
Author: Stefan Wahren <wahrenst@xxxxxxx>
Date:   Sun Jul 28 15:00:26 2024 +0200

    usb: dwc2: Skip clock gating on Broadcom SoCs
    
    [ Upstream commit d483f034f03261c8c8450d106aa243837122b5f0 ]
    
    On resume of the Raspberry Pi the dwc2 driver fails to enable
    HCD_FLAG_HW_ACCESSIBLE before re-enabling the interrupts.
    This causes a situation where both handler ignore a incoming port
    interrupt and force the upper layers to disable the dwc2 interrupt line.
    This leaves the USB interface in a unusable state:
    
    irq 66: nobody cared (try booting with the "irqpoll" option)
    CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W          6.10.0-rc3
    Hardware name: BCM2835
    Call trace:
    unwind_backtrace from show_stack+0x10/0x14
    show_stack from dump_stack_lvl+0x50/0x64
    dump_stack_lvl from __report_bad_irq+0x38/0xc0
    __report_bad_irq from note_interrupt+0x2ac/0x2f4
    note_interrupt from handle_irq_event+0x88/0x8c
    handle_irq_event from handle_level_irq+0xb4/0x1ac
    handle_level_irq from generic_handle_domain_irq+0x24/0x34
    generic_handle_domain_irq from bcm2836_chained_handle_irq+0x24/0x28
    bcm2836_chained_handle_irq from generic_handle_domain_irq+0x24/0x34
    generic_handle_domain_irq from generic_handle_arch_irq+0x34/0x44
    generic_handle_arch_irq from __irq_svc+0x88/0xb0
    Exception stack(0xc1b01f20 to 0xc1b01f68)
    1f20: 0005c0d4 00000001 00000000 00000000 c1b09780 c1d6b32c c1b04e54 c1a5eae8
    1f40: c1b04e90 00000000 00000000 00000000 c1d6a8a0 c1b01f70 c11d2da8 c11d4160
    1f60: 60000013 ffffffff
    __irq_svc from default_idle_call+0x1c/0xb0
    default_idle_call from do_idle+0x21c/0x284
    do_idle from cpu_startup_entry+0x28/0x2c
    cpu_startup_entry from kernel_init+0x0/0x12c
    handlers:
    [<f539e0f4>] dwc2_handle_common_intr
    [<75cd278b>] usb_hcd_irq
    Disabling IRQ #66
    
    Disabling clock gating workaround this issue.
    
    Fixes: 0112b7ce68ea ("usb: dwc2: Update dwc2_handle_usb_suspend_intr function.")
    Link: https://lore.kernel.org/linux-usb/3fd0c2fb-4752-45b3-94eb-42352703e1fd@xxxxxxx/T/
    Link: https://lore.kernel.org/all/5e8cbce0-3260-2971-484f-fc73a3b2bd28@xxxxxxxxxxxx/
    Signed-off-by: Stefan Wahren <wahrenst@xxxxxxx>
    Acked-by: Minas Harutyunyan <hminas@xxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20240728130029.78279-5-wahrenst@xxxxxxx
    Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c
index 8eab5f38b1101..7c66a1dfe8975 100644
--- a/drivers/usb/dwc2/params.c
+++ b/drivers/usb/dwc2/params.c
@@ -18,6 +18,7 @@ static void dwc2_set_bcm_params(struct dwc2_hsotg *hsotg)
 	p->max_transfer_size = 65535;
 	p->max_packet_count = 511;
 	p->ahbcfg = 0x10;
+	p->no_clock_gating = true;
 }
 
 static void dwc2_set_his_params(struct dwc2_hsotg *hsotg)




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux