Message ID | 1472632802-28601-3-git-send-email-kever.yang@rock-chips.com |
---|---|
State | Superseded |
Delegated to: | Simon Glass |
Headers | show |
On 08/31/2016 10:40 AM, Kever Yang wrote: > This patch add board_usb_init() and interrupt callback > for dwc3 gadget. > > Signed-off-by: Kever Yang <kever.yang@rock-chips.com> > --- > > Changes in v3: > - remove utmi width DT parse from borad init OK > Changes in v2: > - parse dt for utmi width > > board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c > index d394276..0d39902 100644 > --- a/board/rockchip/evb_rk3399/evb-rk3399.c > +++ b/board/rockchip/evb_rk3399/evb-rk3399.c > @@ -7,6 +7,8 @@ > #include <dm.h> > #include <dm/pinctrl.h> > #include <asm/arch/periph.h> > +#include <usb.h> > +#include <dwc3-uboot.h> > > DECLARE_GLOBAL_DATA_PTR; > > @@ -54,3 +56,24 @@ void dram_init_banksize(void) > gd->bd->bi_dram[0].start = 0x200000; > gd->bd->bi_dram[0].size = 0x80000000; > } > + > +#ifdef CONFIG_USB_DWC3 > +static struct dwc3_device dwc3_device_data = { > + .maximum_speed = USB_SPEED_HIGH, > + .base = 0xfe800000, > + .dr_mode = USB_DR_MODE_PERIPHERAL, > + .index = 0, > + .dis_u2_susphy_quirk = 1, > +}; Uh, didn't I complain last time that this should come from DT and not platdata ? > +int usb_gadget_handle_interrupts(void) > +{ > + dwc3_uboot_handle_interrupt(0); > + return 0; > +} > + > +int board_usb_init(int index, enum usb_init_type init) > +{ > + return dwc3_uboot_init(&dwc3_device_data); > +} > +#endif >
Hi Marek, On 08/31/2016 08:30 PM, Marek Vasut wrote: > On 08/31/2016 10:40 AM, Kever Yang wrote: >> This patch add board_usb_init() and interrupt callback >> for dwc3 gadget. >> >> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> >> --- >> >> Changes in v3: >> - remove utmi width DT parse from borad init > OK > >> Changes in v2: >> - parse dt for utmi width >> >> board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ >> 1 file changed, 23 insertions(+) >> >> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c >> index d394276..0d39902 100644 >> --- a/board/rockchip/evb_rk3399/evb-rk3399.c >> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c >> @@ -7,6 +7,8 @@ >> #include <dm.h> >> #include <dm/pinctrl.h> >> #include <asm/arch/periph.h> >> +#include <usb.h> >> +#include <dwc3-uboot.h> >> >> DECLARE_GLOBAL_DATA_PTR; >> >> @@ -54,3 +56,24 @@ void dram_init_banksize(void) >> gd->bd->bi_dram[0].start = 0x200000; >> gd->bd->bi_dram[0].size = 0x80000000; >> } >> + >> +#ifdef CONFIG_USB_DWC3 >> +static struct dwc3_device dwc3_device_data = { >> + .maximum_speed = USB_SPEED_HIGH, >> + .base = 0xfe800000, >> + .dr_mode = USB_DR_MODE_PERIPHERAL, >> + .index = 0, >> + .dis_u2_susphy_quirk = 1, >> +}; > Uh, didn't I complain last time that this should come from DT > and not platdata ? Since I'm not able to remove the platdata, I thought maybe I can init those features here, I will parse DT for maximum_speed, base, and dis_u2_susphy_quirk in next version. Thanks, - Kever >> +int usb_gadget_handle_interrupts(void) >> +{ >> + dwc3_uboot_handle_interrupt(0); >> + return 0; >> +} >> + >> +int board_usb_init(int index, enum usb_init_type init) >> +{ >> + return dwc3_uboot_init(&dwc3_device_data); >> +} >> +#endif >> >
On 09/01/2016 04:21 AM, Kever Yang wrote: > Hi Marek, > > On 08/31/2016 08:30 PM, Marek Vasut wrote: >> On 08/31/2016 10:40 AM, Kever Yang wrote: >>> This patch add board_usb_init() and interrupt callback >>> for dwc3 gadget. >>> >>> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> >>> --- >>> >>> Changes in v3: >>> - remove utmi width DT parse from borad init >> OK >> >>> Changes in v2: >>> - parse dt for utmi width >>> >>> board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ >>> 1 file changed, 23 insertions(+) >>> >>> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c >>> b/board/rockchip/evb_rk3399/evb-rk3399.c >>> index d394276..0d39902 100644 >>> --- a/board/rockchip/evb_rk3399/evb-rk3399.c >>> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c >>> @@ -7,6 +7,8 @@ >>> #include <dm.h> >>> #include <dm/pinctrl.h> >>> #include <asm/arch/periph.h> >>> +#include <usb.h> >>> +#include <dwc3-uboot.h> >>> DECLARE_GLOBAL_DATA_PTR; >>> @@ -54,3 +56,24 @@ void dram_init_banksize(void) >>> gd->bd->bi_dram[0].start = 0x200000; >>> gd->bd->bi_dram[0].size = 0x80000000; >>> } >>> + >>> +#ifdef CONFIG_USB_DWC3 >>> +static struct dwc3_device dwc3_device_data = { >>> + .maximum_speed = USB_SPEED_HIGH, >>> + .base = 0xfe800000, >>> + .dr_mode = USB_DR_MODE_PERIPHERAL, >>> + .index = 0, >>> + .dis_u2_susphy_quirk = 1, >>> +}; >> Uh, didn't I complain last time that this should come from DT >> and not platdata ? > > Since I'm not able to remove the platdata, I thought maybe I can init those > features here, I will parse DT for maximum_speed, base, and > dis_u2_susphy_quirk > in next version. Why aren't you able to remove the platdata ?
Hi Marek, On 09/01/2016 04:58 PM, Marek Vasut wrote: > On 09/01/2016 04:21 AM, Kever Yang wrote: >> Hi Marek, >> >> On 08/31/2016 08:30 PM, Marek Vasut wrote: >>> On 08/31/2016 10:40 AM, Kever Yang wrote: >>>> This patch add board_usb_init() and interrupt callback >>>> for dwc3 gadget. >>>> >>>> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> >>>> --- >>>> >>>> Changes in v3: >>>> - remove utmi width DT parse from borad init >>> OK >>> >>>> Changes in v2: >>>> - parse dt for utmi width >>>> >>>> board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ >>>> 1 file changed, 23 insertions(+) >>>> >>>> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c >>>> b/board/rockchip/evb_rk3399/evb-rk3399.c >>>> index d394276..0d39902 100644 >>>> --- a/board/rockchip/evb_rk3399/evb-rk3399.c >>>> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c >>>> @@ -7,6 +7,8 @@ >>>> #include <dm.h> >>>> #include <dm/pinctrl.h> >>>> #include <asm/arch/periph.h> >>>> +#include <usb.h> >>>> +#include <dwc3-uboot.h> >>>> DECLARE_GLOBAL_DATA_PTR; >>>> @@ -54,3 +56,24 @@ void dram_init_banksize(void) >>>> gd->bd->bi_dram[0].start = 0x200000; >>>> gd->bd->bi_dram[0].size = 0x80000000; >>>> } >>>> + >>>> +#ifdef CONFIG_USB_DWC3 >>>> +static struct dwc3_device dwc3_device_data = { >>>> + .maximum_speed = USB_SPEED_HIGH, >>>> + .base = 0xfe800000, >>>> + .dr_mode = USB_DR_MODE_PERIPHERAL, >>>> + .index = 0, >>>> + .dis_u2_susphy_quirk = 1, >>>> +}; >>> Uh, didn't I complain last time that this should come from DT >>> and not platdata ? >> Since I'm not able to remove the platdata, I thought maybe I can init those >> features here, I will parse DT for maximum_speed, base, and >> dis_u2_susphy_quirk >> in next version. > Why aren't you able to remove the platdata ? Because this platdata is not only used by Rockchip SoC, but also used for many different SoC like exynos5, zynqmp, and ti SoCs, and the dts node for dwc3 gadget in these SoCs are totally different. Maybe maintainer like you are the one able to enable the DM for usb/dwc3 gadget, get the all the information from DT and update for all the platforms? I'm happy to test on rk3399-evb, but I don't have boards for other SoC. Thanks, - Kever
On 09/02/2016 11:50 AM, Kever Yang wrote: > Hi Marek, Hi! > On 09/01/2016 04:58 PM, Marek Vasut wrote: >> On 09/01/2016 04:21 AM, Kever Yang wrote: >>> Hi Marek, >>> >>> On 08/31/2016 08:30 PM, Marek Vasut wrote: >>>> On 08/31/2016 10:40 AM, Kever Yang wrote: >>>>> This patch add board_usb_init() and interrupt callback >>>>> for dwc3 gadget. >>>>> >>>>> Signed-off-by: Kever Yang <kever.yang@rock-chips.com> >>>>> --- >>>>> >>>>> Changes in v3: >>>>> - remove utmi width DT parse from borad init >>>> OK >>>> >>>>> Changes in v2: >>>>> - parse dt for utmi width >>>>> >>>>> board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ >>>>> 1 file changed, 23 insertions(+) >>>>> >>>>> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c >>>>> b/board/rockchip/evb_rk3399/evb-rk3399.c >>>>> index d394276..0d39902 100644 >>>>> --- a/board/rockchip/evb_rk3399/evb-rk3399.c >>>>> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c >>>>> @@ -7,6 +7,8 @@ >>>>> #include <dm.h> >>>>> #include <dm/pinctrl.h> >>>>> #include <asm/arch/periph.h> >>>>> +#include <usb.h> >>>>> +#include <dwc3-uboot.h> >>>>> DECLARE_GLOBAL_DATA_PTR; >>>>> @@ -54,3 +56,24 @@ void dram_init_banksize(void) >>>>> gd->bd->bi_dram[0].start = 0x200000; >>>>> gd->bd->bi_dram[0].size = 0x80000000; >>>>> } >>>>> + >>>>> +#ifdef CONFIG_USB_DWC3 >>>>> +static struct dwc3_device dwc3_device_data = { >>>>> + .maximum_speed = USB_SPEED_HIGH, >>>>> + .base = 0xfe800000, >>>>> + .dr_mode = USB_DR_MODE_PERIPHERAL, >>>>> + .index = 0, >>>>> + .dis_u2_susphy_quirk = 1, >>>>> +}; >>>> Uh, didn't I complain last time that this should come from DT >>>> and not platdata ? >>> Since I'm not able to remove the platdata, I thought maybe I can init >>> those >>> features here, I will parse DT for maximum_speed, base, and >>> dis_u2_susphy_quirk >>> in next version. >> Why aren't you able to remove the platdata ? > Because this platdata is not only used by Rockchip SoC, but also used > for many different SoC like > exynos5, zynqmp, and ti SoCs No, these platdata are in your board file, so it's only used by your board. If what you mean is that dwc3_uboot_init() requires non-NULL $dwc3_dev parameter, that's pretty easy to fix: - Check if dwc3_dev is NULL and if so, invoke (new) function, let's say dwc3_uboot_of_init() - dwc3_uboot_of_init() would allocate the struct dwc3_device , fill it in from DT and return pointer to it (or null on failure) This look like the least intrusive way to do things. , and the dts node for dwc3 gadget in these > SoCs are totally different. How can the DT node for the exact same controller be different ? The DT is an ABI, STANDARD, it is documented how the node should look and what it should contain. If it deviates from that, it is invalid and needs fixing. > Maybe maintainer like you are the one able to enable the DM for usb/dwc3 > gadget, get the all > the information from DT and update for all the platforms? > > I'm happy to test on rk3399-evb, but I don't have boards for other SoC. I don't have any dwc3 device (I think), so I depend purely on the contributors to do the right thing. > Thanks, > - Kever >
diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c index d394276..0d39902 100644 --- a/board/rockchip/evb_rk3399/evb-rk3399.c +++ b/board/rockchip/evb_rk3399/evb-rk3399.c @@ -7,6 +7,8 @@ #include <dm.h> #include <dm/pinctrl.h> #include <asm/arch/periph.h> +#include <usb.h> +#include <dwc3-uboot.h> DECLARE_GLOBAL_DATA_PTR; @@ -54,3 +56,24 @@ void dram_init_banksize(void) gd->bd->bi_dram[0].start = 0x200000; gd->bd->bi_dram[0].size = 0x80000000; } + +#ifdef CONFIG_USB_DWC3 +static struct dwc3_device dwc3_device_data = { + .maximum_speed = USB_SPEED_HIGH, + .base = 0xfe800000, + .dr_mode = USB_DR_MODE_PERIPHERAL, + .index = 0, + .dis_u2_susphy_quirk = 1, +}; + +int usb_gadget_handle_interrupts(void) +{ + dwc3_uboot_handle_interrupt(0); + return 0; +} + +int board_usb_init(int index, enum usb_init_type init) +{ + return dwc3_uboot_init(&dwc3_device_data); +} +#endif
This patch add board_usb_init() and interrupt callback for dwc3 gadget. Signed-off-by: Kever Yang <kever.yang@rock-chips.com> --- Changes in v3: - remove utmi width DT parse from borad init Changes in v2: - parse dt for utmi width board/rockchip/evb_rk3399/evb-rk3399.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)