summaryrefslogtreecommitdiffstats
path: root/sys/arm/allwinner
diff options
context:
space:
mode:
authorgonzo <gonzo@FreeBSD.org>2013-02-15 21:29:03 +0000
committergonzo <gonzo@FreeBSD.org>2013-02-15 21:29:03 +0000
commit1da1883208c0ebabdae363e0661c310c16f47004 (patch)
treef82cbb2aeec124afaf0fe9042ca8f8768f58838f /sys/arm/allwinner
parentcf0dd26a09241b64a1f777488cd61147a0c0d588 (diff)
downloadFreeBSD-src-1da1883208c0ebabdae363e0661c310c16f47004.zip
FreeBSD-src-1da1883208c0ebabdae363e0661c310c16f47004.tar.gz
Enable USB1 (which is EHCI0) for Allwinner A10
Tested by: ganbold@
Diffstat (limited to 'sys/arm/allwinner')
-rw-r--r--sys/arm/allwinner/a10_clk.c1
-rw-r--r--sys/arm/allwinner/a10_clk.h1
-rw-r--r--sys/arm/allwinner/a10_ehci.c5
3 files changed, 7 insertions, 0 deletions
diff --git a/sys/arm/allwinner/a10_clk.c b/sys/arm/allwinner/a10_clk.c
index 275ec4b..64251fb 100644
--- a/sys/arm/allwinner/a10_clk.c
+++ b/sys/arm/allwinner/a10_clk.c
@@ -129,6 +129,7 @@ a10_clk_usb_activate(void)
/* Gating AHB clock for USB */
reg_value = ccm_read_4(sc, CCM_AHB_GATING0);
reg_value |= CCM_AHB_GATING_USB0; /* AHB clock gate usb0 */
+ reg_value |= CCM_AHB_GATING_EHCI0; /* AHB clock gate ehci1 */
reg_value |= CCM_AHB_GATING_EHCI1; /* AHB clock gate ehci1 */
ccm_write_4(sc, CCM_AHB_GATING0, reg_value);
diff --git a/sys/arm/allwinner/a10_clk.h b/sys/arm/allwinner/a10_clk.h
index 7316a22..a2a6bc9 100644
--- a/sys/arm/allwinner/a10_clk.h
+++ b/sys/arm/allwinner/a10_clk.h
@@ -101,6 +101,7 @@
#define CCM_MALI400_CLK 0x0154
#define CCM_AHB_GATING_USB0 (1 << 0)
+#define CCM_AHB_GATING_EHCI0 (1 << 1)
#define CCM_AHB_GATING_EHCI1 (1 << 3)
#define CCM_USB_PHY (1 << 8)
diff --git a/sys/arm/allwinner/a10_ehci.c b/sys/arm/allwinner/a10_ehci.c
index 0d1636b..4145a5c 100644
--- a/sys/arm/allwinner/a10_ehci.c
+++ b/sys/arm/allwinner/a10_ehci.c
@@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$");
#define SW_AHB_INCRX_ALIGN (1 << 8)
#define SW_AHB_INCR4 (1 << 9)
#define SW_AHB_INCR8 (1 << 10)
+#define GPIO_USB1_PWR 230
#define GPIO_USB2_PWR 227
#define A10_READ_4(sc, reg) \
@@ -182,6 +183,10 @@ a10_ehci_attach(device_t self)
GPIO_PIN_SETFLAGS(sc_gpio_dev, GPIO_USB2_PWR, GPIO_PIN_OUTPUT);
GPIO_PIN_SET(sc_gpio_dev, GPIO_USB2_PWR, GPIO_PIN_HIGH);
+ /* Give power to USB */
+ GPIO_PIN_SETFLAGS(sc_gpio_dev, GPIO_USB1_PWR, GPIO_PIN_OUTPUT);
+ GPIO_PIN_SET(sc_gpio_dev, GPIO_USB1_PWR, GPIO_PIN_HIGH);
+
/* Enable passby */
reg_value = A10_READ_4(sc, SW_USB_PMU_IRQ_ENABLE);
reg_value |= SW_AHB_INCR8; /* AHB INCR8 enable */
OpenPOWER on IntegriCloud