From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kever Yang Date: Mon, 29 Aug 2016 08:49:25 +0800 Subject: [U-Boot] [PATCH v2 2/4] board: evb-rk3399: add api to support dwc3 gadget In-Reply-To: References: <1472010404-334-1-git-send-email-kever.yang@rock-chips.com> <1472010404-334-3-git-send-email-kever.yang@rock-chips.com> <57BE44CD.10701@rock-chips.com> Message-ID: <57C38695.70806@rock-chips.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Marek, On 08/26/2016 05:11 PM, Marek Vasut wrote: > On 08/25/2016 03:07 AM, Kever Yang wrote: >> + Marek >> >> On 08/24/2016 11:46 AM, Kever Yang wrote: >>> This patch add board_usb_init() and interrupt callback >>> for dwc3 gadget. >>> >>> Signed-off-by: Kever Yang >>> Reviewed-by: Simon Glass >>> --- >>> >>> Changes in v2: >>> - parse dt for utmi width >>> >>> board/rockchip/evb_rk3399/evb-rk3399.c | 33 >>> +++++++++++++++++++++++++++++++++ >>> 1 file changed, 33 insertions(+) >>> >>> diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c >>> b/board/rockchip/evb_rk3399/evb-rk3399.c >>> index d394276..5d3a09a 100644 >>> --- a/board/rockchip/evb_rk3399/evb-rk3399.c >>> +++ b/board/rockchip/evb_rk3399/evb-rk3399.c >>> @@ -7,6 +7,8 @@ >>> #include >>> #include >>> #include >>> +#include >>> +#include >>> DECLARE_GLOBAL_DATA_PTR; >>> @@ -54,3 +56,34 @@ 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, > Why don't you parse all of this from DT ? You already parse DT below. I add these code by reference to exynos5 and zynqmp platform, I can parse all information from DT which including in DT, but maximum_speed still defined here, because it's not in DT node, is that OK? Thanks, - Kever > >>> + .index = 0, >>> +}; >>> + >>> +int usb_gadget_handle_interrupts(void) >>> +{ >>> + dwc3_uboot_handle_interrupt(0); >>> + return 0; >>> +} >>> + >>> +int board_usb_init(int index, enum usb_init_type init) >>> +{ >>> + const void *blob = gd->fdt_blob; >>> + int node; >>> + >>> + node = fdt_node_offset_by_compatible(blob, -1, >>> + "rockchip,rk3399-xhci"); >>> + if (node < 0) >>> + debug("%s node not found\n", __func__); >>> + else >>> + dwc3_device_data.usb2_phyif_utmi_width = >>> + fdtdec_get_int(blob, node, "snps,phyif-utmi-bits", -1); >>> + >>> + return dwc3_uboot_init(&dwc3_device_data); >>> +} >>> +#endif >> >