aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2017-01-06 18:37:40 +0100
committerHauke Mehrtens <hauke@hauke-m.de>2017-01-09 23:25:34 +0100
commitf036956e1f6a38bfc4e678adf404f3a717ceaed8 (patch)
tree4be2e14f5d6af19afbd013c6316a2965e0397b88 /target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
parent2dac67464d47fd1c7d87108cfdc04af28d32b264 (diff)
downloadupstream-f036956e1f6a38bfc4e678adf404f3a717ceaed8.tar.gz
upstream-f036956e1f6a38bfc4e678adf404f3a717ceaed8.tar.bz2
upstream-f036956e1f6a38bfc4e678adf404f3a717ceaed8.zip
lantiq: update USB controller initialization
This adds USB initialization fixes for Danube, Amazon SE and xrx300 and should fix the clock on at least Danube which hopefully closes FS#351. The xrx200 usb driver now uses more memory for the dwc2 fifos, this was increased in the chip compared to ar9. This is based in part on the vendor documentation and the vendor code base as a reference. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Diffstat (limited to 'target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch')
-rw-r--r--target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch99
1 files changed, 99 insertions, 0 deletions
diff --git a/target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch b/target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
new file mode 100644
index 0000000000..1eda4cc4f1
--- /dev/null
+++ b/target/linux/lantiq/patches-4.4/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
@@ -0,0 +1,99 @@
+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/platform.c
++++ b/drivers/usb/dwc2/platform.c
+@@ -116,7 +116,7 @@ static const struct dwc2_core_params par
+ .hibernation = -1,
+ };
+
+-static const struct dwc2_core_params params_ltq = {
++static const struct dwc2_core_params params_ase = {
+ .otg_cap = 2, /* non-HNP/non-SRP */
+ .otg_ver = -1,
+ .dma_enable = -1,
+@@ -127,8 +127,8 @@ static const struct dwc2_core_params par
+ .host_rx_fifo_size = 288, /* 288 DWORDs */
+ .host_nperio_tx_fifo_size = 128, /* 128 DWORDs */
+ .host_perio_tx_fifo_size = 96, /* 96 DWORDs */
+- .max_transfer_size = 65535,
+- .max_packet_count = 511,
++ .max_transfer_size = -1,
++ .max_packet_count = -1,
+ .host_channels = -1,
+ .phy_type = -1,
+ .phy_utmi_width = -1,
+@@ -140,8 +140,37 @@ static const struct dwc2_core_params par
+ .host_ls_low_power_phy_clk = -1,
+ .ts_dline = -1,
+ .reload_ctl = -1,
+- .ahbcfg = GAHBCFG_HBSTLEN_INCR16 <<
+- GAHBCFG_HBSTLEN_SHIFT,
++ .ahbcfg = -1,
++ .uframe_sched = -1,
++ .external_id_pin_ctl = -1,
++ .hibernation = -1,
++};
++
++static const struct dwc2_core_params params_xrx200 = {
++ .otg_cap = 2, /* non-HNP/non-SRP */
++ .otg_ver = -1,
++ .dma_enable = -1,
++ .dma_desc_enable = -1,
++ .speed = -1,
++ .enable_dynamic_fifo = -1,
++ .en_multiple_tx_fifo = -1,
++ .host_rx_fifo_size = 288, /* 288 DWORDs */
++ .host_nperio_tx_fifo_size = 128, /* 128 DWORDs */
++ .host_perio_tx_fifo_size = 136, /* 136 DWORDs */
++ .max_transfer_size = -1,
++ .max_packet_count = -1,
++ .host_channels = -1,
++ .phy_type = -1,
++ .phy_utmi_width = -1,
++ .phy_ulpi_ddr = -1,
++ .phy_ulpi_ext_vbus = -1,
++ .i2c_enable = -1,
++ .ulpi_fs_ls = -1,
++ .host_support_fs_ls_low_power = -1,
++ .host_ls_low_power_phy_clk = -1,
++ .ts_dline = -1,
++ .reload_ctl = -1,
++ .ahbcfg = -1,
+ .uframe_sched = -1,
+ .external_id_pin_ctl = -1,
+ .hibernation = -1,
+@@ -341,8 +370,11 @@ static int dwc2_driver_remove(struct pla
+ static const struct of_device_id dwc2_of_match_table[] = {
+ { .compatible = "brcm,bcm2835-usb", .data = &params_bcm2835 },
+ { .compatible = "rockchip,rk3066-usb", .data = &params_rk3066 },
+- { .compatible = "lantiq,arx100-usb", .data = &params_ltq },
+- { .compatible = "lantiq,xrx200-usb", .data = &params_ltq },
++ { .compatible = "lantiq,danube-usb", .data = NULL },
++ { .compatible = "lantiq,ase-usb", .data = &params_ase },
++ { .compatible = "lantiq,arx100-usb", .data = &params_ase },
++ { .compatible = "lantiq,xrx200-usb", .data = &params_xrx200 },
++ { .compatible = "lantiq,xrx300-usb", .data = &params_xrx200 },
+ { .compatible = "snps,dwc2", .data = NULL },
+ { .compatible = "samsung,s3c6400-hsotg", .data = NULL},
+ {},