aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/oxnas/patches-5.10/800-oxnas-ehci.patch
blob: 8b4d9438104443213561ad6c3f5f085d267d8a03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -350,6 +350,13 @@ config USB_OCTEON_EHCI
 	  USB 2.0 device support.  All CN6XXX based chips with USB are
 	  supported.
 
+config USB_EHCI_OXNAS
+	tristate "OXNAS EHCI Module"
+	depends on USB_EHCI_HCD && ARCH_OXNAS
+	select USB_EHCI_ROOT_HUB_TT
+	help
+	  Enable support for the OX820 SOC's on-chip EHCI controller.
+
 endif # USB_EHCI_HCD
 
 config USB_OXU210HP_HCD
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -48,6 +48,7 @@ obj-$(CONFIG_USB_EHCI_HCD_SPEAR)	+= ehci
 obj-$(CONFIG_USB_EHCI_HCD_STI)	+= ehci-st.o
 obj-$(CONFIG_USB_EHCI_EXYNOS)	+= ehci-exynos.o
 obj-$(CONFIG_USB_EHCI_HCD_AT91) += ehci-atmel.o
+obj-$(CONFIG_USB_EHCI_OXNAS)	+= ehci-oxnas.o
 obj-$(CONFIG_USB_EHCI_TEGRA)	+= ehci-tegra.o
 obj-$(CONFIG_USB_EHCI_BRCMSTB)	+= ehci-brcm.o
 
--- a/arch/arm/boot/dts/ox820.dtsi
+++ b/arch/arm/boot/dts/ox820.dtsi
@@ -106,6 +106,31 @@
 			status = "disabled";
 		};
 
+		ehci: ehci@40200100 {
+			compatible = "plxtech,nas782x-ehci";
+			reg = <0x40200100 0xf00>;
+			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&stdclk CLK_820_USBMPH>, <&pllb>, <&stdclk CLK_820_REF600>;
+			clock-names = "usb", "refsrc", "phyref";
+			resets = <&reset RESET_USBHS>, <&reset RESET_USBPHYA>, <&reset RESET_USBPHYB>;
+			reset-names = "host", "phya", "phyb";
+			oxsemi,sys-ctrl = <&sys>;
+			/* Otherwise ref300 is used, which is derived from sata phy
+			 * in that case, usb depends on sata initialization */
+			/* FIXME: how to make this dependency explicit ? */
+			oxsemi,ehci_use_pllb;
+			status = "disabled";
+
+			ehci_port1: port@1 {
+				reg = <1>;
+				#trigger-source-cells = <0>;
+			};
+			ehci_port2: port@2 {
+				reg = <2>;
+				#trigger-source-cells = <0>;
+			};
+		};
+
 		apb-bridge@44000000 {
 			#address-cells = <1>;
 			#size-cells = <1>;
--- a/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
+++ b/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
@@ -105,6 +105,10 @@
 	};
 };
 
+&ehci {
+	status = "okay";
+};
+
 &etha {
 	status = "okay";