Message ID | 20191119082623.6165-10-jagan@amarulasolutions.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
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)
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)
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)