USB:ehci:fix ehci hardware problem
diff mbox series

Message ID 1617865425-28782-1-git-send-email-liulongfang@huawei.com
State New, archived
Headers show
Series
  • USB:ehci:fix ehci hardware problem
Related show

Commit Message

liulongfang April 8, 2021, 7:03 a.m. UTC
When rebooting the EHCI driver, ehci_shutdown() will be called.
if the sbrn flag is 0, ehci_shutdown() will return directly.

Our EHCI hardware does not define the SBRN register, which cause
its value to default to 0. The sbrn flag being 0 will cause the
EHCI interrupt signal to not be turned off after reboot. An interrupt
that is not closed will cause an exception to the device sharing
the interrupt.

Currently, our hardware has this problem. We hope to solve this
problem by skipping reading the sbrn register value. On the next
generation of hardware, we will define this SBRN register in accordance
with the controller standard.

Signed-off-by: Longfang Liu <liulongfang@huawei.com>
---
 drivers/usb/host/ehci-pci.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

liulongfang April 8, 2021, 7:19 a.m. UTC | #1
On 2021/4/8 15:03, Longfang Liu wrote:
> When rebooting the EHCI driver, ehci_shutdown() will be called.
> if the sbrn flag is 0, ehci_shutdown() will return directly.
> 
> Our EHCI hardware does not define the SBRN register, which cause
> its value to default to 0. The sbrn flag being 0 will cause the
> EHCI interrupt signal to not be turned off after reboot. An interrupt
> that is not closed will cause an exception to the device sharing
> the interrupt.
> 
> Currently, our hardware has this problem. We hope to solve this
> problem by skipping reading the sbrn register value. On the next
> generation of hardware, we will define this SBRN register in accordance
> with the controller standard.
> 
> Signed-off-by: Longfang Liu <liulongfang@huawei.com>
> ---
>  drivers/usb/host/ehci-pci.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
> index 3c3820a..5dc6821 100644
> --- a/drivers/usb/host/ehci-pci.c
> +++ b/drivers/usb/host/ehci-pci.c
> @@ -291,6 +291,8 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
>  	if (pdev->vendor == PCI_VENDOR_ID_STMICRO
>  	    && pdev->device == PCI_DEVICE_ID_STMICRO_USB_HOST)
>  		;	/* ConneXT has no sbrn register */
> +	else if (pdev->vendor == PCI_VENDOR_ID_HUAWEI)
> +		;	/* sbrn register is undefined */
>  	else
>  		pci_read_config_byte(pdev, 0x60, &ehci->sbrn);
>  
> 
Sorry, please ignore this patch, I will resend it.
Thanks.
Longfang.

Patch
diff mbox series

diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 3c3820a..5dc6821 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -291,6 +291,8 @@  static int ehci_pci_setup(struct usb_hcd *hcd)
 	if (pdev->vendor == PCI_VENDOR_ID_STMICRO
 	    && pdev->device == PCI_DEVICE_ID_STMICRO_USB_HOST)
 		;	/* ConneXT has no sbrn register */
+	else if (pdev->vendor == PCI_VENDOR_ID_HUAWEI)
+		;	/* sbrn register is undefined */
 	else
 		pci_read_config_byte(pdev, 0x60, &ehci->sbrn);