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

Steve Rae srae at broadcom.com
Mon Jun 6 21:10:45 CEST 2016


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


>
>>
>>
>> > 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


More information about the U-Boot mailing list