GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm / boot / dts / am335x-bonegreen-wireless.dts
1 /*
2  * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  */
8 /dts-v1/;
9
10 #include "am33xx.dtsi"
11 #include "am335x-bone-common.dtsi"
12 #include "am335x-bonegreen-common.dtsi"
13 #include <dt-bindings/interrupt-controller/irq.h>
14
15 / {
16         model = "TI AM335x BeagleBone Green Wireless";
17         compatible = "ti,am335x-bone-green-wireless", "ti,am335x-bone-green", "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
18
19         wlan_en_reg: fixedregulator@2 {
20                 compatible = "regulator-fixed";
21                 regulator-name = "wlan-en-regulator";
22                 regulator-min-microvolt = <1800000>;
23                 regulator-max-microvolt = <1800000>;
24                 startup-delay-us= <70000>;
25
26                 /* WL_EN */
27                 gpio = <&gpio0 26 0>;
28                 enable-active-high;
29         };
30 };
31
32 &am33xx_pinmux {
33         bt_pins: pinmux_bt_pins {
34                 pinctrl-single,pins = <
35                         AM33XX_IOPAD(0x878, PIN_OUTPUT_PULLUP | MUX_MODE7)      /* gpmc_ad12.gpio1_28 BT_EN */
36                 >;
37         };
38
39         mmc3_pins: pinmux_mmc3_pins {
40                 pinctrl-single,pins = <
41                         AM33XX_IOPAD(0x830, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_ad12.mmc2_dat0 */
42                         AM33XX_IOPAD(0x834, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_ad13.mmc2_dat1 */
43                         AM33XX_IOPAD(0x838, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_ad14.mmc2_dat2 */
44                         AM33XX_IOPAD(0x83c, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_ad15.mmc2_dat3 */
45                         AM33XX_IOPAD(0x888, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_csn3.mmc2_cmd */
46                         AM33XX_IOPAD(0x88c, PIN_INPUT_PULLUP | MUX_MODE3)       /* gpmc_clk.mmc2_clk */
47                 >;
48         };
49
50         uart3_pins: pinmux_uart3_pins {
51                 pinctrl-single,pins = <
52                         AM33XX_IOPAD(0x934, PIN_INPUT_PULLUP | MUX_MODE1)       /* gmii1_rxd3.uart3_rxd */
53                         AM33XX_IOPAD(0x938, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* gmii1_rxd2.uart3_txd */
54                         AM33XX_IOPAD(0x948, PIN_INPUT | MUX_MODE3)              /* mdio_data.uart3_ctsn */
55                         AM33XX_IOPAD(0x94c, PIN_OUTPUT_PULLDOWN | MUX_MODE3)    /* mdio_clk.uart3_rtsn */
56                 >;
57         };
58
59         wl18xx_pins: pinmux_wl18xx_pins {
60                 pinctrl-single,pins = <
61                         AM33XX_IOPAD(0x828, PIN_OUTPUT_PULLDOWN | MUX_MODE7)    /* gpmc_ad10.gpio0_26 WL_EN */
62                         AM33XX_IOPAD(0x82C, PIN_INPUT_PULLDOWN | MUX_MODE7)     /* gpmc_ad11.gpio0_27 WL_IRQ */
63                         AM33XX_IOPAD(0x87C, PIN_OUTPUT_PULLUP | MUX_MODE7)      /* gpmc_csn0.gpio1_29 LS_BUF_EN */
64                 >;
65         };
66 };
67
68 &mac {
69         status = "disabled";
70 };
71
72 &mmc3 {
73         dmas = <&edma_xbar 12 0 1
74                 &edma_xbar 13 0 2>;
75         dma-names = "tx", "rx";
76         status = "okay";
77         vmmc-supply = <&wlan_en_reg>;
78         bus-width = <4>;
79         non-removable;
80         cap-power-off-card;
81         ti,needs-special-hs-handling;
82         keep-power-in-suspend;
83         pinctrl-names = "default";
84         pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
85
86         #address-cells = <1>;
87         #size-cells = <0>;
88         wlcore: wlcore@2 {
89                 compatible = "ti,wl1835";
90                 reg = <2>;
91                 interrupt-parent = <&gpio0>;
92                 interrupts = <27 IRQ_TYPE_EDGE_RISING>;
93         };
94 };
95
96 &uart3 {
97         pinctrl-names = "default";
98         pinctrl-0 = <&uart3_pins &bt_pins>;
99         status = "okay";
100
101         bluetooth {
102                 compatible = "ti,wl1835-st";
103                 enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
104         };
105 };
106
107 &gpio1 {
108         ls_buf_en {
109                 gpio-hog;
110                 gpios = <29 GPIO_ACTIVE_HIGH>;
111                 output-high;
112                 line-name = "LS_BUF_EN";
113         };
114 };
115
116 /* BT_AUD_OUT from wl1835 has to be pulled low when WL_EN is activated.*/
117 /* in case it isn't, wilink8 ends up in one of the test modes that     */
118 /* intruces various issues (elp wkaeup timeouts etc.)                  */
119 /* On the BBGW this pin is routed through the level shifter (U21) that */
120 /* introduces a pullup on the line and wilink8 ends up in a bad state. */
121 /* use a gpio hog to force this pin low. An alternative may be adding  */
122 /* an external pulldown on U21 pin 4.                                  */
123
124 &gpio3 {
125         bt_aud_in {
126                 gpio-hog;
127                 gpios = <16 GPIO_ACTIVE_HIGH>;
128                 output-low;
129                 line-name = "MCASP0_AHCLKR";
130         };
131 };