diff options
author | Tony Lindgren <tony@atomide.com> | 2013-12-18 16:13:21 -0500 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2013-12-18 16:13:21 -0500 |
commit | 0f0cfc69547ea3e26f53e50eae2f25fe6ea1a77d (patch) | |
tree | 788e0f90131af80999abb3ccbb50e29bb035cd0c /arch | |
parent | adfe9361b236154215d4b0fc8b6d79995394b15c (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')
-rw-r--r-- | arch/arm/boot/dts/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/omap3-cm-t3730.dts | 104 | ||||
-rw-r--r-- | arch/arm/boot/dts/omap3-cm-t3x30.dtsi | 95 | ||||
-rw-r--r-- | arch/arm/boot/dts/omap3-sb-t35.dtsi | 40 | ||||
-rw-r--r-- | arch/arm/boot/dts/omap3-sbc-t3730.dts | 30 | ||||
-rw-r--r-- | arch/arm/mach-omap2/pdata-quirks.c | 31 |
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 | ||
95 | static 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 | |||
111 | static void __init omap3_sbc_t3730_twl_init(void) | ||
112 | { | ||
113 | twl_gpio_auxdata.setup = omap3_sbc_t3730_twl_callback; | ||
114 | } | ||
115 | |||
116 | static 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 | |||
95 | static void __init omap3_igep0020_legacy_init(void) | 122 | static 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 | */ |
229 | static struct pdata_init pdata_quirks[] __initdata = { | 259 | static 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, }, |