lantiq: copy target to kernel 5.10
[openwrt/openwrt.git] / target / linux / lantiq / patches-5.10 / 0050-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
diff --git a/target/linux/lantiq/patches-5.10/0050-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch b/target/linux/lantiq/patches-5.10/0050-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
new file mode 100644 (file)
index 0000000..d63d48a
--- /dev/null
@@ -0,0 +1,78 @@
+From de2cad82c4d0872066f83ce59462603852b47f03 Mon Sep 17 00:00:00 2001
+From: Hauke Mehrtens <hauke@hauke-m.de>
+Date: Fri, 6 Jan 2017 17:55:24 +0100
+Subject: [PATCH 2/2] usb: dwc2:  add support for other Lantiq SoCs
+
+The size of the internal RAM of the DesignWare USB controller changed
+between the different Lantiq SoCs. We have the following sizes:
+
+Amazon + Danube: 8 KByte
+Amazon SE + arx100: 2 KByte
+xrx200 + xrx300: 2.5 KByte
+
+For Danube SoC we do not provide the params and let the driver decide
+to use sane defaults, for the Amazon SE and arx100 we use small fifos
+and for the xrx200 and xrx300 SCs a little bit bigger periodic fifo.
+The auto detection of max_transfer_size and max_packet_count should
+work, so remove it.
+
+Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
+---
+ drivers/usb/dwc2/platform.c | 46 ++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 39 insertions(+), 7 deletions(-)
+
+--- a/drivers/usb/dwc2/params.c
++++ b/drivers/usb/dwc2/params.c
+@@ -92,7 +92,14 @@ static void dwc2_set_rk_params(struct dw
+       p->power_down = 0;
+ }
+-static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg)
++static void dwc2_set_ltq_danube_params(struct dwc2_hsotg *hsotg)
++{
++      struct dwc2_core_params *p = &hsotg->params;
++
++      p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE;
++}
++
++static void dwc2_set_ltq_ase_params(struct dwc2_hsotg *hsotg)
+ {
+       struct dwc2_core_params *p = &hsotg->params;
+@@ -100,12 +107,20 @@ static void dwc2_set_ltq_params(struct d
+       p->host_rx_fifo_size = 288;
+       p->host_nperio_tx_fifo_size = 128;
+       p->host_perio_tx_fifo_size = 96;
+-      p->max_transfer_size = 65535;
+-      p->max_packet_count = 511;
+       p->ahbcfg = GAHBCFG_HBSTLEN_INCR16 <<
+               GAHBCFG_HBSTLEN_SHIFT;
+ }
++static void dwc2_set_ltq_xrx200_params(struct dwc2_hsotg *hsotg)
++{
++      struct dwc2_core_params *p = &hsotg->params;
++
++      p->otg_cap = DWC2_CAP_PARAM_NO_HNP_SRP_CAPABLE;
++      p->host_rx_fifo_size = 288;
++      p->host_nperio_tx_fifo_size = 128;
++      p->host_perio_tx_fifo_size = 136;
++}
++
+ static void dwc2_set_amlogic_params(struct dwc2_hsotg *hsotg)
+ {
+       struct dwc2_core_params *p = &hsotg->params;
+@@ -167,8 +182,11 @@ const struct of_device_id dwc2_of_match_
+       { .compatible = "brcm,bcm2835-usb", .data = dwc2_set_bcm_params },
+       { .compatible = "hisilicon,hi6220-usb", .data = dwc2_set_his_params  },
+       { .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params },
+-      { .compatible = "lantiq,arx100-usb", .data = dwc2_set_ltq_params },
+-      { .compatible = "lantiq,xrx200-usb", .data = dwc2_set_ltq_params },
++      { .compatible = "lantiq,danube-usb", .data = &dwc2_set_ltq_danube_params },
++      { .compatible = "lantiq,ase-usb", .data = &dwc2_set_ltq_ase_params },
++      { .compatible = "lantiq,arx100-usb", .data = &dwc2_set_ltq_ase_params },
++      { .compatible = "lantiq,xrx200-usb", .data = &dwc2_set_ltq_xrx200_params },
++      { .compatible = "lantiq,xrx300-usb", .data = &dwc2_set_ltq_xrx200_params },
+       { .compatible = "snps,dwc2" },
+       { .compatible = "samsung,s3c6400-hsotg",
+         .data = dwc2_set_s3c6400_params },