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.y...@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 > -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot