diff options
author | gonzo <gonzo@FreeBSD.org> | 2013-02-15 21:29:03 +0000 |
---|---|---|
committer | gonzo <gonzo@FreeBSD.org> | 2013-02-15 21:29:03 +0000 |
commit | 1da1883208c0ebabdae363e0661c310c16f47004 (patch) | |
tree | f82cbb2aeec124afaf0fe9042ca8f8768f58838f | |
parent | cf0dd26a09241b64a1f777488cd61147a0c0d588 (diff) | |
download | FreeBSD-src-1da1883208c0ebabdae363e0661c310c16f47004.zip FreeBSD-src-1da1883208c0ebabdae363e0661c310c16f47004.tar.gz |
Enable USB1 (which is EHCI0) for Allwinner A10
Tested by: ganbold@
-rw-r--r-- | sys/arm/allwinner/a10_clk.c | 1 | ||||
-rw-r--r-- | sys/arm/allwinner/a10_clk.h | 1 | ||||
-rw-r--r-- | sys/arm/allwinner/a10_ehci.c | 5 | ||||
-rw-r--r-- | sys/boot/fdt/dts/cubieboard.dts | 9 |
4 files changed, 15 insertions, 1 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 */ diff --git a/sys/boot/fdt/dts/cubieboard.dts b/sys/boot/fdt/dts/cubieboard.dts index 1ef8b42..abb3f45 100644 --- a/sys/boot/fdt/dts/cubieboard.dts +++ b/sys/boot/fdt/dts/cubieboard.dts @@ -91,7 +91,14 @@ interrupt-parent = <&AINTC>; }; - usb1: usb@01c1c000 { + usb1: usb@01c14000 { + compatible = "allwinner,usb-ehci", "usb-ehci"; + reg = <0x01c14000 0x1000>; + interrupts = < 39 >; + interrupt-parent = <&AINTC>; + }; + + usb2: usb@01c1c000 { compatible = "allwinner,usb-ehci", "usb-ehci"; reg = <0x01c1c000 0x1000>; interrupts = < 40 >; |