Module Name:    src
Committed By:   matt
Date:           Sat Sep  7 02:10:37 UTC 2013

Modified Files:
        src/sys/arch/arm/allwinner: awin_usb.c

Log Message:
Make sure to turn on the phys and clocks and crap.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/allwinner/awin_usb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/allwinner/awin_usb.c
diff -u src/sys/arch/arm/allwinner/awin_usb.c:1.2 src/sys/arch/arm/allwinner/awin_usb.c:1.3
--- src/sys/arch/arm/allwinner/awin_usb.c:1.2	Sat Sep  7 00:35:52 2013
+++ src/sys/arch/arm/allwinner/awin_usb.c	Sat Sep  7 02:10:37 2013
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_usb.c,v 1.2 2013/09/07 00:35:52 matt Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_usb.c,v 1.3 2013/09/07 02:10:37 matt Exp $");
 
 #include <sys/bus.h>
 #include <sys/device.h>
@@ -80,6 +80,17 @@ struct awinusb_attach_args {
 
 static const int awinusb_ohci_irqs[2] = { AWIN_IRQ_USB3, AWIN_IRQ_USB4 };
 static const int awinusb_ehci_irqs[2] = { AWIN_IRQ_USB1, AWIN_IRQ_USB2 };
+static const uint32_t awinusb_ohci_ahb_gating[2] = {
+	AWIN_AHB_GATING0_USB_OHCI0, AWIN_AHB_GATING0_USB_OHCI1,
+};
+static const uint32_t awinusb_ehci_ahb_gating[2] = {
+	AWIN_AHB_GATING0_USB_EHCI0, AWIN_AHB_GATING0_USB_EHCI1,
+};
+static const uint32_t awinusb_ohci_usb_clk_set[2] = {
+	AWIN_USB_CLK_OHCI0_ENABLE|AWIN_USB_CLK_USBPHY_ENABLE|AWIN_USB_CLK_PHY1_ENABLE,
+	AWIN_USB_CLK_OHCI1_ENABLE|AWIN_USB_CLK_USBPHY_ENABLE|AWIN_USB_CLK_PHY2_ENABLE,
+};
+
 
 #ifdef OHCI_DEBUG
 #define OHCI_DPRINTF(x)	if (ohcidebug) printf x
@@ -114,10 +125,11 @@ ohci_awinusb_attach(device_t parent, dev
 
 	sc->sc_dev = self;
 
-#if 0
-	awinusb_enable(usbaa->usbaa_bst, usbaa->usbaa_ccm_bsh,
-	    AWIN_USB_CLK_USBPHY1_RST, AWIN_APB_GATING1_OHCI0);
-#endif
+	awin_reg_set_clear(usbaa->usbaa_bst, usbaa->usbaa_ccm_bsh,
+	    AWIN_AHB_GATING0_REG, awinusb_ohci_ahb_gating[usbaa->usbaa_port],
+	    0);
+	awin_reg_set_clear(usbaa->usbaa_bst, usbaa->usbaa_ccm_bsh,
+	    AWIN_USB_CLK_REG, awinusb_ohci_usb_clk_set[usbaa->usbaa_port], 0);
 
 	sc->iot = usbaa->usbaa_bst;
 	sc->ioh = usbaa->usbaa_bsh;
@@ -183,6 +195,10 @@ ehci_awinusb_attach(device_t parent, dev
 
 	sc->sc_dev = self;
 
+	awin_reg_set_clear(usbaa->usbaa_bst, usbaa->usbaa_ccm_bsh,
+	    AWIN_AHB_GATING0_REG, awinusb_ehci_ahb_gating[usbaa->usbaa_port],
+	    0);
+
 	sc->iot = usbaa->usbaa_bst;
 	sc->ioh = usbaa->usbaa_bsh;
 	sc->sc_size = usbaa->usbaa_size;

Reply via email to