[U-Boot] [PATCH] usb: dwc2_udc_otg: support 8-bit interface

Marek Vasut marex at denx.de
Mon Jun 6 23:05:26 CEST 2016


On 06/06/2016 09:10 PM, Steve Rae wrote:
> On Mon, Jun 6, 2016 at 11:58 AM, Steve Rae <steve.rae at broadcom.com> wrote:
>> On Mon, Jun 6, 2016 at 10:03 AM, Marek Vasut <marex at denx.de> wrote:
>>>
>>> On 06/06/2016 06:50 PM, Steve Rae wrote:
>>>>
>>>>
>>>> On Mon, Jun 6, 2016 at 9:30 AM, Marek Vasut <marex at denx.de
>>>> <mailto:marex at denx.de>> wrote:
>>>>
>>>>     On 06/06/2016 06:15 PM, Steve Rae wrote:
>>>>     > On Mon, Jun 6, 2016 at 8:59 AM, Marek Vasut <marex at denx.de <mailto:marex at denx.de>> wrote:
>>>>     >>
>>>>     >> On 06/06/2016 05:57 PM, Steve Rae wrote:
>>>>     >>> Define CONFIG_USB_GADGET_DWC2_PHY_8_BIT to allow the
>>>>     >>> physical interface to be 8-bit (rather than 16-bit).
>>>>     >>>
>>>>     >>> Signed-off-by: Steve Rae <srae at broadcom.com <mailto:srae at broadcom.com>>
>>>>     >>
>>>>     >> Can this config option be picked from DT rather than hard-coded by some
>>>>     >> new ad-hoc config option ? Also, new options should be Kconfig'd .
>>>>     >>
>>>>     >> Thanks
>>>>     >>
>>>>     >
>>>>     > Marek,
>>>>
>>>>     Hi,
>>>>
>>>>     > would this be the correct place to add this Kconfig???
>>>>     > is the wording sufficient?
>>>>     > Thanks, Steve
>>>>     >
>>>>     > diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
>>>>     > index a35a1c7..e957df4 100644
>>>>     > --- a/drivers/usb/gadget/Kconfig
>>>>     > +++ b/drivers/usb/gadget/Kconfig
>>>>     > @@ -45,20 +45,26 @@ config USB_GADGET_ATMEL_USBA
>>>>     >
>>>>     >  config USB_GADGET_DWC2_OTG
>>>>     >         bool "DesignWare USB2.0 HS OTG controller (gadget mode)"
>>>>     >         select USB_GADGET_DUALSPEED
>>>>     >         help
>>>>     >           The Designware USB2.0 high-speed gadget controller
>>>>     >           integrated into many SoCs. Select this option if you want the
>>>>     >           driver to operate in Peripheral mode. This option requires
>>>>     >           USB_GADGET to be enabled.
>>>>     >
>>>>     > +config USB_GADGET_DWC2_PHY_8_BIT
>>>>     > +       bool "DesignWare USB2.0 controller (gadget mode)"
>>>>
>>>>     This is wrong, right ?
>>>>
>>>> (see below)
>>>>
>>>>
>>>>     > +       help
>>>>     > +         Set the Designware USB2.0 high-speed gadget controller
>>>>     > +         to 8-bit mode, rather than the default 16-bit mode.
>>>>
>>>>     You mean 8bit mode ULPI, don't you ?
>>>>
>>>> (see below)
>>>>
>>>>
>>>>     >  config CI_UDC
>>>>     >         bool "ChipIdea device controller"
>>>>     >         select USB_GADGET_DUALSPEED
>>>>     >         help
>>>>     >           Say Y here to enable device controller functionality of the
>>>>     >           ChipIdea driver.
>>>>     >
>>>>     >  config USB_GADGET_VBUS_DRAW
>>>>     >         int "Maximum VBUS Power usage (2-500 mA)"
>>>>     >         range 2 500
>>>>     >
>>>>     >>
>>>>     >>> ---
>>>>     >>>
>>>>     >>>  drivers/usb/gadget/dwc2_udc_otg.c | 4 ++++
>>>>     >>>  include/configs/bcm28155_ap.h     | 1 +
>>>>     >>>  2 files changed, 5 insertions(+)
>>>>     >>>
>>>>     >>> diff --git a/drivers/usb/gadget/dwc2_udc_otg.c
>>>>     b/drivers/usb/gadget/dwc2_udc_otg.c
>>>>     >>> index cb20b00..a95c8d5 100644
>>>>     >>> --- a/drivers/usb/gadget/dwc2_udc_otg.c
>>>>     >>> +++ b/drivers/usb/gadget/dwc2_udc_otg.c
>>>>     >>> @@ -415,7 +415,11 @@ static void reconfig_usbd(struct dwc2_udc *dev)
>>>>     >>>               |0<<7           /* Ulpi DDR sel*/
>>>>     >>>               |0<<6           /* 0: high speed utmi+, 1: full
>>>>     speed serial*/
>>>>     >>>               |0<<4           /* 0: utmi+, 1:ulpi*/
>>>>     >>> +#ifdef CONFIG_USB_GADGET_DWC2_PHY_8_BIT
>>>>     >>> +             |0<<3           /* phy i/f  0:8bit, 1:16bit*/
>>>>     >>> +#else
>>>>     >>>               |1<<3           /* phy i/f  0:8bit, 1:16bit*/
>>>>     >>> +#endif
>>>>     >>>               |0x7<<0;        /* HS/FS Timeout**/
>>>>
>>>>
>>>> Marek,
>>>> The _only_ thing that I know is that this structure contains settings to
>>>> make the USB-OTG interface work on Broadcom boards. Broadcom "hardcoded"
>>>> these values to "utmi+" and "8bit" ("years ago"...), and I am attempting
>>>> to upstream this change (which I think requires a CONFIG option -- so
>>>> that I don't break the current usage; unless there is a better method???)
>>>
>>> The best method is to pull such configuration from device tree. I don't
>>> know if DT is used on the BCM28155 chip yet. The acceptable option is to
>>> add the Kconfig option.
>>>
>>>> So what this CONFIG is "called" and what is its "explanation" is
>>>> completely unknown to me -- hence, I am asking for help in determining
>>>> what the Kconfig option should actually be....
>>>
>>> Something like "DesignWare USB2.0 HS OTG controller PHY interface width"
>>> ? The bit which this alters has to be described in the controller
>>> manual, so just call it the same.
>>
>> ( I don't have access to a manual )
>> In the kernel, it seems to be defined as:
>> GUSBCFG_PHYIF8
>> GUSBCFG_PHYIF16
>>>
>>>
>>> btw the Kconfig option should be moved under the DWC2 controller entry,
>>> something like this will do:
>>
>> OK
>>>
>>>
>>> if USB_GADGET_DWC2
>>> config USB_GADGET_DWC2_PHY_8_BIT
>>>     .......
>>> endif
>>
>> I assume you mean USB_GADGET_DWC2_OTG (USB_GADGET_DWC2 does not exist)???
>>
>> +if USB_GADGET_DWC2_OTG
>> +
>> +config USB_GADGET_DWC2_OTG_PHY_8_BIT
>> +       bool "DesignWare USB2.0 HS OTG controller PHY interface width"
>> +       help
>> +         Set the Designware USB2.0 high-speed OTG controller
>> +         PHY interface width to 8 bits, rather that the default (16 bits).
>> +
>> +endif # USB_GADGET_DWC2_OTG
>>
>> or    USB_GADGET_DWC2_OTG_PHYIF8
>>
>> or    ????
> 
> found more defines in the kernel:
> 
> GHWCFG4_UTMI_PHY_DATA_WIDTH_8
> GHWCFG4_UTMI_PHY_DATA_WIDTH_16
> 
> so maybe:
> USB_GADGET_DWC2_OTG_PHY_DATA_WIDTH_8
> 

Or USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8

Or pick this option from DT, which would be the best.

>>
>>>
>>>
>>>> Thanks in advance, Steve
>>>>
>>>>     >>>
>>>>     >>>       if (dev->pdata->usb_gusbcfg)
>>>>     >>> diff --git a/include/configs/bcm28155_ap.h
>>>>     b/include/configs/bcm28155_ap.h
>>>>     >>> index 889e5db..e04cfbe 100644
>>>>     >>> --- a/include/configs/bcm28155_ap.h
>>>>     >>> +++ b/include/configs/bcm28155_ap.h
>>>>     >>> @@ -134,6 +134,7 @@
>>>>     >>>  #define CONFIG_SYS_CACHELINE_SIZE    64
>>>>     >>>  #define CONFIG_FASTBOOT_BUF_SIZE     (CONFIG_SYS_SDRAM_SIZE -
>>>>     SZ_1M)
>>>>     >>>  #define CONFIG_FASTBOOT_BUF_ADDR     CONFIG_SYS_SDRAM_BASE
>>>>     >>> +#define CONFIG_USB_GADGET_DWC2_PHY_8_BIT
>>>>     >>>  #define CONFIG_USB_GADGET_BCM_UDC_OTG_PHY
>>>>     >>>  #define CONFIG_USBID_ADDR            0x34052c46
>>>>     >>>
>>>>     >>>
>>>>     >>
>>>>     >>
>>>>     >> --
>>>>     >> Best regards,
>>>>     >> Marek Vasut
>>>>
>>>>
>>>>     --
>>>>     Best regards,
>>>>     Marek Vasut
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards,
>>> Marek Vasut


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list