Hi,

Jiahau Chang <jia...@gmail.com> writes:
> v2 : fix coding format

this doesn't need to be in the commit log. You should place such notes
after the tearline (---) below

> When USB Ethernet is plugged in ASMEDIA ASM1042A xHCI host, bad
> performance was manifesting in Web browser use (like download
> large file such as ISO image). It is known limitation of
> ASM1042A that is not compatible with driver scheduling,
> As a workaround we can modify flow control handling of ASM1042A.
>
> Signed-off-by: Jiahau Chang <lars_ch...@asmedia.com.tw>
> ---
>  drivers/usb/host/pci-quirks.c | 62 
> +++++++++++++++++++++++++++++++++++++++++++
>  drivers/usb/host/pci-quirks.h |  1 +
>  drivers/usb/host/xhci-pci.c   |  5 ++++
>  drivers/usb/host/xhci.c       |  3 +++
>  drivers/usb/host/xhci.h       |  1 +
>  5 files changed, 72 insertions(+)
>
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index a9a1e4c..bdeaf75 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -77,6 +77,12 @@
>  #define USB_INTEL_USB3_PSSEN   0xD8
>  #define USB_INTEL_USB3PRM      0xDC
>  
> +/*ASMEDIA quirk use*/
> +#define ASMT_DATA_WRITE0_REG 0xF8
> +#define ASMT_DATA_WRITE1_REG 0xFC
> +#define ASMT_CONTROL_REG     0xE0
> +#define ASMT_CONTROL_WRITE_BIT       0x02
> +
>  /*
>   * amd_chipset_gen values represent AMD different chipset generations
>   */
> @@ -412,6 +418,62 @@ void usb_amd_quirk_pll_disable(void)
>  }
>  EXPORT_SYMBOL_GPL(usb_amd_quirk_pll_disable);
>  
> +void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev)
> +{
> +     u32 value_low, value_high;
> +     unsigned char value;
> +     unsigned long wait_time_count;
> +
> +     wait_time_count = 1000;
> +     while (wait_time_count) {
> +             pci_read_config_byte(pdev, ASMT_CONTROL_REG, &value);
> +             if (value == 0xff) {
> +                     dev_dbg(&pdev->dev, "%s: wait_write_ready IO_ERROR, 
> value=%x\n",
> +                             __func__, value);
> +                     goto err_exit;
> +             } else if ((value & ASMT_CONTROL_WRITE_BIT) == 0) {
> +                     break;
> +             }
> +             wait_time_count--;
> +             udelay(50);
> +     }
> +     if (wait_time_count == 0) {
> +             dev_dbg(&pdev->dev, "%s: wait_write_ready timeout\n",
> +                     __func__);
> +             goto err_exit;
> +     }
> +     value_low = 0x00010423;
> +     value_high = 0xFA30;

sorry, no magic constants

> +     pci_write_config_dword(pdev, ASMT_DATA_WRITE0_REG, value_low);
> +     pci_write_config_dword(pdev, ASMT_DATA_WRITE1_REG, value_high);
> +     pci_write_config_byte(pdev, ASMT_CONTROL_REG, ASMT_CONTROL_WRITE_BIT);
> +     wait_time_count = 1000;
> +     while (wait_time_count) {
> +             pci_read_config_byte(pdev, ASMT_CONTROL_REG, &value);
> +             if (value == 0xff) {
> +                     dev_dbg(&pdev->dev, "%s: wait_write_ready IO_ERROR, 
> value=%x\n",
> +                             __func__, value);
> +             goto err_exit;

indentation

> +             } else if ((value & ASMT_CONTROL_WRITE_BIT) == 0) {
> +                     break;
> +             }
> +             wait_time_count--;
> +             udelay(50);
> +     }
> +     if (wait_time_count == 0) {
> +             dev_dbg(&pdev->dev, "%s: wait_write_ready timeout\n",
> +                     __func__);
> +             goto err_exit;
> +     }
> +     pci_write_config_dword(pdev, ASMT_DATA_WRITE0_REG, 0xBA);
> +     pci_write_config_dword(pdev, ASMT_DATA_WRITE1_REG, 0);

likewise

> diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
> index 73a28a9..ed58f87 100644
> --- a/drivers/usb/host/xhci.h
> +++ b/drivers/usb/host/xhci.h
> @@ -1819,6 +1819,7 @@ struct xhci_hcd {
>  /* For controller with a broken Port Disable implementation */
>  #define XHCI_BROKEN_PORT_PED (1 << 25)
>  #define XHCI_LIMIT_ENDPOINT_INTERVAL_7       (1 << 26)
> +#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL      (1<<27)

spaces around <<

-- 
balbi

Attachment: signature.asc
Description: PGP signature

Reply via email to