* [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 @ 2017-08-09 3:36 William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu ` (2 more replies) 0 siblings, 3 replies; 19+ messages in thread From: William Wu @ 2017-08-09 3:36 UTC (permalink / raw) To: u-boot This patch support USB OTG and Host ports on evb-rv1108 board. With this patch, we can use fastboot over USB and mount USB mass storage on OTG and Host ports. William Wu (3): configs: rockchip: add USB configs for evb-rv1108 board ARM: dts: rockchip: add USB nodes for evb-rv1108 rockchip: evb-rv1108: add usb init function for dwc2 gadget arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++ arch/arm/dts/rv1108.dtsi | 24 +++++++++++++++++ board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ configs/evb-rv1108_defconfig | 22 ++++++++++++++++ include/configs/rv1108_common.h | 3 +++ 5 files changed, 118 insertions(+) -- 2.0.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board 2017-08-09 3:36 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu @ 2017-08-09 3:36 ` William Wu 2017-08-13 21:35 ` Simon Glass ` (3 more replies) 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu 2 siblings, 4 replies; 19+ messages in thread From: William Wu @ 2017-08-09 3:36 UTC (permalink / raw) To: u-boot This patch adds USB configs to support the USB OTG port(consist of DWC2 controller) and the USB Host port(consist of EHCI and OHCI controllers) on evb-rv1108 board, and also support fastboot over USB and USB mass storage. Signed-off-by: William Wu <william.wu@rock-chips.com> --- configs/evb-rv1108_defconfig | 22 ++++++++++++++++++++++ include/configs/rv1108_common.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/configs/evb-rv1108_defconfig b/configs/evb-rv1108_defconfig index 3deea7c..496bfc8 100644 --- a/configs/evb-rv1108_defconfig +++ b/configs/evb-rv1108_defconfig @@ -6,8 +6,16 @@ CONFIG_DEFAULT_DEVICE_TREE="rv1108-evb" CONFIG_DEBUG_UART=y CONFIG_ENV_IS_NOWHERE=y # CONFIG_DISPLAY_CPUINFO is not set +CONFIG_FASTBOOT=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_CMD_FASTBOOT=y +CONFIG_FASTBOOT_BUF_ADDR=0x62000000 +CONFIG_FASTBOOT_BUF_SIZE=0x08000000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_FASTBOOT_FLASH_MMC_DEV=1 # CONFIG_CMD_IMLS is not set CONFIG_CMD_SF=y +CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y @@ -27,10 +35,24 @@ CONFIG_ETH_DESIGNWARE=y CONFIG_GMAC_ROCKCHIP=y CONFIG_PINCTRL=y CONFIG_PINCTRL_ROCKCHIP_RV1108=y +CONFIG_DM_REGULATOR_FIXED=y CONFIG_BAUDRATE=1500000 # CONFIG_SPL_SERIAL_PRESENT is not set CONFIG_DEBUG_UART_BASE=0x10210000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_DEBUG_UART_SHIFT=2 CONFIG_SYSRESET=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_GENERIC=y +CONFIG_USB_DWC2=y +CONFIG_USB_STORAGE=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_G_DNL_MANUFACTURER="Rockchip" +CONFIG_G_DNL_VENDOR_NUM=0x2207 +CONFIG_G_DNL_PRODUCT_NUM=0x110a CONFIG_ERRNO_STR=y diff --git a/include/configs/rv1108_common.h b/include/configs/rv1108_common.h index 2b63abc..f6fefaa 100644 --- a/include/configs/rv1108_common.h +++ b/include/configs/rv1108_common.h @@ -29,4 +29,7 @@ #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + 0x100000) #define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x2000000) +/* rockchip ohci host driver */ +#define CONFIG_USB_OHCI_NEW +#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1 #endif -- 2.0.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu @ 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich ` (2 subsequent siblings) 3 siblings, 0 replies; 19+ messages in thread From: Simon Glass @ 2017-08-13 21:35 UTC (permalink / raw) To: u-boot On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: > This patch adds USB configs to support the USB OTG port(consist > of DWC2 controller) and the USB Host port(consist of EHCI and OHCI > controllers) on evb-rv1108 board, and also support fastboot over > USB and USB mass storage. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > --- > configs/evb-rv1108_defconfig | 22 ++++++++++++++++++++++ > include/configs/rv1108_common.h | 3 +++ > 2 files changed, 25 insertions(+) > Reviewed-by: Simon Glass <sjg@chromium.org> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 1/3] configs: rockchip: add USB configs for evb-rv1108 board 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu 2017-08-13 21:35 ` Simon Glass @ 2017-08-18 16:08 ` Philipp Tomsich 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-08-18 16:08 UTC (permalink / raw) To: u-boot > This patch adds USB configs to support the USB OTG port(consist > of DWC2 controller) and the USB Host port(consist of EHCI and OHCI > controllers) on evb-rv1108 board, and also support fastboot over > USB and USB mass storage. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > --- > configs/evb-rv1108_defconfig | 22 ++++++++++++++++++++++ > include/configs/rv1108_common.h | 3 +++ > 2 files changed, 25 insertions(+) > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 1/3] configs: rockchip: add USB configs for evb-rv1108 board 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich @ 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-09-05 9:52 UTC (permalink / raw) To: u-boot > This patch adds USB configs to support the USB OTG port(consist > of DWC2 controller) and the USB Host port(consist of EHCI and OHCI > controllers) on evb-rv1108 board, and also support fastboot over > USB and USB mass storage. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > configs/evb-rv1108_defconfig | 22 ++++++++++++++++++++++ > include/configs/rv1108_common.h | 3 +++ > 2 files changed, 25 insertions(+) > Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 1/3] configs: rockchip: add USB configs for evb-rv1108 board 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu ` (2 preceding siblings ...) 2017-09-05 9:52 ` Philipp Tomsich @ 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-09-05 12:22 UTC (permalink / raw) To: u-boot > This patch adds USB configs to support the USB OTG port(consist > of DWC2 controller) and the USB Host port(consist of EHCI and OHCI > controllers) on evb-rv1108 board, and also support fastboot over > USB and USB mass storage. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > configs/evb-rv1108_defconfig | 22 ++++++++++++++++++++++ > include/configs/rv1108_common.h | 3 +++ > 2 files changed, 25 insertions(+) > Applied to u-boot-rockchip/next, thanks! ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 2017-08-09 3:36 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu @ 2017-08-09 3:36 ` William Wu 2017-08-13 21:35 ` Simon Glass ` (3 more replies) 2017-08-09 3:36 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu 2 siblings, 4 replies; 19+ messages in thread From: William Wu @ 2017-08-09 3:36 UTC (permalink / raw) To: u-boot This patch adds USB OTG/EHCI/OHCI nodes for evb-rv1108 USB ports. Signed-off-by: William Wu <william.wu@rock-chips.com> --- arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++++++++ arch/arm/dts/rv1108.dtsi | 24 ++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/arch/arm/dts/rv1108-evb.dts b/arch/arm/dts/rv1108-evb.dts index 0128dd8..2b221b6 100644 --- a/arch/arm/dts/rv1108-evb.dts +++ b/arch/arm/dts/rv1108-evb.dts @@ -20,6 +20,15 @@ chosen { stdout-path = "serial2:1500000n8"; }; + + vcc5v0_otg: vcc5v0-otg-drv { + compatible = "regulator-fixed"; + enable-active-high; + regulator-name = "vcc5v0_otg"; + gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; }; &gmac { @@ -52,3 +61,16 @@ &uart2 { status = "okay"; }; + +&usb20_otg { + vbus-supply = <&vcc5v0_otg>; + status = "okay"; +}; + +&usb_host_ehci { + status = "okay"; +}; + +&usb_host_ohci { + status = "okay"; +}; diff --git a/arch/arm/dts/rv1108.dtsi b/arch/arm/dts/rv1108.dtsi index 77ca24e..3153dfe 100644 --- a/arch/arm/dts/rv1108.dtsi +++ b/arch/arm/dts/rv1108.dtsi @@ -175,6 +175,30 @@ status = "disabled"; }; + usb_host_ehci: usb at 30140000 { + compatible = "generic-ehci"; + reg = <0x30140000 0x20000>; + interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + }; + + usb_host_ohci: usb at 30160000 { + compatible = "generic-ohci"; + reg = <0x30160000 0x20000>; + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + }; + + usb20_otg: usb at 30180000 { + compatible = "rockchip,rv1108-usb", "rockchip,rk3288-usb", + "snps,dwc2"; + reg = <0x30180000 0x40000>; + interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; + hnp-srp-disable; + dr_mode = "otg"; + status = "disabled"; + }; + sfc: sfc at 301c0000 { compatible = "rockchip,sfc"; reg = <0x301c0000 0x200>; -- 2.0.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu @ 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich ` (2 subsequent siblings) 3 siblings, 0 replies; 19+ messages in thread From: Simon Glass @ 2017-08-13 21:35 UTC (permalink / raw) To: u-boot On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: > This patch adds USB OTG/EHCI/OHCI nodes for evb-rv1108 USB ports. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > --- > arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++++++++ > arch/arm/dts/rv1108.dtsi | 24 ++++++++++++++++++++++++ > 2 files changed, 46 insertions(+) Reviewed-by: Simon Glass <sjg@chromium.org> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu 2017-08-13 21:35 ` Simon Glass @ 2017-08-18 16:08 ` Philipp Tomsich 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-08-18 16:08 UTC (permalink / raw) To: u-boot > This patch adds USB OTG/EHCI/OHCI nodes for evb-rv1108 USB ports. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > --- > arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++++++++ > arch/arm/dts/rv1108.dtsi | 24 ++++++++++++++++++++++++ > 2 files changed, 46 insertions(+) > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich @ 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-09-05 9:52 UTC (permalink / raw) To: u-boot > This patch adds USB OTG/EHCI/OHCI nodes for evb-rv1108 USB ports. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++++++++ > arch/arm/dts/rv1108.dtsi | 24 ++++++++++++++++++++++++ > 2 files changed, 46 insertions(+) > Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu ` (2 preceding siblings ...) 2017-09-05 9:52 ` Philipp Tomsich @ 2017-09-05 12:22 ` Philipp Tomsich 3 siblings, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-09-05 12:22 UTC (permalink / raw) To: u-boot > This patch adds USB OTG/EHCI/OHCI nodes for evb-rv1108 USB ports. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > Reviewed-by: Simon Glass <sjg@chromium.org> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++++++++ > arch/arm/dts/rv1108.dtsi | 24 ++++++++++++++++++++++++ > 2 files changed, 46 insertions(+) > Applied to u-boot-rockchip/next, thanks! ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-09 3:36 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu @ 2017-08-09 3:36 ` William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich 2 siblings, 2 replies; 19+ messages in thread From: William Wu @ 2017-08-09 3:36 UTC (permalink / raw) To: u-boot This patch implements board_usb_init() for dwc2 gadget, it generally called from do_fastboot to do dwc2 udc probe and support fastboot over USB. Signed-off-by: William Wu <william.wu@rock-chips.com> --- board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c b/board/rockchip/evb_rv1108/evb_rv1108.c index fe37eac..8ca5ee6 100644 --- a/board/rockchip/evb_rv1108/evb_rv1108.c +++ b/board/rockchip/evb_rv1108/evb_rv1108.c @@ -50,3 +50,50 @@ int dram_init_banksize(void) return 0; } + +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) +#include <usb.h> +#include <usb/dwc2_udc.h> + +static struct dwc2_plat_otg_data rv1108_otg_data = { + .rx_fifo_sz = 512, + .np_tx_fifo_sz = 16, + .tx_fifo_sz = 128, +}; + +int board_usb_init(int index, enum usb_init_type init) +{ + int node; + const char *mode; + bool matched = false; + const void *blob = gd->fdt_blob; + + /* find the usb_otg node */ + node = fdt_node_offset_by_compatible(blob, -1, + "rockchip,rv1108-usb"); + + while (node > 0) { + mode = fdt_getprop(blob, node, "dr_mode", NULL); + if (mode && strcmp(mode, "otg") == 0) { + matched = true; + break; + } + + node = fdt_node_offset_by_compatible(blob, node, + "rockchip,rv1108-usb"); + } + if (!matched) { + debug("Not found usb_otg device\n"); + return -ENODEV; + } + + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); + + return dwc2_udc_probe(&rv1108_otg_data); +} + +int board_usb_cleanup(int index, enum usb_init_type init) +{ + return 0; +} +#endif -- 2.0.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-09 3:36 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu @ 2017-08-13 21:35 ` Simon Glass 2017-08-14 10:05 ` wlf 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich 1 sibling, 1 reply; 19+ messages in thread From: Simon Glass @ 2017-08-13 21:35 UTC (permalink / raw) To: u-boot On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: > This patch implements board_usb_init() for dwc2 gadget, it > generally called from do_fastboot to do dwc2 udc probe and > support fastboot over USB. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > --- > board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > > diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c b/board/rockchip/evb_rv1108/evb_rv1108.c > index fe37eac..8ca5ee6 100644 > --- a/board/rockchip/evb_rv1108/evb_rv1108.c > +++ b/board/rockchip/evb_rv1108/evb_rv1108.c > @@ -50,3 +50,50 @@ int dram_init_banksize(void) > > return 0; > } > + > +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) > +#include <usb.h> > +#include <usb/dwc2_udc.h> > + > +static struct dwc2_plat_otg_data rv1108_otg_data = { > + .rx_fifo_sz = 512, > + .np_tx_fifo_sz = 16, > + .tx_fifo_sz = 128, > +}; > + > +int board_usb_init(int index, enum usb_init_type init) > +{ > + int node; > + const char *mode; > + bool matched = false; > + const void *blob = gd->fdt_blob; > + > + /* find the usb_otg node */ > + node = fdt_node_offset_by_compatible(blob, -1, > + "rockchip,rv1108-usb"); > + > + while (node > 0) { > + mode = fdt_getprop(blob, node, "dr_mode", NULL); > + if (mode && strcmp(mode, "otg") == 0) { > + matched = true; > + break; > + } > + > + node = fdt_node_offset_by_compatible(blob, node, > + "rockchip,rv1108-usb"); > + } > + if (!matched) { > + debug("Not found usb_otg device\n"); > + return -ENODEV; > + } > + > + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); > + > + return dwc2_udc_probe(&rv1108_otg_data); These USB init things have been bothering me for a while. Do you think this could be changed into a driver that you could probe with device_probe()? Then much of the code in here would not be needed and it might be easier to tidy it up when we have proper driver-model support for USB device mode. > +} > + > +int board_usb_cleanup(int index, enum usb_init_type init) > +{ > + return 0; > +} > +#endif > -- > 2.0.0 Regards, Simon ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-13 21:35 ` Simon Glass @ 2017-08-14 10:05 ` wlf 2017-09-05 4:14 ` wlf 2017-09-09 4:54 ` Simon Glass 0 siblings, 2 replies; 19+ messages in thread From: wlf @ 2017-08-14 10:05 UTC (permalink / raw) To: u-boot Dear Simon, 在 2017年08月14日 05:35, Simon Glass 写道: > On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: >> This patch implements board_usb_init() for dwc2 gadget, it >> generally called from do_fastboot to do dwc2 udc probe and >> support fastboot over USB. >> >> Signed-off-by: William Wu <william.wu@rock-chips.com> >> --- >> board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ >> 1 file changed, 47 insertions(+) >> >> diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c b/board/rockchip/evb_rv1108/evb_rv1108.c >> index fe37eac..8ca5ee6 100644 >> --- a/board/rockchip/evb_rv1108/evb_rv1108.c >> +++ b/board/rockchip/evb_rv1108/evb_rv1108.c >> @@ -50,3 +50,50 @@ int dram_init_banksize(void) >> >> return 0; >> } >> + >> +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) >> +#include <usb.h> >> +#include <usb/dwc2_udc.h> >> + >> +static struct dwc2_plat_otg_data rv1108_otg_data = { >> + .rx_fifo_sz = 512, >> + .np_tx_fifo_sz = 16, >> + .tx_fifo_sz = 128, >> +}; >> + >> +int board_usb_init(int index, enum usb_init_type init) >> +{ >> + int node; >> + const char *mode; >> + bool matched = false; >> + const void *blob = gd->fdt_blob; >> + >> + /* find the usb_otg node */ >> + node = fdt_node_offset_by_compatible(blob, -1, >> + "rockchip,rv1108-usb"); >> + >> + while (node > 0) { >> + mode = fdt_getprop(blob, node, "dr_mode", NULL); >> + if (mode && strcmp(mode, "otg") == 0) { >> + matched = true; >> + break; >> + } >> + >> + node = fdt_node_offset_by_compatible(blob, node, >> + "rockchip,rv1108-usb"); >> + } >> + if (!matched) { >> + debug("Not found usb_otg device\n"); >> + return -ENODEV; >> + } >> + >> + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); >> + >> + return dwc2_udc_probe(&rv1108_otg_data); > These USB init things have been bothering me for a while. Do you think > this could be changed into a driver that you could probe with > device_probe()? Then much of the code in here would not be needed and > it might be easier to tidy it up when we have proper driver-model > support for USB device mode. Yes, on rockchip platforms, it did most of the same USB init things in different board special drivers. I think may be we can try to optimize the code in two different ways. Method1. 1. Move the USB init things from board_usb_init(), just simply call dwc2_udc_probe(). 2. Create a new USB init function in drivers/usb/gadget/dwc2_udc_otg.c, and call it in dwc2_udc_probe(). 3. Use fdt (Flat Device Tree manipulation ) to parse the dts, and get the regs_phy, regs_otg and so on. Method2. Just like your suggestion, use driver-model method to probe with device_probe, actually, I don't know much about the driver-model, as far as I know, we may need to do the following work: 1. Create a new uclass id for usb udc, and declare a new uclass_driver with UCLASS_DRIVER, and also need to create a new U-boot driver for dwc2 controller with U_BOOT_DRIVER. 2. How to call device_probe()? Maybe it's better to create a new driver (like drivers/usb/host/usb-uclass.c) in drivers/usb/gadget to match different usb gadget controllers, and wrap the device_probe() to a new function (like udc_pre_probe()), and then different udc driver can call it, e.g. dwc2_udc_probe() --> udc_pre_probe() --> device_probe() In summary, method1 is easily to be done, but method2 is more generic. I hope I haven't misunderstood your proposal, and hope to get your reply. Thank you! > >> +} >> + >> +int board_usb_cleanup(int index, enum usb_init_type init) >> +{ >> + return 0; >> +} >> +#endif >> -- >> 2.0.0 > Regards, > Simon > > > -- 吴良峰 William.Wu 福建省福州市铜盘路软件大道89号软件园A区21号楼 No.21 Building, A District, No.89,software Boulevard Fuzhou,Fujian, PRC 手机: 13685012275 座机: 0591-83991906-8520 邮件:wulf at rock-chips.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-14 10:05 ` wlf @ 2017-09-05 4:14 ` wlf 2017-09-09 4:54 ` Simon Glass 1 sibling, 0 replies; 19+ messages in thread From: wlf @ 2017-09-05 4:14 UTC (permalink / raw) To: u-boot Dear Simon, 在 2017年08月14日 18:05, wlf 写道: > Dear Simon, > > 在 2017年08月14日 05:35, Simon Glass 写道: >> On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: >>> This patch implements board_usb_init() for dwc2 gadget, it >>> generally called from do_fastboot to do dwc2 udc probe and >>> support fastboot over USB. >>> >>> Signed-off-by: William Wu <william.wu@rock-chips.com> >>> --- >>> board/rockchip/evb_rv1108/evb_rv1108.c | 47 >>> ++++++++++++++++++++++++++++++++++ >>> 1 file changed, 47 insertions(+) >>> >>> diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c >>> b/board/rockchip/evb_rv1108/evb_rv1108.c >>> index fe37eac..8ca5ee6 100644 >>> --- a/board/rockchip/evb_rv1108/evb_rv1108.c >>> +++ b/board/rockchip/evb_rv1108/evb_rv1108.c >>> @@ -50,3 +50,50 @@ int dram_init_banksize(void) >>> >>> return 0; >>> } >>> + >>> +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) >>> +#include <usb.h> >>> +#include <usb/dwc2_udc.h> >>> + >>> +static struct dwc2_plat_otg_data rv1108_otg_data = { >>> + .rx_fifo_sz = 512, >>> + .np_tx_fifo_sz = 16, >>> + .tx_fifo_sz = 128, >>> +}; >>> + >>> +int board_usb_init(int index, enum usb_init_type init) >>> +{ >>> + int node; >>> + const char *mode; >>> + bool matched = false; >>> + const void *blob = gd->fdt_blob; >>> + >>> + /* find the usb_otg node */ >>> + node = fdt_node_offset_by_compatible(blob, -1, >>> + "rockchip,rv1108-usb"); >>> + >>> + while (node > 0) { >>> + mode = fdt_getprop(blob, node, "dr_mode", NULL); >>> + if (mode && strcmp(mode, "otg") == 0) { >>> + matched = true; >>> + break; >>> + } >>> + >>> + node = fdt_node_offset_by_compatible(blob, node, >>> + "rockchip,rv1108-usb"); >>> + } >>> + if (!matched) { >>> + debug("Not found usb_otg device\n"); >>> + return -ENODEV; >>> + } >>> + >>> + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); >>> + >>> + return dwc2_udc_probe(&rv1108_otg_data); >> These USB init things have been bothering me for a while. Do you think >> this could be changed into a driver that you could probe with >> device_probe()? Then much of the code in here would not be needed and >> it might be easier to tidy it up when we have proper driver-model >> support for USB device mode. > Yes, on rockchip platforms, it did most of the same USB init things > in different board special drivers. > I think may be we can try to optimize the code in two different ways. > > Method1. > 1. Move the USB init things from board_usb_init(), just simply call > dwc2_udc_probe(). > 2. Create a new USB init function in drivers/usb/gadget/dwc2_udc_otg.c, > and call it in dwc2_udc_probe(). > 3. Use fdt (Flat Device Tree manipulation ) to parse the dts, and get > the regs_phy, regs_otg and so on. > > Method2. > Just like your suggestion, use driver-model method to probe with > device_probe, > actually, I don't know much about the driver-model, as far as I know, > we may need > to do the following work: > 1. Create a new uclass id for usb udc, and declare a new uclass_driver > with UCLASS_DRIVER, > and also need to create a new U-boot driver for dwc2 controller > with U_BOOT_DRIVER. > 2. How to call device_probe()? Maybe it's better to create a new > driver (like drivers/usb/host/usb-uclass.c) > in drivers/usb/gadget to match different usb gadget controllers, > and wrap the device_probe() > to a new function (like udc_pre_probe()), and then different udc > driver can call it, > e.g. > dwc2_udc_probe() --> udc_pre_probe() --> device_probe() > > In summary, method1 is easily to be done, but method2 is more generic. > > I hope I haven't misunderstood your proposal, and hope to get your reply. > Thank you! Do you have any idea about this USB init patch? Thank you! >> >>> +} >>> + >>> +int board_usb_cleanup(int index, enum usb_init_type init) >>> +{ >>> + return 0; >>> +} >>> +#endif >>> -- >>> 2.0.0 >> Regards, >> Simon >> >> >> > -- 吴良峰 William.Wu 福建省福州市铜盘路软件大道89号软件园A区21号楼 No.21 Building, A District, No.89,software Boulevard Fuzhou,Fujian, PRC 手机: 13685012275 座机: 0591-83991906-8520 邮件:wulf at rock-chips.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-14 10:05 ` wlf 2017-09-05 4:14 ` wlf @ 2017-09-09 4:54 ` Simon Glass 2017-09-11 3:51 ` wlf 1 sibling, 1 reply; 19+ messages in thread From: Simon Glass @ 2017-09-09 4:54 UTC (permalink / raw) To: u-boot Hi, On 14 August 2017 at 04:05, wlf <wulf@rock-chips.com> wrote: > Dear Simon, > > > 在 2017年08月14日 05:35, Simon Glass 写道: >> >> On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: >>> >>> This patch implements board_usb_init() for dwc2 gadget, it >>> generally called from do_fastboot to do dwc2 udc probe and >>> support fastboot over USB. >>> >>> Signed-off-by: William Wu <william.wu@rock-chips.com> >>> --- >>> board/rockchip/evb_rv1108/evb_rv1108.c | 47 >>> ++++++++++++++++++++++++++++++++++ >>> 1 file changed, 47 insertions(+) >>> >>> diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c >>> b/board/rockchip/evb_rv1108/evb_rv1108.c >>> index fe37eac..8ca5ee6 100644 >>> --- a/board/rockchip/evb_rv1108/evb_rv1108.c >>> +++ b/board/rockchip/evb_rv1108/evb_rv1108.c >>> @@ -50,3 +50,50 @@ int dram_init_banksize(void) >>> >>> return 0; >>> } >>> + >>> +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) >>> +#include <usb.h> >>> +#include <usb/dwc2_udc.h> >>> + >>> +static struct dwc2_plat_otg_data rv1108_otg_data = { >>> + .rx_fifo_sz = 512, >>> + .np_tx_fifo_sz = 16, >>> + .tx_fifo_sz = 128, >>> +}; >>> + >>> +int board_usb_init(int index, enum usb_init_type init) >>> +{ >>> + int node; >>> + const char *mode; >>> + bool matched = false; >>> + const void *blob = gd->fdt_blob; >>> + >>> + /* find the usb_otg node */ >>> + node = fdt_node_offset_by_compatible(blob, -1, >>> + "rockchip,rv1108-usb"); >>> + >>> + while (node > 0) { >>> + mode = fdt_getprop(blob, node, "dr_mode", NULL); >>> + if (mode && strcmp(mode, "otg") == 0) { >>> + matched = true; >>> + break; >>> + } >>> + >>> + node = fdt_node_offset_by_compatible(blob, node, >>> + "rockchip,rv1108-usb"); >>> + } >>> + if (!matched) { >>> + debug("Not found usb_otg device\n"); >>> + return -ENODEV; >>> + } >>> + >>> + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); >>> + >>> + return dwc2_udc_probe(&rv1108_otg_data); >> >> These USB init things have been bothering me for a while. Do you think >> this could be changed into a driver that you could probe with >> device_probe()? Then much of the code in here would not be needed and >> it might be easier to tidy it up when we have proper driver-model >> support for USB device mode. > > Yes, on rockchip platforms, it did most of the same USB init things in > different board special drivers. > I think may be we can try to optimize the code in two different ways. > > Method1. > 1. Move the USB init things from board_usb_init(), just simply call > dwc2_udc_probe(). > 2. Create a new USB init function in drivers/usb/gadget/dwc2_udc_otg.c, > and call it in dwc2_udc_probe(). > 3. Use fdt (Flat Device Tree manipulation ) to parse the dts, and get the > regs_phy, regs_otg and so on. > > Method2. > Just like your suggestion, use driver-model method to probe with > device_probe, > actually, I don't know much about the driver-model, as far as I know, we may > need > to do the following work: > 1. Create a new uclass id for usb udc, and declare a new uclass_driver with > UCLASS_DRIVER, > and also need to create a new U-boot driver for dwc2 controller with > U_BOOT_DRIVER. > 2. How to call device_probe()? Maybe it's better to create a new driver > (like drivers/usb/host/usb-uclass.c) > in drivers/usb/gadget to match different usb gadget controllers, and > wrap the device_probe() > to a new function (like udc_pre_probe()), and then different udc driver > can call it, > e.g. > dwc2_udc_probe() --> udc_pre_probe() --> device_probe() > > In summary, method1 is easily to be done, but method2 is more generic. > > I hope I haven't misunderstood your proposal, and hope to get your reply. > Thank you! Yes I think method 2 is better. You will have to call device_probe() as you say. I think what you suggest is reasonable, since something has to decide that the USB device mode should be started. Regards, Simon ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-09-09 4:54 ` Simon Glass @ 2017-09-11 3:51 ` wlf 0 siblings, 0 replies; 19+ messages in thread From: wlf @ 2017-09-11 3:51 UTC (permalink / raw) To: u-boot Dear Simon, 在 2017年09月09日 12:54, Simon Glass 写道: > Hi, > > On 14 August 2017 at 04:05, wlf <wulf@rock-chips.com> wrote: >> Dear Simon, >> >> >> 在 2017年08月14日 05:35, Simon Glass 写道: >>> On 8 August 2017 at 21:36, William Wu <william.wu@rock-chips.com> wrote: >>>> This patch implements board_usb_init() for dwc2 gadget, it >>>> generally called from do_fastboot to do dwc2 udc probe and >>>> support fastboot over USB. >>>> >>>> Signed-off-by: William Wu <william.wu@rock-chips.com> >>>> --- >>>> board/rockchip/evb_rv1108/evb_rv1108.c | 47 >>>> ++++++++++++++++++++++++++++++++++ >>>> 1 file changed, 47 insertions(+) >>>> >>>> diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c >>>> b/board/rockchip/evb_rv1108/evb_rv1108.c >>>> index fe37eac..8ca5ee6 100644 >>>> --- a/board/rockchip/evb_rv1108/evb_rv1108.c >>>> +++ b/board/rockchip/evb_rv1108/evb_rv1108.c >>>> @@ -50,3 +50,50 @@ int dram_init_banksize(void) >>>> >>>> return 0; >>>> } >>>> + >>>> +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) >>>> +#include <usb.h> >>>> +#include <usb/dwc2_udc.h> >>>> + >>>> +static struct dwc2_plat_otg_data rv1108_otg_data = { >>>> + .rx_fifo_sz = 512, >>>> + .np_tx_fifo_sz = 16, >>>> + .tx_fifo_sz = 128, >>>> +}; >>>> + >>>> +int board_usb_init(int index, enum usb_init_type init) >>>> +{ >>>> + int node; >>>> + const char *mode; >>>> + bool matched = false; >>>> + const void *blob = gd->fdt_blob; >>>> + >>>> + /* find the usb_otg node */ >>>> + node = fdt_node_offset_by_compatible(blob, -1, >>>> + "rockchip,rv1108-usb"); >>>> + >>>> + while (node > 0) { >>>> + mode = fdt_getprop(blob, node, "dr_mode", NULL); >>>> + if (mode && strcmp(mode, "otg") == 0) { >>>> + matched = true; >>>> + break; >>>> + } >>>> + >>>> + node = fdt_node_offset_by_compatible(blob, node, >>>> + "rockchip,rv1108-usb"); >>>> + } >>>> + if (!matched) { >>>> + debug("Not found usb_otg device\n"); >>>> + return -ENODEV; >>>> + } >>>> + >>>> + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); >>>> + >>>> + return dwc2_udc_probe(&rv1108_otg_data); >>> These USB init things have been bothering me for a while. Do you think >>> this could be changed into a driver that you could probe with >>> device_probe()? Then much of the code in here would not be needed and >>> it might be easier to tidy it up when we have proper driver-model >>> support for USB device mode. >> Yes, on rockchip platforms, it did most of the same USB init things in >> different board special drivers. >> I think may be we can try to optimize the code in two different ways. >> >> Method1. >> 1. Move the USB init things from board_usb_init(), just simply call >> dwc2_udc_probe(). >> 2. Create a new USB init function in drivers/usb/gadget/dwc2_udc_otg.c, >> and call it in dwc2_udc_probe(). >> 3. Use fdt (Flat Device Tree manipulation ) to parse the dts, and get the >> regs_phy, regs_otg and so on. >> >> Method2. >> Just like your suggestion, use driver-model method to probe with >> device_probe, >> actually, I don't know much about the driver-model, as far as I know, we may >> need >> to do the following work: >> 1. Create a new uclass id for usb udc, and declare a new uclass_driver with >> UCLASS_DRIVER, >> and also need to create a new U-boot driver for dwc2 controller with >> U_BOOT_DRIVER. >> 2. How to call device_probe()? Maybe it's better to create a new driver >> (like drivers/usb/host/usb-uclass.c) >> in drivers/usb/gadget to match different usb gadget controllers, and >> wrap the device_probe() >> to a new function (like udc_pre_probe()), and then different udc driver >> can call it, >> e.g. >> dwc2_udc_probe() --> udc_pre_probe() --> device_probe() >> >> In summary, method1 is easily to be done, but method2 is more generic. >> >> I hope I haven't misunderstood your proposal, and hope to get your reply. >> Thank you! > Yes I think method 2 is better. > > You will have to call device_probe() as you say. I think what you > suggest is reasonable, since something has to decide that the USB > device mode should be started. Thanks for your reply. I will try to update a new patch according to method 2. > > Regards, > Simon > > > -- 吴良峰 William.Wu 福建省福州市铜盘路软件大道89号软件园A区21号楼 No.21 Building, A District, No.89,software Boulevard Fuzhou,Fujian, PRC 手机: 13685012275 座机: 0591-83991906-8520 邮件:wulf at rock-chips.com ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [U-Boot, 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-09 3:36 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu 2017-08-13 21:35 ` Simon Glass @ 2017-08-18 16:08 ` Philipp Tomsich 1 sibling, 0 replies; 19+ messages in thread From: Philipp Tomsich @ 2017-08-18 16:08 UTC (permalink / raw) To: u-boot > This patch implements board_usb_init() for dwc2 gadget, it > generally called from do_fastboot to do dwc2 udc probe and > support fastboot over USB. > > Signed-off-by: William Wu <william.wu@rock-chips.com> > --- > board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 @ 2017-08-09 3:12 William Wu 2017-08-09 3:12 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu 0 siblings, 1 reply; 19+ messages in thread From: William Wu @ 2017-08-09 3:12 UTC (permalink / raw) To: u-boot This patch support USB OTG and Host ports on evb-rv1108 board. With this patch, we can use fastboot over USB and mount USB mass storage on OTG and Host ports. William Wu (3): configs: rockchip: add USB configs for evb-rv1108 board ARM: dts: rockchip: add USB nodes for evb-rv1108 rockchip: evb-rv1108: add usb init function for dwc2 gadget arch/arm/dts/rv1108-evb.dts | 22 ++++++++++++++++ arch/arm/dts/rv1108.dtsi | 24 +++++++++++++++++ board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ configs/evb-rv1108_defconfig | 22 ++++++++++++++++ include/configs/rv1108_common.h | 3 +++ 5 files changed, 118 insertions(+) -- 2.0.0 ^ permalink raw reply [flat|nested] 19+ messages in thread
* [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget 2017-08-09 3:12 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu @ 2017-08-09 3:12 ` William Wu 0 siblings, 0 replies; 19+ messages in thread From: William Wu @ 2017-08-09 3:12 UTC (permalink / raw) To: u-boot This patch implements board_usb_init() for dwc2 gadget, it generally called from do_fastboot to do dwc2 udc probe and support fastboot over USB. Signed-off-by: William Wu <william.wu@rock-chips.com> --- board/rockchip/evb_rv1108/evb_rv1108.c | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/board/rockchip/evb_rv1108/evb_rv1108.c b/board/rockchip/evb_rv1108/evb_rv1108.c index fe37eac..8ca5ee6 100644 --- a/board/rockchip/evb_rv1108/evb_rv1108.c +++ b/board/rockchip/evb_rv1108/evb_rv1108.c @@ -50,3 +50,50 @@ int dram_init_banksize(void) return 0; } + +#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG) +#include <usb.h> +#include <usb/dwc2_udc.h> + +static struct dwc2_plat_otg_data rv1108_otg_data = { + .rx_fifo_sz = 512, + .np_tx_fifo_sz = 16, + .tx_fifo_sz = 128, +}; + +int board_usb_init(int index, enum usb_init_type init) +{ + int node; + const char *mode; + bool matched = false; + const void *blob = gd->fdt_blob; + + /* find the usb_otg node */ + node = fdt_node_offset_by_compatible(blob, -1, + "rockchip,rv1108-usb"); + + while (node > 0) { + mode = fdt_getprop(blob, node, "dr_mode", NULL); + if (mode && strcmp(mode, "otg") == 0) { + matched = true; + break; + } + + node = fdt_node_offset_by_compatible(blob, node, + "rockchip,rv1108-usb"); + } + if (!matched) { + debug("Not found usb_otg device\n"); + return -ENODEV; + } + + rv1108_otg_data.regs_otg = fdtdec_get_addr(blob, node, "reg"); + + return dwc2_udc_probe(&rv1108_otg_data); +} + +int board_usb_cleanup(int index, enum usb_init_type init) +{ + return 0; +} +#endif -- 2.0.0 ^ permalink raw reply related [flat|nested] 19+ messages in thread
end of thread, other threads:[~2017-09-11 3:51 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-08-09 3:36 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu 2017-08-09 3:36 ` [U-Boot] [PATCH 1/3] configs: rockchip: add USB configs for evb-rv1108 board William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 2017-08-09 3:36 ` [U-Boot] [PATCH 2/3] ARM: dts: rockchip: add USB nodes for evb-rv1108 William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich 2017-09-05 9:52 ` Philipp Tomsich 2017-09-05 12:22 ` Philipp Tomsich 2017-08-09 3:36 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu 2017-08-13 21:35 ` Simon Glass 2017-08-14 10:05 ` wlf 2017-09-05 4:14 ` wlf 2017-09-09 4:54 ` Simon Glass 2017-09-11 3:51 ` wlf 2017-08-18 16:08 ` [U-Boot] [U-Boot, " Philipp Tomsich -- strict thread matches above, loose matches on Subject: below -- 2017-08-09 3:12 [U-Boot] [PATCH 0/3] rockchip: rv1108: support USB OTG and Host ports on evb-rv1108 William Wu 2017-08-09 3:12 ` [U-Boot] [PATCH 3/3] rockchip: evb-rv1108: add usb init function for dwc2 gadget William Wu
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.