[v2,09/10] rockchip: Setup dwc3_device (for non-dm gadgets)

Message ID 20191119082623.6165-10-jagan@amarulasolutions.com
State New
Headers show
Series
  • rockchip: rk3399: Add fastboot support
Related show

Commit Message

Jagan Teki Nov. 19, 2019, 8:26 a.m. UTC
Setup dwc3_device structure for non-dm gadgets, which is used
in rk3399 platforms.

dwc3_device would have basic regbase, dr_mode, high speed
and 16-bit UTMI+ etc.

Cc: Marek Vasut <marex@denx.de>
Tested-by: Levin Du <djw@t-chip.com.cn>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
 arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

Comments

Kever Yang Nov. 23, 2019, 2:22 p.m. UTC | #1
On 2019/11/19 下午4:26, Jagan Teki wrote:
> Setup dwc3_device structure for non-dm gadgets, which is used
> in rk3399 platforms.
>
> dwc3_device would have basic regbase, dr_mode, high speed
> and 16-bit UTMI+ etc.
>
> Cc: Marek Vasut <marex@denx.de>
> Tested-by: Levin Du <djw@t-chip.com.cn>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
>   arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++++++++++--
>   1 file changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
> index c90eb976d0..542823b8cd 100644
> --- a/arch/arm/mach-rockchip/board.c
> +++ b/arch/arm/mach-rockchip/board.c
> @@ -49,8 +49,10 @@ void enable_caches(void)
>   }
>   #endif
>   
> -#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG)
> +#if defined(CONFIG_USB_GADGET)
>   #include <usb.h>
> +
> +#if defined(CONFIG_USB_GADGET_DWC2_OTG)
>   #include <usb/dwc2_udc.h>
>   
>   static struct dwc2_plat_otg_data otg_data = {
> @@ -117,7 +119,33 @@ int board_usb_cleanup(int index, enum usb_init_type init)
>   {
>   	return 0;
>   }
> -#endif
> +#endif /* CONFIG_USB_GADGET_DWC2_OTG */
> +
> +#if defined(CONFIG_USB_DWC3) && !defined(CONFIG_DM_USB_GADGET)
> +#include <dwc3-uboot.h>
> +
> +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,
> +	.hsphy_mode = USBPHY_INTERFACE_MODE_UTMIW,
> +};
> +
> +int usb_gadget_handle_interrupts(void)
> +{
> +	dwc3_uboot_handle_interrupt(0);
> +	return 0;
> +}
> +
> +int board_usb_init(int index, enum usb_init_type init)
> +{
> +	return dwc3_uboot_init(&dwc3_device_data);
> +}
> +#endif /* CONFIG_USB_DWC3 */
> +
> +#endif /* CONFIG_USB_GADGET */
>   
>   #if CONFIG_IS_ENABLED(FASTBOOT)
>   int fastboot_set_reboot_flag(void)
Kever Yang Nov. 23, 2019, 3:37 p.m. UTC | #2
Jagan,

On 2019/11/19 下午4:26, Jagan Teki wrote:
> Setup dwc3_device structure for non-dm gadgets, which is used
> in rk3399 platforms.
>
> dwc3_device would have basic regbase, dr_mode, high speed
> and 16-bit UTMI+ etc.
>
> Cc: Marek Vasut <marex@denx.de>
> Tested-by: Levin Du <djw@t-chip.com.cn>
> Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
> ---
>   arch/arm/mach-rockchip/board.c | 32 ++++++++++++++++++++++++++++++--
>   1 file changed, 30 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
> index c90eb976d0..542823b8cd 100644
> --- a/arch/arm/mach-rockchip/board.c
> +++ b/arch/arm/mach-rockchip/board.c
> @@ -49,8 +49,10 @@ void enable_caches(void)
>   }
>   #endif
>   
> -#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG)
> +#if defined(CONFIG_USB_GADGET)
>   #include <usb.h>
> +
> +#if defined(CONFIG_USB_GADGET_DWC2_OTG)
>   #include <usb/dwc2_udc.h>
>   
>   static struct dwc2_plat_otg_data otg_data = {
> @@ -117,7 +119,33 @@ int board_usb_cleanup(int index, enum usb_init_type init)
>   {
>   	return 0;
>   }
> -#endif
> +#endif /* CONFIG_USB_GADGET_DWC2_OTG */
> +
> +#if defined(CONFIG_USB_DWC3) && !defined(CONFIG_DM_USB_GADGET)

I believe we should use CONFIG_USB_DWC3_GADGET instead of CONFIG_USB_DWC3.

This patch cause below error:

    aarch64:  +   rock64-rk3328
+arch/arm/mach-rockchip/board.c:142:5: error: redefinition of 
‘board_usb_init’
+ int board_usb_init(int index, enum usb_init_type init)
+     ^~~~~~~~~~~~~~
+arch/arm/mach-rockchip/board.c:64:5: note: previous definition of 
‘board_usb_init’ was here
+make[2]: *** [arch/arm/mach-rockchip/board.o] Error 1

Thanks,

- Kever

> +#include <dwc3-uboot.h>
> +
> +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,
> +	.hsphy_mode = USBPHY_INTERFACE_MODE_UTMIW,
> +};
> +
> +int usb_gadget_handle_interrupts(void)
> +{
> +	dwc3_uboot_handle_interrupt(0);
> +	return 0;
> +}
> +
> +int board_usb_init(int index, enum usb_init_type init)
> +{
> +	return dwc3_uboot_init(&dwc3_device_data);
> +}
> +#endif /* CONFIG_USB_DWC3 */
> +
> +#endif /* CONFIG_USB_GADGET */
>   
>   #if CONFIG_IS_ENABLED(FASTBOOT)
>   int fastboot_set_reboot_flag(void)

Patch

diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
index c90eb976d0..542823b8cd 100644
--- a/arch/arm/mach-rockchip/board.c
+++ b/arch/arm/mach-rockchip/board.c
@@ -49,8 +49,10 @@  void enable_caches(void)
 }
 #endif
 
-#if defined(CONFIG_USB_GADGET) && defined(CONFIG_USB_GADGET_DWC2_OTG)
+#if defined(CONFIG_USB_GADGET)
 #include <usb.h>
+
+#if defined(CONFIG_USB_GADGET_DWC2_OTG)
 #include <usb/dwc2_udc.h>
 
 static struct dwc2_plat_otg_data otg_data = {
@@ -117,7 +119,33 @@  int board_usb_cleanup(int index, enum usb_init_type init)
 {
 	return 0;
 }
-#endif
+#endif /* CONFIG_USB_GADGET_DWC2_OTG */
+
+#if defined(CONFIG_USB_DWC3) && !defined(CONFIG_DM_USB_GADGET)
+#include <dwc3-uboot.h>
+
+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,
+	.hsphy_mode = USBPHY_INTERFACE_MODE_UTMIW,
+};
+
+int usb_gadget_handle_interrupts(void)
+{
+	dwc3_uboot_handle_interrupt(0);
+	return 0;
+}
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+	return dwc3_uboot_init(&dwc3_device_data);
+}
+#endif /* CONFIG_USB_DWC3 */
+
+#endif /* CONFIG_USB_GADGET */
 
 #if CONFIG_IS_ENABLED(FASTBOOT)
 int fastboot_set_reboot_flag(void)