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: };