[U-Boot] [PATCH v3 2/4] board: evb-rk3399: add api to support dwc3 gadget

Marek Vasut marex at denx.de
Fri Sep 2 14:10:36 CEST 2016


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


More information about the U-Boot mailing list