Message ID | 1617865425-28782-1-git-send-email-liulongfang@huawei.com |
---|---|
State | New |
Headers | show |
Series | USB:ehci:fix ehci hardware problem | expand |
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.
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);
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(+)