[LEDE-DEV] [PATCH] lantiq: fix missing otg_cap on danube platform

Hauke Mehrtens hauke at hauke-m.de
Mon Aug 7 09:58:01 PDT 2017



On 08/04/2017 08:45 PM, Daniel wrote:
> Not sure about your question. I'm just re-adding the deleted code in
> the last commit on the affected kernel patch:
> 
> https://github.com/lede-project/source/commit/f036956e1f6a38bfc4e678adf404f3a717ceaed8#diff-0928a7bd0f08843e69824f86d7a82782L35
> 
> I assume the only one important parameter here is " .otg_cap
>              = 2, "
> Which is causing the danube boards don't initialize the USB port correctly.
> 
> Related bug https://bugs.lede-project.org/index.php?do=details&task_id=351&opened=11&status[0]=
> As Mohammed Berdai commented in the last post the ARV7518PW doesn't
> detect anything on the usb port. Not sure if all danube boards are
> affected. The patch solves the problem.

Hi,

I will take care about this problem.

Danube supports host only mode and device only mode, are there any
boards with USB configured in device only mode out there and did it ever
worked with LEDE?

Hauke

> 
> Regards.
> 
> 2017-08-04 18:41 GMT+02:00 Hauke Mehrtens <hauke at hauke-m.de>:
>>
>>
>>
>> On 07/29/2017 02:54 PM, Daniel Gonzalez Cabanelas wrote:
>>> USB doesn't work in some danube boards because otg_cap
>>> is missing since previous changes made on the USB-dwc2
>>> lantiq driver. Fix it.
>>>
>>> Tested on the ARV7518PW router.
>>>
>>> Signed-off-by: Daniel Gonzalez Cabanelas <dgcbueu at gmail.com>
>>> ---
>>>  ...ke-the-lantiq-settings-match-vendor-drive.patch | 78 +++++++++++++++-------
>>>  ...ke-the-lantiq-settings-match-vendor-drive.patch | 41 ++++++++++--
>>>  2 files changed, 90 insertions(+), 29 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
>>> index 1eda4cc..d92e7b1 100644
>>> --- 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
>>> @@ -23,16 +23,46 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>
>>>  --- a/drivers/usb/dwc2/platform.c
>>>  +++ b/drivers/usb/dwc2/platform.c
>>> -@@ -116,7 +116,7 @@ static const struct dwc2_core_params par
>>> +@@ -116,7 +116,37 @@ static const struct dwc2_core_params par
>>>       .hibernation                    = -1,
>>>   };
>>>
>>>  -static const struct dwc2_core_params params_ltq = {
>>> ++static const struct dwc2_core_params params_danube = {
>>> ++    .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              = -1,
>>> ++    .host_nperio_tx_fifo_size       = -1,
>>> ++    .host_perio_tx_fifo_size        = -1,
>>> ++    .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,
>>> ++};
>>> ++
>>>  +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
>>> +@@ -127,8 +157,38 @@ 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 */
>>> @@ -40,15 +70,17 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>  -    .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,
>>> ++    .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,
>>> @@ -68,28 +100,26 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>  +    .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,
>>> +     .host_channels                  = -1,
>>> +     .phy_type                       = -1,
>>> +     .phy_utmi_width                 = -1,
>>> +@@ -140,8 +200,7 @@ 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,
>>
>> What are you changing here? Is that related to your danube change?
>>
>>>       .uframe_sched                   = -1,
>>>       .external_id_pin_ctl            = -1,
>>>       .hibernation                    = -1,
>>> -@@ -341,8 +370,11 @@ static int dwc2_driver_remove(struct pla
>>> +@@ -341,8 +400,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,danube-usb", .data = &params_danube },
>>>  +    { .compatible = "lantiq,ase-usb", .data = &params_ase },
>>>  +    { .compatible = "lantiq,arx100-usb", .data = &params_ase },
>>>  +    { .compatible = "lantiq,xrx200-usb", .data = &params_xrx200 },
>>> diff --git a/target/linux/lantiq/patches-4.9/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch b/target/linux/lantiq/patches-4.9/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
>>> index bff603f..4d18443 100644
>>> --- a/target/linux/lantiq/patches-4.9/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
>>> +++ b/target/linux/lantiq/patches-4.9/0061-USB-DWC2-make-the-lantiq-settings-match-vendor-drive.patch
>>> @@ -23,16 +23,47 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>
>>>  --- a/drivers/usb/dwc2/platform.c
>>>  +++ b/drivers/usb/dwc2/platform.c
>>> -@@ -151,7 +151,7 @@ static const struct dwc2_core_params par
>>> +@@ -151,7 +151,38 @@ static const struct dwc2_core_params par
>>>       .hibernation                    = -1,
>>>   };
>>>
>>>  -static const struct dwc2_core_params params_ltq = {
>>> ++static const struct dwc2_core_params params_danube = {
>>> ++    .otg_cap                        = 2,    /* non-HNP/non-SRP */
>>> ++    .otg_ver                        = -1,
>>> ++    .dma_enable                     = -1,
>>> ++    .dma_desc_enable                = -1,
>>> ++    .dma_desc_fs_enable             = -1,
>>> ++    .speed                          = -1,
>>> ++    .enable_dynamic_fifo            = -1,
>>> ++    .en_multiple_tx_fifo            = -1,
>>> ++    .host_rx_fifo_size              = -1,
>>> ++    .host_nperio_tx_fifo_size       = -1,
>>> ++    .host_perio_tx_fifo_size        = -1,
>>> ++    .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,
>>> ++};
>>> ++
>>>  +static const struct dwc2_core_params params_ase = {
>>>       .otg_cap                        = 2,    /* non-HNP/non-SRP */
>>>       .otg_ver                        = -1,
>>>       .dma_enable                     = -1,
>>> -@@ -163,8 +163,8 @@ static const struct dwc2_core_params par
>>> +@@ -163,8 +194,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 */
>>> @@ -43,7 +74,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>       .host_channels                  = -1,
>>>       .phy_type                       = -1,
>>>       .phy_utmi_width                 = -1,
>>> -@@ -176,8 +176,37 @@ static const struct dwc2_core_params par
>>> +@@ -176,8 +207,37 @@ static const struct dwc2_core_params par
>>>       .host_ls_low_power_phy_clk      = -1,
>>>       .ts_dline                       = -1,
>>>       .reload_ctl                     = -1,
>>> @@ -83,13 +114,13 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>       .uframe_sched                   = -1,
>>>       .external_id_pin_ctl            = -1,
>>>       .hibernation                    = -1,
>>> -@@ -515,8 +544,11 @@ static const struct of_device_id dwc2_of
>>> +@@ -515,8 +575,11 @@ static const struct of_device_id dwc2_of
>>>       { .compatible = "brcm,bcm2835-usb", .data = &params_bcm2835 },
>>>       { .compatible = "hisilicon,hi6220-usb", .data = &params_hi6220 },
>>>       { .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,danube-usb", .data = &params_danube },
>>>  +    { .compatible = "lantiq,ase-usb", .data = &params_ase },
>>>  +    { .compatible = "lantiq,arx100-usb", .data = &params_ase },
>>>  +    { .compatible = "lantiq,xrx200-usb", .data = &params_xrx200 },
>>>



More information about the Lede-dev mailing list