]> git.sur5r.net Git - u-boot/commitdiff
sunxi: Hookup OTG USB controller support
authorHans de Goede <hdegoede@redhat.com>
Sun, 11 Jan 2015 16:17:00 +0000 (17:17 +0100)
committerHans de Goede <hdegoede@redhat.com>
Thu, 22 Jan 2015 11:34:56 +0000 (12:34 +0100)
Hookup OTG USB controller support and enable the otg controller + USB-keyb
on various tablets.

This allows tablet owners to interact with u-boot without needing to solder
a serial console onto their tablet PCB.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
arch/arm/include/asm/arch-sunxi/usbc.h
board/sunxi/Kconfig
board/sunxi/board.c
configs/Ippo_q8h_v1_2_defconfig
configs/Ippo_q8h_v5_defconfig
include/configs/sunxi-common.h

index 8d2097336c4288d64cef37fdde88fb5c653e2b7e..cb538cdc7d4c9f632279ead2505d4e1591e1c823 100644 (file)
@@ -11,6 +11,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+extern const struct musb_platform_ops sunxi_musb_ops;
+
 void *sunxi_usbc_get_io_base(int index);
 int sunxi_usbc_request_resources(int index);
 int sunxi_usbc_free_resources(int index);
index cea356c47cd2dbd967ae767b8a975d17121d17dc..f1501d42554699e663f9c332915194e9f703c02c 100644 (file)
@@ -357,6 +357,15 @@ config VIDEO_LCD_PANEL_MIPI_4_LANE_513_MBPS_VIA_SSD2828
 endchoice
 
 
+config USB_MUSB_SUNXI
+       bool "Enable sunxi OTG / DRC USB controller in host mode"
+       default n
+       ---help---
+       Say y here to enable support for the sunxi OTG / DRC USB controller
+       used on almost all sunxi boards. Note currently u-boot can only have
+       one usb host controller enabled at a time, so enabling this on boards
+       which also use the ehci host controller will result in build errors.
+
 config USB_KEYBOARD
        boolean "Enable USB keyboard support"
        default y
index 6b19f75e9cf00b1e982310a3922daf9c0d366f8d..b70e00ce6bced72c405554e4951a076a48338069 100644 (file)
@@ -28,7 +28,9 @@
 #include <asm/arch/dram.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/mmc.h>
+#include <asm/arch/usbc.h>
 #include <asm/io.h>
+#include <linux/usb/musb.h>
 #include <net.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -209,6 +211,26 @@ void sunxi_board_init(void)
 }
 #endif
 
+#if defined(CONFIG_MUSB_HOST) || defined(CONFIG_MUSB_GADGET)
+static struct musb_hdrc_config musb_config = {
+       .multipoint     = 1,
+       .dyn_fifo       = 1,
+       .num_eps        = 6,
+       .ram_bits       = 11,
+};
+
+static struct musb_hdrc_platform_data musb_plat = {
+#if defined(CONFIG_MUSB_HOST)
+       .mode           = MUSB_HOST,
+#else
+       .mode           = MUSB_PERIPHERAL,
+#endif
+       .config         = &musb_config,
+       .power          = 250,
+       .platform_ops   = &sunxi_musb_ops,
+};
+#endif
+
 #ifdef CONFIG_MISC_INIT_R
 int misc_init_r(void)
 {
@@ -228,6 +250,9 @@ int misc_init_r(void)
                eth_setenv_enetaddr("ethaddr", mac_addr);
        }
 
+#if defined(CONFIG_MUSB_HOST) || defined(CONFIG_MUSB_GADGET)
+       musb_register(&musb_plat, NULL, (void *)SUNXI_USB0_BASE);
+#endif
        return 0;
 }
 #endif
index e68fff0f3266276fcf2542e3b3c1e40eb3dae16f..192a461f55f6462c3519a9d5aade9b1be0020b15 100644 (file)
@@ -1,12 +1,13 @@
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
 CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v1.2.dtb"
+CONFIG_USB_MUSB_SUNXI=y
+CONFIG_USB0_VBUS_PIN="axp_drivebus"
 CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:167,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
 CONFIG_VIDEO_LCD_DCLK_PHASE=0
 CONFIG_VIDEO_LCD_POWER="PH7"
 CONFIG_VIDEO_LCD_BL_EN="PH6"
 CONFIG_VIDEO_LCD_BL_PWM="PH0"
-CONFIG_USB_KEYBOARD=n
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_SUNXI=y
 +S:CONFIG_MACH_SUN8I=y
index a26fbb6181f6b64e109b7644833141dfe6eb381f..c894948d88351f12e751c6e7dce5297b7f54113f 100644 (file)
@@ -1,12 +1,13 @@
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
 CONFIG_FDTFILE="sun8i-a23-ippo-q8h-v5.dtb"
+CONFIG_USB_MUSB_SUNXI=y
+CONFIG_USB0_VBUS_PIN="axp_drivebus"
 CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:168,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
 CONFIG_VIDEO_LCD_DCLK_PHASE=0
 CONFIG_VIDEO_LCD_POWER="PH7"
 CONFIG_VIDEO_LCD_BL_EN="PH6"
 CONFIG_VIDEO_LCD_BL_PWM="PH0"
-CONFIG_USB_KEYBOARD=n
 +S:CONFIG_ARM=y
 +S:CONFIG_ARCH_SUNXI=y
 +S:CONFIG_MACH_SUN8I=y
index e839053e2ba995ca3388f251fdb6e0f8bf886a9f..7a66a4dca63666618b99cb1bbdbf812f5c0a2445 100644 (file)
 #endif
 
 #ifdef CONFIG_USB_EHCI
-#define CONFIG_CMD_USB
 #define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
+#endif
+
+#ifdef CONFIG_USB_MUSB_SUNXI
+#define CONFIG_MUSB_HOST
+#define CONFIG_MUSB_PIO_ONLY
+#endif
+
+#if defined CONFIG_USB_EHCI || defined CONFIG_USB_MUSB_SUNXI
+#define CONFIG_CMD_USB
 #define CONFIG_USB_STORAGE
 #endif