File: sun8i-r16-clockworkpi-cpi3.dts - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

001: /*
002:  * Copyright (c) 2018 Clockwork
003:  *
004:  * This file is dual-licensed: you can use it either under the terms
005:  * of the GPL or the X11 license, at your option. Note that this dual
006:  * licensing only applies to this file, and not this project as a
007:  * whole.
008:  *
009:  *  a) This file is free software; you can redistribute it and/or
010:  *     modify it under the terms of the GNU General Public License as
011:  *     published by the Free Software Foundation; either version 2 of the
012:  *     License, or (at your option) any later version.
013:  *
014:  *     This file is distributed in the hope that it will be useful,
015:  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
016:  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017:  *     GNU General Public License for more details.
018:  *
019:  * Or, alternatively,
020:  *
021:  *  b) Permission is hereby granted, free of charge, to any person
022:  *     obtaining a copy of this software and associated documentation
023:  *     files (the "Software"), to deal in the Software without
024:  *     restriction, including without limitation the rights to use,
025:  *     copy, modify, merge, publish, distribute, sublicense, and/or
026:  *     sell copies of the Software, and to permit persons to whom the
027:  *     Software is furnished to do so, subject to the following
028:  *     conditions:
029:  *
030:  *     The above copyright notice and this permission notice shall be
031:  *     included in all copies or substantial portions of the Software.
032:  *
033:  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
034:  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
035:  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
036:  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
037:  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
038:  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
039:  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
040:  *     OTHER DEALINGS IN THE SOFTWARE.
041:  */
042: 
043: /dts-v1/;
044: #include "sun8i-a33.dtsi"
045: #include "sunxi-common-regulators.dtsi"
046: 
047: #include <dt-bindings/gpio/gpio.h>
048: #include <dt-bindings/input/input.h>
049: 
050: / {
051:     model = "Clockwork CPI3";
052:     compatible = "clockwork,clockworkpi-cpi3", "allwinner,sun8i-a33";
053: 
054:     aliases {
055:         serial0 = &uart0;
056:     };
057: 
058:     chosen {
059:         stdout-path = "serial0:115200n8";
060:     };
061: 
062:     leds {
063:         compatible = "gpio-leds";
064:         pinctrl-names = "default";
065:         pinctrl-0 = <&led_pins>;
066: 
067:         led1 {
068:             label = "led1";
069:             gpio = <&pio 1 7 GPIO_ACTIVE_LOW>; /* PB7 */
070:         };
071:     };
072: 
073:     wifi_pwrseq: wifi_pwrseq {
074:         compatible = "mmc-pwrseq-simple";
075:         reset-gpios = <&r_pio 0 6 GPIO_ACTIVE_LOW>; /* PL06 */
076:     };
077: 
078:     backlight {
079:         compatible = "ocp8178-backlight";
080:         pinctrl-names = "default";
081:         pinctrl-0 = <&backlight_control_pin>;
082:         backlight-control-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
083:         default-brightness = <5>;
084:     };
085: 
086:     lcd {
087:         compatible = "kd027-lcd";
088:         pinctrl-names = "default";
089:         pinctrl-0 = <&lcd_control_pin>;
090:         lcd-rst-gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>; /* PB2 */
091:         lcd-cs-gpios = <&pio 2 3 GPIO_ACTIVE_HIGH>; /* PC3 */
092:         lcd-sck-gpios = <&pio 2 2 GPIO_ACTIVE_HIGH>; /* PC2 */
093:         lcd-sda-gpios = <&pio 2 0 GPIO_ACTIVE_HIGH>; /* PC0 */
094:         init-seq = /bits/ 8 <0x2b 0x01 0x00 0x07 0x0c 0x27 0x16 0x04>;
095:         suspend-seq = /bits/ 8 <0x2b 0x00>;
096:         resume-seq = /bits/ 8 <0x2b 0x01>;
097:     };
098: 
099: };
100: 
101: &codec {
102:     status = "okay";
103: };
104: 
105: &dai {
106:     status = "okay";
107: };
108: 
109: &ehci0 {
110:     status = "okay";
111: };
112: 
113: &i2c1 {
114:     pinctrl-names = "default";
115:     pinctrl-0 = <&i2c1_pins>;
116:     status = "okay";
117: 
118:     /*
119:      * FIXME: An as-yet-unknown accelerometer is connected to this
120:      * i2c bus.
121:      */
122: };
123: 
124: &mmc0 {
125:     pinctrl-names = "default";
126:     pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin>;
127:     vmmc-supply = <&reg_dcdc1>;
128:     cd-gpios = <&pio 1 3 GPIO_ACTIVE_LOW>; /* PD14 */
129:     bus-width = <4>;
130:     status = "okay";
131: };
132: 
133: &mmc1 {
134:     pinctrl-names = "default";
135:     pinctrl-0 = <&mmc1_pg_pins>, <&wifi_reset_pin>;
136:     vmmc-supply = <&reg_aldo1>;
137:     mmc-pwrseq = <&wifi_pwrseq>;
138:     bus-width = <4>;
139:     non-removable;
140:     keep-power-in-suspend;
141:     status = "okay";
142: };
143: 
144: &ohci0 {
145:     status = "okay";
146: };
147: 
148: &pio {
149:     mmc0_cd_pin: mmc0_cd_pin@0 {
150:         pins = "PB3";
151:         function = "gpio_in";
152:         bias-pull-up;
153:     };
154: 
155:     led_pins: led_pins@0 {
156:         pins = "PB7";
157:         function = "gpio_out";
158:     };
159: 
160:     lcd_control_pin: lcd_control_pin@0 {
161:         pins = "PB2", "PC0", "PC2", "PC3";
162:         function = "gpio_out";
163:     };
164: 
165:     backlight_control_pin: backlight_control_pin@0 {
166:         pins = "PH1";
167:         function = "gpio_out";
168:     };
169: };
170: 
171: &r_pio {
172:     usb1_vbus_pin: usb1_vbus_pin@0 {
173:         pins = "PL2";
174:         function = "gpio_out";
175:     };
176: 
177:     speaker_amplifier_pin: speaker_amplifier_pin@0 {
178:         pins = "PL3";
179:         function = "gpio_out";
180:     };
181: 
182:     usb0_id_det: usb0_id_detect_pin@0 {
183:         pins = "PL4";
184:         function = "gpio_in";
185:         bias-pull-up;
186:     };
187: 
188:     wifi_reset_pin: wifi_reset_pin@0 {
189:         pins = "PL6";
190:         function = "gpio_out";
191:     };
192: 
193:     headset_det: headset_det@0 {
194:         pins = "PL11";
195:         function = "gpio_in";
196:     };
197: };
198: 
199: &r_rsb {
200:     status = "okay";
201: 
202:     axp22x: pmic@3a3 {
203:         compatible = "x-powers,axp223";
204:         reg = <0x3a3>;
205:         interrupt-parent = <&nmi_intc>;
206:         interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
207:         drivevbus-supply = <&reg_vcc5v0>;
208:         x-powers,drive-vbus-en;
209:     };
210: };
211: 
212: #include "axp223.dtsi"
213: 
214: &reg_aldo1 {
215:     regulator-always-on;
216:     regulator-min-microvolt = <3000000>;
217:     regulator-max-microvolt = <3000000>;
218:     regulator-name = "vcc-io";
219: };
220: 
221: &reg_aldo2 {
222:     regulator-always-on;
223:     regulator-min-microvolt = <2500000>;
224:     regulator-max-microvolt = <2500000>;
225:     regulator-name = "vdd-dll";
226: };
227: 
228: &reg_aldo3 {
229:     regulator-always-on;
230:     regulator-min-microvolt = <3000000>;
231:     regulator-max-microvolt = <3000000>;
232:     regulator-name = "vcc-pll-avcc";
233: };
234: 
235: &reg_dc5ldo {
236:     regulator-always-on;
237:     regulator-min-microvolt = <1100000>;
238:     regulator-max-microvolt = <1100000>;
239:     regulator-name = "vdd-cpus";
240: };
241: 
242: &reg_dcdc1 {
243:     regulator-always-on;
244:     regulator-min-microvolt = <3000000>;
245:     regulator-max-microvolt = <3000000>;
246:     regulator-name = "vcc-3v0";
247: };
248: 
249: &reg_dcdc2 {
250:     regulator-always-on;
251:     regulator-min-microvolt = <1100000>;
252:     regulator-max-microvolt = <1100000>;
253:     regulator-name = "vdd-sys";
254: };
255: 
256: &reg_dcdc3 {
257:     regulator-always-on;
258:     regulator-min-microvolt = <1200000>;
259:     regulator-max-microvolt = <1200000>;
260:     regulator-name = "vdd-cpu";
261: };
262: 
263: &reg_dcdc5 {
264:     regulator-always-on;
265:     regulator-min-microvolt = <1500000>;
266:     regulator-max-microvolt = <1500000>;
267:     regulator-name = "vcc-dram";
268: };
269: 
270: &reg_dldo1 {
271:     /*
272:      * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered.
273:      * Remove next line once it is possible to sync two regulators.
274:      */
275:     regulator-always-on;
276:     regulator-min-microvolt = <3300000>;
277:     regulator-max-microvolt = <3300000>;
278:     regulator-name = "vcc-wifi0";
279: };
280: 
281: &reg_dldo2 {
282:     /*
283:      * TODO: WiFi chip needs dldo1 AND dldo2 to be on to be powered.
284:      * Remove next line once it is possible to sync two regulators.
285:      */
286:     regulator-always-on;
287:     regulator-min-microvolt = <3300000>;
288:     regulator-max-microvolt = <3300000>;
289:     regulator-name = "vcc-wifi1";
290: };
291: 
292: &reg_dldo3 {
293:     regulator-min-microvolt = <3000000>;
294:     regulator-max-microvolt = <3000000>;
295:     regulator-name = "vcc-3v0-csi";
296: };
297: 
298: &reg_drivevbus {
299:     regulator-name = "usb0-vbus";
300:     status = "okay";
301: };
302: 
303: &reg_eldo1 {
304:     regulator-min-microvolt = <1200000>;
305:     regulator-max-microvolt = <1200000>;
306:     regulator-name = "vcc-1v2-hsic";
307: };
308: 
309: &reg_eldo2 {
310:     regulator-min-microvolt = <3000000>;
311:     regulator-max-microvolt = <3000000>;
312:     regulator-name = "vcc-dsp";
313: };
314: 
315: &reg_eldo3 {
316:     regulator-min-microvolt = <3000000>;
317:     regulator-max-microvolt = <3000000>;
318:     regulator-name = "eldo3";
319: };
320: 
321: &reg_usb1_vbus {
322:     pinctrl-names = "default";
323:     pinctrl-0 = <&usb1_vbus_pin>;
324:     gpio = <&r_pio 0 2 GPIO_ACTIVE_HIGH>; /* PL2 */
325:     status = "okay";
326: };
327: 
328: &battery_power_supply {
329:     status = "okay";
330: };
331: 
332: &sound {
333:     status = "okay";
334: };
335: 
336: &codec_analog {
337:     pinctrl-names = "default";
338:     pinctrl-0 = <&speaker_amplifier_pin>;
339:     speaker-amplifier-gpios = <&r_pio 0 3 GPIO_ACTIVE_HIGH>; /* PL3 */
340:     interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
341: };
342: 
343: &uart0 {
344:     pinctrl-names = "default";
345:     pinctrl-0 = <&uart0_pf_pins>;
346:     status = "okay";
347: };
348: 
349: &usb_otg {
350:     dr_mode = "otg";
351:     status = "okay";
352: };
353: 
354: &usb_power_supply {
355:     status = "okay";
356: };
357: 
358: &usbphy {
359:     status = "okay";
360:     pinctrl-names = "default";
361:     pinctrl-0 = <&usb0_id_det>;
362:     usb0_vbus-supply = <&reg_drivevbus>;
363:     usb0_id_det-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
364:     usb0_vbus_power-supply = <&usb_power_supply>;
365:     usb1_vbus-supply = <&reg_usb1_vbus>;
366: };