aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2013-12-18 16:13:21 -0500
committerTony Lindgren <tony@atomide.com>2013-12-18 16:13:21 -0500
commit0f0cfc69547ea3e26f53e50eae2f25fe6ea1a77d (patch)
tree788e0f90131af80999abb3ccbb50e29bb035cd0c /arch/arm
parentadfe9361b236154215d4b0fc8b6d79995394b15c (diff)
ARM: dts: Add support for sbc-3xxx with cm-t3730
This adds support for CompuLab SBC-T3530, also known as cm-t3730: http://compulab.co.il/products/sbcs/sbc-t3530/ It seems that with the sbc-3xxx mainboard is also used on SBC-T3517 and SBC-T3730 with just a different CPU module: http://compulab.co.il/products/sbcs/sbc-t3517/ http://compulab.co.il/products/sbcs/sbc-t3730/ So let's add a common omap3-sb-t35.dtsi and then separate SoC specific omap3-sbc-t3730.dts, omap3-sbc-t3530.dts and omap3-sbc-t3517.dts. I've tested this with SBC-T3730 as that's the only one I have. At least serial, both Ethernet controllers, MMC, and wl12xx WLAN work. Note that WLAN seems to be different for SBC-T3530. And SBC-T3517 may need some changes for the EMAC Ethernet if that's used instead of the smsc911x. Cc: devicetree@vger.kernel.org Cc: Mike Rapoport <mike@compulab.co.il> Acked-by: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/boot/dts/Makefile2
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3730.dts104
-rw-r--r--arch/arm/boot/dts/omap3-cm-t3x30.dtsi95
-rw-r--r--arch/arm/boot/dts/omap3-sb-t35.dtsi40
-rw-r--r--arch/arm/boot/dts/omap3-sbc-t3730.dts30
-rw-r--r--arch/arm/mach-omap2/pdata-quirks.c31
6 files changed, 302 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index fc37bca0ccd3..b7af5023dc89 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -179,6 +179,8 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
179 omap2420-n810-wimax.dtb \ 179 omap2420-n810-wimax.dtb \
180 omap3430-sdp.dtb \ 180 omap3430-sdp.dtb \
181 omap3-beagle.dtb \ 181 omap3-beagle.dtb \
182 omap3-cm-t3730.dtb \
183 omap3-sbc-t3730.dtb \
182 omap3-devkit8000.dtb \ 184 omap3-devkit8000.dtb \
183 omap3-beagle-xm.dtb \ 185 omap3-beagle-xm.dtb \
184 omap3-evm.dtb \ 186 omap3-evm.dtb \
diff --git a/arch/arm/boot/dts/omap3-cm-t3730.dts b/arch/arm/boot/dts/omap3-cm-t3730.dts
new file mode 100644
index 000000000000..486f4d6c4219
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-cm-t3730.dts
@@ -0,0 +1,104 @@
1/*
2 * Support for CompuLab CM-T3730
3 */
4/dts-v1/;
5
6#include "omap36xx.dtsi"
7#include "omap3-cm-t3x30.dtsi"
8
9/ {
10 model = "CompuLab CM-T3730";
11 compatible = "compulab,omap3-cm-t3730", "ti,omap36xx", "ti,omap3";
12
13 wl12xx_vmmc2: wl12xx_vmmc2 {
14 compatible = "regulator-fixed";
15 regulator-name = "vw1271";
16 pinctrl-names = "default";
17 pinctrl-0 = <&wl12xx_gpio>;
18 regulator-min-microvolt = <1800000>;
19 regulator-max-microvolt = <1800000>;
20 gpio = <&gpio3 9 GPIO_ACTIVE_HIGH>; /* gpio73 */
21 startup-delay-us = <20000>;
22 enable-active-high;
23 };
24
25 wl12xx_vaux2: wl12xx_vaux2 {
26 compatible = "regulator-fixed";
27 regulator-name = "vwl1271_vaux2";
28 regulator-min-microvolt = <1800000>;
29 regulator-max-microvolt = <1800000>;
30 vin-supply = <&vaux2>;
31 };
32};
33
34&omap3_pmx_core {
35 mmc1_pins: pinmux_mmc1_pins {
36 pinctrl-single,pins = <
37 0x114 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk.sdmmc1_clk */
38 0x116 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd.sdmmc1_cmd */
39 0x118 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0.sdmmc1_dat0 */
40 0x11a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1.sdmmc1_dat1 */
41 0x11c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2.sdmmc1_dat2 */
42 0x11e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3.sdmmc1_dat3 */
43 >;
44 };
45
46 mmc2_pins: pinmux_mmc2_pins {
47 pinctrl-single,pins = <
48 0x128 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk.sdmmc2_clk */
49 0x12a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd.sdmmc2_cmd */
50 0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0.sdmmc2_dat0 */
51 0x12e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
52 0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */
53 0x132 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */
54 >;
55 };
56
57 smsc1_pins: pinmux_smsc1_pins {
58 pinctrl-single,pins = <
59 0x88 (PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs5.gpmc_ncs5 */
60 0x16a (PIN_INPUT_PULLUP | MUX_MODE4) /* uart3_cts_rctx.gpio_163 */
61 >;
62 };
63
64 uart3_pins: pinmux_uart3_pins {
65 pinctrl-single,pins = <
66 0x16e (PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
67 0x170 (PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */
68 >;
69 };
70
71 wl12xx_gpio: pinmux_wl12xx_gpio {
72 pinctrl-single,pins = <
73 0xb2 (PIN_OUTPUT | MUX_MODE4) /* dss_data3.gpio_73 */
74 0x134 (PIN_INPUT | MUX_MODE4) /* sdmmc2_dat4.gpio_136 */
75 >;
76 };
77};
78
79&mmc1 {
80 vmmc-supply = <&vmmc1>;
81 bus-width = <4>;
82 pinctrl-names = "default";
83 pinctrl-0 = <&mmc1_pins>;
84};
85
86&mmc2 {
87 pinctrl-names = "default";
88 pinctrl-0 = <&mmc2_pins>;
89 vmmc-supply = <&wl12xx_vmmc2>;
90 vmmc_aux-supply = <&wl12xx_vaux2>;
91 non-removable;
92 bus-width = <4>;
93 cap-power-off-card;
94};
95
96&smsc1 {
97 pinctrl-names = "default";
98 pinctrl-0 = <&smsc1_pins>;
99};
100
101&uart3 {
102 pinctrl-names = "default";
103 pinctrl-0 = <&uart3_pins>;
104};
diff --git a/arch/arm/boot/dts/omap3-cm-t3x30.dtsi b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi
new file mode 100644
index 000000000000..3a9f004d8924
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi
@@ -0,0 +1,95 @@
1/*
2 * Common support for CompuLab CM-T3530 and CM-T3730
3 */
4
5/ {
6 memory {
7 device_type = "memory";
8 reg = <0x80000000 0x10000000>; /* 256 MB */
9 };
10
11 cpus {
12 cpu@0 {
13 cpu0-supply = <&vcc>;
14 };
15 };
16
17 leds {
18 compatible = "gpio-leds";
19 ledb {
20 label = "cm-t35:green";
21 gpios = <&gpio6 26 GPIO_ACTIVE_HIGH>; /* gpio186 */
22 linux,default-trigger = "heartbeat";
23 };
24 };
25
26 vddvario: regulator-vddvario {
27 compatible = "regulator-fixed";
28 regulator-name = "vddvario";
29 regulator-always-on;
30 };
31
32 vdd33a: regulator-vdd33a {
33 compatible = "regulator-fixed";
34 regulator-name = "vdd33a";
35 regulator-always-on;
36 };
37};
38
39&gpmc {
40 ranges = <5 0 0x2c000000 0x01000000>;
41
42 smsc1: ethernet@5,0 {
43 compatible = "smsc,lan9221", "smsc,lan9115";
44 interrupt-parent = <&gpio6>;
45 interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
46 reg = <5 0 0xff>;
47 bank-width = <2>;
48 gpmc,mux-add-data;
49 gpmc,cs-on-ns = <0>;
50 gpmc,cs-rd-off-ns = <186>;
51 gpmc,cs-wr-off-ns = <186>;
52 gpmc,adv-on-ns = <12>;
53 gpmc,adv-rd-off-ns = <48>;
54 gpmc,adv-wr-off-ns = <48>;
55 gpmc,oe-on-ns = <54>;
56 gpmc,oe-off-ns = <168>;
57 gpmc,we-on-ns = <54>;
58 gpmc,we-off-ns = <168>;
59 gpmc,rd-cycle-ns = <186>;
60 gpmc,wr-cycle-ns = <186>;
61 gpmc,access-ns = <114>;
62 gpmc,page-burst-access-ns = <6>;
63 gpmc,bus-turnaround-ns = <12>;
64 gpmc,cycle2cycle-delay-ns = <18>;
65 gpmc,wr-data-mux-bus-ns = <90>;
66 gpmc,wr-access-ns = <186>;
67 gpmc,cycle2cycle-samecsen;
68 gpmc,cycle2cycle-diffcsen;
69 vddvario-supply = <&vddvario>;
70 vdd33a-supply = <&vdd33a>;
71 reg-io-width = <4>;
72 smsc,save-mac-address;
73 };
74};
75
76&i2c1 {
77 clock-frequency = <400000>;
78
79 twl: twl@48 {
80 reg = <0x48>;
81 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
82 interrupt-parent = <&intc>;
83 };
84};
85
86#include "twl4030.dtsi"
87#include "twl4030_omap3.dtsi"
88
89&i2c3 {
90 clock-frequency = <400000>;
91};
92
93&twl_gpio {
94 ti,use-leds;
95};
diff --git a/arch/arm/boot/dts/omap3-sb-t35.dtsi b/arch/arm/boot/dts/omap3-sb-t35.dtsi
new file mode 100644
index 000000000000..b9a2fedce7ee
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-sb-t35.dtsi
@@ -0,0 +1,40 @@
1/*
2 * Common support for CompuLab SB-T35 used on SBC-T3530, SBC-T3517 and SBC-T3730
3 */
4
5&gpmc {
6 ranges = <4 0 0x2d000000 0x01000000>;
7
8 smsc2: ethernet@4,0 {
9 compatible = "smsc,lan9221", "smsc,lan9115";
10 interrupt-parent = <&gpio3>;
11 interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
12 reg = <4 0 0xff>;
13 bank-width = <2>;
14 gpmc,mux-add-data;
15 gpmc,cs-on-ns = <0>;
16 gpmc,cs-rd-off-ns = <186>;
17 gpmc,cs-wr-off-ns = <186>;
18 gpmc,adv-on-ns = <12>;
19 gpmc,adv-rd-off-ns = <48>;
20 gpmc,adv-wr-off-ns = <48>;
21 gpmc,oe-on-ns = <54>;
22 gpmc,oe-off-ns = <168>;
23 gpmc,we-on-ns = <54>;
24 gpmc,we-off-ns = <168>;
25 gpmc,rd-cycle-ns = <186>;
26 gpmc,wr-cycle-ns = <186>;
27 gpmc,access-ns = <114>;
28 gpmc,page-burst-access-ns = <6>;
29 gpmc,bus-turnaround-ns = <12>;
30 gpmc,cycle2cycle-delay-ns = <18>;
31 gpmc,wr-data-mux-bus-ns = <90>;
32 gpmc,wr-access-ns = <186>;
33 gpmc,cycle2cycle-samecsen;
34 gpmc,cycle2cycle-diffcsen;
35 vddvario-supply = <&vddvario>;
36 vdd33a-supply = <&vdd33a>;
37 reg-io-width = <4>;
38 smsc,save-mac-address;
39 };
40};
diff --git a/arch/arm/boot/dts/omap3-sbc-t3730.dts b/arch/arm/boot/dts/omap3-sbc-t3730.dts
new file mode 100644
index 000000000000..c119bd545053
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-sbc-t3730.dts
@@ -0,0 +1,30 @@
1/*
2 * Suppport for CompuLab SBC-T3730 with CM-T3730
3 */
4
5#include "omap3-cm-t3730.dts"
6#include "omap3-sb-t35.dtsi"
7
8/ {
9 model = "CompuLab SBC-T3730 with CM-T3730";
10 compatible = "compulab,omap3-sbc-t3730", "compulab,omap3-cm-t3730", "ti,omap36xx", "ti,omap3";
11};
12
13&gpmc {
14 ranges = <5 0 0x2c000000 0x01000000>,
15 <4 0 0x2d000000 0x01000000>;
16};
17
18&smsc2 {
19 pinctrl-names = "default";
20 pinctrl-0 = <&smsc2_pins>;
21};
22
23&omap3_pmx_core {
24 smsc2_pins: pinmux_smsc2_pins {
25 pinctrl-single,pins = <
26 0x86 (PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs4.gpmc_ncs4 */
27 0xa2 (PIN_INPUT_PULLUP | MUX_MODE4) /* gpmc_wait3.gpio_65 */
28 >;
29 };
30}; \ No newline at end of file
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index 5aaf720211f4..3d5b24dcd9a4 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -92,6 +92,33 @@ static void __init hsmmc2_internal_input_clk(void)
92 omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1); 92 omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1);
93} 93}
94 94
95static int omap3_sbc_t3730_twl_callback(struct device *dev,
96 unsigned gpio,
97 unsigned ngpio)
98{
99 int res;
100
101 res = gpio_request_one(gpio + 2, GPIOF_OUT_INIT_HIGH,
102 "wlan rst");
103 if (res)
104 return res;
105
106 gpio_export(gpio, 0);
107
108 return 0;
109}
110
111static void __init omap3_sbc_t3730_twl_init(void)
112{
113 twl_gpio_auxdata.setup = omap3_sbc_t3730_twl_callback;
114}
115
116static void __init omap3_sbc_t3730_legacy_init(void)
117{
118 legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 136);
119 omap_ads7846_init(1, 57, 0, NULL);
120}
121
95static void __init omap3_igep0020_legacy_init(void) 122static void __init omap3_igep0020_legacy_init(void)
96{ 123{
97 omap3_igep2_display_init_of(); 124 omap3_igep2_display_init_of();
@@ -200,6 +227,9 @@ static struct pdata_init auxdata_quirks[] __initdata = {
200 { "nokia,n810", omap2420_n8x0_legacy_init, }, 227 { "nokia,n810", omap2420_n8x0_legacy_init, },
201 { "nokia,n810-wimax", omap2420_n8x0_legacy_init, }, 228 { "nokia,n810-wimax", omap2420_n8x0_legacy_init, },
202#endif 229#endif
230#ifdef CONFIG_ARCH_OMAP3
231 { "compulab,omap3-sbc-t3730", omap3_sbc_t3730_twl_init, },
232#endif
203 { /* sentinel */ }, 233 { /* sentinel */ },
204}; 234};
205 235
@@ -228,6 +258,7 @@ struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
228 */ 258 */
229static struct pdata_init pdata_quirks[] __initdata = { 259static struct pdata_init pdata_quirks[] __initdata = {
230#ifdef CONFIG_ARCH_OMAP3 260#ifdef CONFIG_ARCH_OMAP3
261 { "compulab,omap3-sbc-t3730", omap3_sbc_t3730_legacy_init, },
231 { "nokia,omap3-n900", hsmmc2_internal_input_clk, }, 262 { "nokia,omap3-n900", hsmmc2_internal_input_clk, },
232 { "nokia,omap3-n9", hsmmc2_internal_input_clk, }, 263 { "nokia,omap3-n9", hsmmc2_internal_input_clk, },
233 { "nokia,omap3-n950", hsmmc2_internal_input_clk, }, 264 { "nokia,omap3-n950", hsmmc2_internal_input_clk, },