All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 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 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 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] [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] [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] [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, 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, 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 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] [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, 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, 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] [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-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] [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.