Linux Audio

Check our new training course

Linux debugging, profiling, tracing and performance analysis training

Apr 14-17, 2025
Register
Loading...
v4.17
  1/*
  2 * Copyright 2016 Linaro Ltd
  3 *
  4 * Permission is hereby granted, free of charge, to any person obtaining a copy
  5 * of this software and associated documentation files (the "Software"), to deal
  6 * in the Software without restriction, including without limitation the rights
  7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8 * copies of the Software, and to permit persons to whom the Software is
  9 * furnished to do so, subject to the following conditions:
 10 *
 11 * The above copyright notice and this permission notice shall be included in
 12 * all copies or substantial portions of the Software.
 13 *
 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 20 * THE SOFTWARE.
 21 */
 22
 23#include <dt-bindings/input/input.h>
 24#include <dt-bindings/gpio/gpio.h>
 
 25#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 26#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
 27#include "qcom-msm8660.dtsi"
 28
 29/ {
 30	model = "Qualcomm APQ8060 Dragonboard";
 31	compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
 32
 33	aliases {
 34		serial0 = &gsbi12_serial;
 35	};
 36
 37	chosen {
 38		stdout-path = "serial0:115200n8";
 39	};
 40
 41	regulators {
 42		compatible = "simple-bus";
 43
 44		/* Main power of the board: 3.7V */
 45		vph: regulator-fixed {
 46			compatible = "regulator-fixed";
 47			regulator-min-microvolt = <3700000>;
 48			regulator-max-microvolt = <3700000>;
 49			regulator-name = "VPH";
 50			regulator-type = "voltage";
 51			regulator-always-on;
 52			regulator-boot-on;
 53		};
 54
 55		/* GPIO controlled ethernet power regulator */
 56		dragon_veth: xc622a331mrg {
 57			compatible = "regulator-fixed";
 58			regulator-name = "XC6222A331MR-G";
 59			regulator-min-microvolt = <3300000>;
 60			regulator-max-microvolt = <3300000>;
 61			vin-supply = <&vph>;
 62			gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>;
 63			enable-active-high;
 64			pinctrl-names = "default";
 65			pinctrl-0 = <&dragon_veth_gpios>;
 66			regulator-always-on;
 67		};
 68
 69		/* VDDvario fixed regulator */
 70		dragon_vario: nds332p {
 71			compatible = "regulator-fixed";
 72			regulator-name = "NDS332P";
 73			regulator-min-microvolt = <1800000>;
 74			regulator-max-microvolt = <1800000>;
 75			vin-supply = <&pm8058_s3>;
 76		};
 77
 78		/* This is a levelshifter for SDCC5 */
 79		dragon_vio_txb: txb0104rgyr {
 80			compatible = "regulator-fixed";
 81			regulator-name = "Dragon SDCC levelshifter";
 82			vin-supply = <&pm8058_l14>;
 83			regulator-always-on;
 84		};
 85	};
 86
 87	/*
 88	 * Capella CM3605 light and proximity sensor mounted directly
 89	 * on the sensor board.
 90	 */
 91	cm3605 {
 92		compatible = "capella,cm3605";
 93		vdd-supply = <&pm8058_l14>; // 2.85V
 94		aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>;
 95		capella,aset-resistance-ohms = <100000>;
 96		/* GPIO34 has interrupt 225 on the PM8058 */
 97		/* Trig on both edges - getting close or far away */
 98		interrupts-extended = <&pm8058 225 IRQ_TYPE_EDGE_BOTH>;
 99		/* MPP05 analog input to the XOADC */
100		io-channels = <&xoadc 0x00 0x05>;
101		io-channel-names = "aout";
102		pinctrl-names = "default";
103		pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
104	};
 
105
106	soc {
107		pinctrl@800000 {
108			/* eMMMC pins, all 8 data lines connected */
109			dragon_sdcc1_pins: sdcc1 {
110				mux {
111					pins = "gpio159", "gpio160", "gpio161",
112					     "gpio162", "gpio163", "gpio164",
113					     "gpio165", "gpio166", "gpio167",
114					     "gpio168";
115					     function = "sdc1";
116				};
117				clk {
118					pins = "gpio167"; /* SDC1 CLK */
119					drive-strength = <16>;
120					bias-disable;
121				};
122				cmd {
123					pins = "gpio168"; /* SDC1 CMD */
124					drive-strength = <10>;
125					bias-pull-up;
126				};
127				data {
128					/* SDC1 D0 to D7 */
129					pins = "gpio159", "gpio160", "gpio161", "gpio162",
130					     "gpio163", "gpio164", "gpio165", "gpio166";
131					drive-strength = <10>;
132					bias-pull-up;
133				};
134			};
135
136			/*
137			 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
138			 * configuration.
139			 */
140			dragon_sdcc3_pins: sdcc3 {
141				clk {
142					pins = "sdc3_clk";
143					drive-strength = <8>;
144					bias-disable;
145				};
146				cmd {
147					pins = "sdc3_cmd";
148					drive-strength = <8>;
149					bias-pull-up;
150				};
151				data {
152					pins = "sdc3_data";
153					drive-strength = <8>;
154					bias-pull-up;
155				};
156			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
158			/* Second SD card slot pins */
159			dragon_sdcc5_pins: sdcc5 {
160				mux {
161					pins = "gpio95", "gpio96", "gpio97",
162					    "gpio98", "gpio99", "gpio100";
163					function = "sdc5";
164				};
165				clk {
166					pins = "gpio97"; /* SDC5 CLK */
167					drive-strength = <16>;
168					bias-disable;
169				};
170				cmd {
171					pins = "gpio95"; /* SDC5 CMD */
172					drive-strength = <10>;
173					bias-pull-up;
174				};
175				data {
176					/* SDC5 D0 to D3 */
177					pins = "gpio96", "gpio98", "gpio99", "gpio100";
178					drive-strength = <10>;
179					bias-pull-up;
180				};
181			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
183			dragon_gsbi8_i2c_pins: gsbi8_i2c {
184				mux {
185					pins = "gpio64", "gpio65";
186					function = "gsbi8";
187				};
188				pinconf {
189					pins = "gpio64", "gpio65";
190					drive-strength = <16>;
191					/* These have external pull-up 2.2kOhm to 1.8V */
192					bias-disable;
193				};
194			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
196			dragon_gsbi12_i2c_pins: gsbi12_i2c {
197				mux {
198					pins = "gpio115", "gpio116";
199					function = "gsbi12";
200				};
201				pinconf {
202					pins = "gpio115", "gpio116";
203					drive-strength = <16>;
204					/* These have external pull-up 4.7kOhm to 1.8V */
205					bias-disable;
206				};
207			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
209			/* Primary serial port uart 0 pins */
210			dragon_gsbi12_serial_pins: gsbi12_serial {
211				mux {
212					pins = "gpio117", "gpio118";
213					function = "gsbi12";
214				};
215				tx {
216					pins = "gpio117";
217					drive-strength = <8>;
218					bias-disable;
219				};
220				rx {
221					pins = "gpio118";
222					drive-strength = <2>;
223					bias-pull-up;
224				};
 
225			};
 
 
 
226
227			dragon_ebi2_pins: ebi2 {
228				/*
229				 * Pins used by EBI2 on the Dragonboard, actually only
230				 * CS2 is used by a real peripheral. CS0 is just
231				 * routed to a test point.
232				 */
233				mux0 {
234					pins =
235					    /* "gpio39", CS1A_N this is not good to mux */
236					    "gpio40", /* CS2A_N */
237					    "gpio134"; /* CS0_N testpoint TP29 */
238					function = "ebi2cs";
239				};
240				mux1 {
241					pins =
242					    /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */
243					    "gpio123", "gpio124", "gpio125", "gpio126",
244					    "gpio127", "gpio128", "gpio129", "gpio130",
245					    /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */
246					    "gpio135", "gpio136", "gpio137", "gpio138",
247					    "gpio139", "gpio140", "gpio141", "gpio142",
248					    "gpio143", "gpio144", "gpio145", "gpio146",
249					    "gpio147", "gpio148", "gpio149", "gpio150",
250					    "gpio151", /* EBI2_OE_N */
251					    "gpio153", /* EBI2_ADV */
252					    "gpio157"; /* EBI2_WE_N */
253					function = "ebi2";
254				};
255			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
256
257			/* Interrupt line for the KXSD9 accelerometer */
258			dragon_kxsd9_gpios: kxsd9 {
259				irq {
260					pins = "gpio57"; /* IRQ line */
261					bias-pull-up;
262				};
263			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264		};
 
 
265
266		qcom,ssbi@500000 {
267			pmic@0 {
268				keypad@148 {
269					linux,keymap = <
270					MATRIX_KEY(0, 0, KEY_MENU)
271					MATRIX_KEY(0, 2, KEY_1)
272					MATRIX_KEY(0, 3, KEY_4)
273					MATRIX_KEY(0, 4, KEY_7)
274					MATRIX_KEY(1, 0, KEY_UP)
275					MATRIX_KEY(1, 1, KEY_LEFT)
276					MATRIX_KEY(1, 2, KEY_DOWN)
277					MATRIX_KEY(1, 3, KEY_5)
278					MATRIX_KEY(1, 3, KEY_8)
279					MATRIX_KEY(2, 0, KEY_HOME)
280					MATRIX_KEY(2, 1, KEY_REPLY)
281					MATRIX_KEY(2, 2, KEY_2)
282					MATRIX_KEY(2, 3, KEY_6)
283					MATRIX_KEY(3, 0, KEY_VOLUMEUP)
284					MATRIX_KEY(3, 1, KEY_RIGHT)
285					MATRIX_KEY(3, 2, KEY_3)
286					MATRIX_KEY(3, 3, KEY_9)
287					MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
288					MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
289					MATRIX_KEY(4, 1, KEY_BACK)
290					MATRIX_KEY(4, 2, KEY_CAMERA)
291					MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
292					>;
293					keypad,num-rows = <6>;
294					keypad,num-columns = <5>;
295				};
296
297				gpio@150 {
298					dragon_ethernet_gpios: ethernet-gpios {
299						pinconf {
300							pins = "gpio7";
301							function = "normal";
302							input-enable;
303							bias-disable;
304							power-source = <PM8058_GPIO_S3>;
305						};
306					};
307					dragon_bmp085_gpios: bmp085-gpios {
308						pinconf {
309							pins = "gpio16";
310							function = "normal";
311							input-enable;
312							bias-disable;
313							power-source = <PM8058_GPIO_S3>;
314						};
315					};
316					dragon_mpu3050_gpios: mpu3050-gpios {
317						pinconf {
318							pins = "gpio17";
319							function = "normal";
320							input-enable;
321							bias-disable;
322							power-source = <PM8058_GPIO_S3>;
323						};
324					};
325					dragon_sdcc3_gpios: sdcc3-gpios {
326						pinconf {
327							pins = "gpio22";
328							function = "normal";
329							input-enable;
330							bias-disable;
331							power-source = <PM8058_GPIO_S3>;
332						};
333					};
334					dragon_sdcc5_gpios: sdcc5-gpios {
335						pinconf {
336							pins = "gpio26";
337							function = "normal";
338							input-enable;
339							bias-pull-up;
340							qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
341							power-source = <PM8058_GPIO_S3>;
342						};
343					};
344					dragon_ak8975_gpios: ak8975-gpios {
345						pinconf {
346							pins = "gpio33";
347							function = "normal";
348							input-enable;
349							bias-disable;
350							power-source = <PM8058_GPIO_S3>;
351						};
352					};
353					dragon_cm3605_gpios: cm3605-gpios {
354						/* Pin 34 connected to the proxy IRQ */
355						pinconf_gpio34 {
356							pins = "gpio34";
357							function = "normal";
358							input-enable;
359							bias-disable;
360							power-source = <PM8058_GPIO_S3>;
361						};
362						/* Pin 35 connected to ASET */
363						pinconf_gpio35 {
364							pins = "gpio35";
365							function = "normal";
366							output-high;
367							bias-disable;
368							power-source = <PM8058_GPIO_S3>;
369						};
370					};
371					dragon_veth_gpios: veth-gpios {
372						pinconf {
373							pins = "gpio40";
374							function = "normal";
375							bias-disable;
376							drive-push-pull;
377						};
378					};
379				};
380
381				mpps@50 {
382					dragon_cm3605_mpps: cm3605-mpps {
383						pinconf {
384							pins = "mpp5";
385							function = "analog";
386							input-enable;
387							bias-high-impedance;
388							/* Let's use channel 5 */
389							qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
390							power-source = <PM8058_GPIO_S3>;
391						};
392					};
393				};
394
395				xoadc@197 {
396					/* Reference voltage 2.2 V */
397					xoadc-ref-supply = <&pm8058_l18>;
398
399					/* Board-specific channels */
400					mpp5@5 {
401						/* Connected to AOUT of ALS sensor */
402						reg = <0x00 0x05>;
403					};
404					mpp6@6 {
405						/* Connected to test point TP43 */
406						reg = <0x00 0x06>;
407					};
408					mpp7@7 {
409						/* Connected to battery thermistor */
410						reg = <0x00 0x07>;
411					};
412					mpp8@8 {
413						/* Connected to battery ID detector */
414						reg = <0x00 0x08>;
415					};
416					mpp9@9 {
417						/* Connected to XO thermistor */
418						reg = <0x00 0x09>;
419					};
420				};
421
422				led@48 {
423					/*
424					 * The keypad LED @0x48 is routed to
425					 * the sensor board where it is
426					 * connected to an infrared LED
427					 * SFH4650 (60mW, @850nm) next to the
428					 * ambient light and proximity sensor
429					 * Capella Microsystems CM3605.
430					 */
431					compatible = "qcom,pm8058-keypad-led";
432					reg = <0x48>;
433					label = "pm8058:infrared:proximitysensor";
434					default-state = "off";
435					linux,default-trigger = "cm3605";
436				};
437				led@131 {
438					compatible = "qcom,pm8058-led";
439					reg = <0x131>;
440					label = "pm8058:red";
441					default-state = "off";
442				};
443				led@132 {
444					/*
445					 * This is actually green too on my
446					 * board, but documented as yellow.
447					 */
448					compatible = "qcom,pm8058-led";
449					reg = <0x132>;
450					label = "pm8058:yellow";
451					default-state = "off";
452					linux,default-trigger = "mmc0";
453				};
454				led@133 {
455					compatible = "qcom,pm8058-led";
456					reg = <0x133>;
457					label = "pm8058:green";
458					default-state = "on";
459					linux,default-trigger = "heartbeat";
460				};
461			};
462		};
463
464		gsbi@19800000 {
465			status = "ok";
466			qcom,mode = <GSBI_PROT_I2C>;
 
 
 
 
 
467
468			i2c@19880000 {
469				status = "ok";
470				pinctrl-names = "default";
471				pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
472
473				eeprom@52 {
474					/* A 16KiB Platform ID EEPROM on the CPU carrier board */
475					compatible = "atmel,24c128";
476					reg = <0x52>;
477					vcc-supply = <&pm8058_s3>;
478					pagesize = <64>;
479				};
480				wm8903: wm8903@1a {
481					/* This Woolfson Micro device has an unrouted interrupt line */
482					compatible = "wlf,wm8903";
483					reg = <0x1a>;
484
485					AVDD-supply = <&pm8058_l16>;
486					CPVDD-supply = <&pm8058_l16>;
487					DBVDD-supply = <&pm8058_s3>;
488					DCVDD-supply = <&pm8058_l0>;
489
490					gpio-controller;
491					#gpio-cells = <2>;
492
493					micdet-cfg = <0>;
494					micdet-delay = <100>;
495					gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
496				};
497			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498		};
499
500		gsbi@19c00000 {
501			status = "ok";
502			qcom,mode = <GSBI_PROT_I2C_UART>;
 
 
 
 
503
504			serial@19c40000 {
505				status = "ok";
506				pinctrl-names = "default";
507				pinctrl-0 = <&dragon_gsbi12_serial_pins>;
508			};
 
 
509
510			i2c@19c80000 {
511				status = "ok";
512				pinctrl-names = "default";
513				pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
515				ak8975@c {
516					compatible = "asahi-kasei,ak8975";
517					reg = <0x0c>;
518					/* FIXME: GPIO33 has interrupt 224 on the PM8058 */
519					interrupt-parent = <&pm8058>;
520					interrupts = <224 IRQ_TYPE_EDGE_RISING>;
521					pinctrl-names = "default";
522					pinctrl-0 = <&dragon_ak8975_gpios>;
523					vid-supply = <&pm8058_lvs0>; // 1.8V
524					vdd-supply = <&pm8058_l14>; // 2.85V
525				};
526				bmp085@77 {
527					compatible = "bosch,bmp085";
528					reg = <0x77>;
529					/* FIXME: GPIO16 has interrupt 207 on the PM8058 */
530					interrupt-parent = <&pm8058>;
531					interrupts = <207 IRQ_TYPE_EDGE_RISING>;
532					reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
533					pinctrl-names = "default";
534					pinctrl-0 = <&dragon_bmp085_gpios>;
535					vddd-supply = <&pm8058_lvs0>; // 1.8V
536					vdda-supply = <&pm8058_l14>; // 2.85V
537				};
538				mpu3050@68 {
539					compatible = "invensense,mpu3050";
540					reg = <0x68>;
541					/*
542					 * GPIO17 has interrupt 208 on the
543					 * PM8058, it is pulled high by a 10k
544					 * resistor to VLOGIC so needs to be
545					 * active low/falling edge.
546					 */
547					interrupts-extended = <&pm8058 208 IRQ_TYPE_EDGE_FALLING>;
548					pinctrl-names = "default";
549					pinctrl-0 = <&dragon_mpu3050_gpios>;
550					vlogic-supply = <&pm8058_lvs0>; // 1.8V
551					vdd-supply = <&pm8058_l14>; // 2.85V
552
553					/*
554					 * The MPU-3050 acts as a hub for the
555					 * accelerometer.
556					 */
557					i2c-gate {
558						#address-cells = <1>;
559						#size-cells = <0>;
560
561						kxsd9@18 {
562							compatible = "kionix,kxsd9";
563							reg = <0x18>;
564							interrupt-parent = <&tlmm>;
565							interrupts = <57 IRQ_TYPE_EDGE_FALLING>;
566							pinctrl-names = "default";
567							pinctrl-0 = <&dragon_kxsd9_gpios>;
568							iovdd-supply = <&pm8058_lvs0>; // 1.8V
569							vdd-supply = <&pm8058_l14>; // 2.85V
570						};
571					};
572				};
573			};
574		};
 
575
576		external-bus@1a100000 {
577			/* The EBI2 will instantiate first, then populate its children */
578			status = "ok";
579			pinctrl-names = "default";
580			pinctrl-0 = <&dragon_ebi2_pins>;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
582			/*
583			 * An on-board SMSC LAN9221 chip for "debug ethernet",
584			 * which is actually just an ordinary ethernet on the
585			 * EBI2. This has a 25MHz chrystal next to it, so no
586			 * clocking is needed.
587			 */
588			ethernet-ebi2@2,0 {
589				compatible = "smsc,lan9221", "smsc,lan9115";
590				reg = <2 0x0 0x100>;
591				/*
592				 * GPIO7 has interrupt 198 on the PM8058
593				 * The second interrupt is the PME interrupt
594				 * for network wakeup, connected to the TLMM.
595				 */
596				interrupts-extended = <&pm8058 198 IRQ_TYPE_EDGE_FALLING>,
597						    <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
598				reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
599				vdd33a-supply = <&dragon_veth>;
600				vddvario-supply = <&dragon_vario>;
601				pinctrl-names = "default";
602				pinctrl-0 = <&dragon_ethernet_gpios>;
603				phy-mode = "mii";
604				reg-io-width = <2>;
605				smsc,force-external-phy;
606				/* IRQ on edge falling = active low */
607				smsc,irq-active-low;
608				smsc,irq-push-pull;
609
610				/*
611				 * SLOW chipselect config
612				 * Delay 9 cycles (140ns@64MHz) between SMSC
613				 * LAN9221 Ethernet controller reads and writes
614				 * on CS2.
615				 */
616				qcom,xmem-recovery-cycles = <0>;
617				qcom,xmem-write-hold-cycles = <3>;
618				qcom,xmem-write-delta-cycles = <31>;
619				qcom,xmem-read-delta-cycles = <28>;
620				qcom,xmem-write-wait-cycles = <9>;
621				qcom,xmem-read-wait-cycles = <9>;
622			};
623		};
 
624
625		rpm@104000 {
626			/*
627			 * Set up of the PMIC RPM regulators for this board
628			 * PM8901 supplies "preliminary regulators" whatever
629			 * that means
630			 */
631			pm8901-regulators {
632				vdd_l0-supply = <&pm8901_s4>;
633				vdd_l1-supply = <&vph>;
634				vdd_l2-supply = <&vph>;
635				vdd_l3-supply = <&vph>;
636				vdd_l4-supply = <&vph>;
637				vdd_l5-supply = <&vph>;
638				vdd_l6-supply = <&vph>;
639				/* vdd_s0-supply, vdd_s1-supply: SAW regulators */
640				vdd_s2-supply = <&vph>;
641				vdd_s3-supply = <&vph>;
642				vdd_s4-supply = <&vph>;
643				lvs0_in-supply = <&pm8058_s3>;
644				lvs1_in-supply = <&pm8901_s4>;
645				lvs2_in-supply = <&pm8058_l0>;
646				lvs3_in-supply = <&pm8058_s2>;
647				mvs_in-supply = <&pm8058_s3>;
648
649				l0 {
650					regulator-min-microvolt = <1200000>;
651					regulator-max-microvolt = <1200000>;
652					bias-pull-down;
653				};
654				l1 {
655					regulator-min-microvolt = <3300000>;
656					regulator-max-microvolt = <3300000>;
657					bias-pull-down;
658				};
659				l2 {
660					regulator-min-microvolt = <2850000>;
661					regulator-max-microvolt = <3300000>;
662					bias-pull-down;
663				};
664				l3 {
665					regulator-min-microvolt = <3300000>;
666					regulator-max-microvolt = <3300000>;
667					bias-pull-down;
668				};
669				l4 {
670					regulator-min-microvolt = <2600000>;
671					regulator-max-microvolt = <2600000>;
672					bias-pull-down;
673				};
674				l5 {
675					regulator-min-microvolt = <2850000>;
676					regulator-max-microvolt = <2850000>;
677					bias-pull-down;
678				};
679				l6 {
680					regulator-min-microvolt = <2200000>;
681					regulator-max-microvolt = <2200000>;
682					bias-pull-down;
683				};
684
685				/* s0 and s1 are SAW regulators controlled over SPM */
686				s2 {
687					regulator-min-microvolt = <1300000>;
688					regulator-max-microvolt = <1300000>;
689					qcom,switch-mode-frequency = <1600000>;
690					bias-pull-down;
691				};
692				s3 {
693					regulator-min-microvolt = <1100000>;
694					regulator-max-microvolt = <1100000>;
695					qcom,switch-mode-frequency = <1600000>;
696					bias-pull-down;
697				};
698				s4 {
699					regulator-min-microvolt = <1225000>;
700					regulator-max-microvolt = <1225000>;
701					qcom,switch-mode-frequency = <1600000>;
702					bias-pull-down;
703				};
704
705				/* LVS0 thru 3 and mvs0 are just switches */
706				lvs0 {
707					regulator-always-on;
708				};
709				lvs1 { };
710				lvs2 { };
711				lvs3 { };
712				mvs0 {};
713
714			};
 
 
 
 
 
 
715
716			pm8058-regulators {
717				vdd_l0_l1_lvs-supply = <&pm8058_s3>;
718				vdd_l2_l11_l12-supply = <&vph>;
719				vdd_l3_l4_l5-supply = <&vph>;
720				vdd_l6_l7-supply = <&vph>;
721				vdd_l8-supply = <&vph>;
722				vdd_l9-supply = <&vph>;
723				vdd_l10-supply = <&vph>;
724				vdd_l13_l16-supply = <&pm8058_s4>;
725				vdd_l14_l15-supply = <&vph>;
726				vdd_l17_l18-supply = <&vph>;
727				vdd_l19_l20-supply = <&vph>;
728				vdd_l21-supply = <&pm8058_s3>;
729				vdd_l22-supply = <&pm8058_s3>;
730				vdd_l23_l24_l25-supply = <&pm8058_s3>;
731				vdd_s0-supply = <&vph>;
732				vdd_s1-supply = <&vph>;
733				vdd_s2-supply = <&vph>;
734				vdd_s3-supply = <&vph>;
735				vdd_s4-supply = <&vph>;
736				vdd_ncp-supply = <&vph>;
737
738				l0 {
739					regulator-min-microvolt = <1200000>;
740					regulator-max-microvolt = <1200000>;
741					bias-pull-down;
742				};
743				l1 {
744					regulator-min-microvolt = <1200000>;
745					regulator-max-microvolt = <1200000>;
746					bias-pull-down;
747				};
748				l2 {
749					regulator-min-microvolt = <1800000>;
750					regulator-max-microvolt = <2600000>;
751					bias-pull-down;
752				};
753				l3 {
754					regulator-min-microvolt = <1800000>;
755					regulator-max-microvolt = <1800000>;
756					bias-pull-down;
757				};
758				l4 {
759					regulator-min-microvolt = <2850000>;
760					regulator-max-microvolt = <2850000>;
761					bias-pull-down;
762				};
763				l5 {
764					regulator-min-microvolt = <2850000>;
765					regulator-max-microvolt = <2850000>;
766					bias-pull-down;
767				};
768				l6 {
769					regulator-min-microvolt = <3000000>;
770					regulator-max-microvolt = <3600000>;
771					bias-pull-down;
772				};
773				l7 {
774					regulator-min-microvolt = <1800000>;
775					regulator-max-microvolt = <1800000>;
776					bias-pull-down;
777				};
778				l8 {
779					regulator-min-microvolt = <2900000>;
780					regulator-max-microvolt = <3050000>;
781					bias-pull-down;
782				};
783				l9 {
784					regulator-min-microvolt = <1800000>;
785					regulator-max-microvolt = <1800000>;
786					bias-pull-down;
787				};
788				l10 {
789					regulator-min-microvolt = <2600000>;
790					regulator-max-microvolt = <2600000>;
791					bias-pull-down;
792				};
793				l11 {
794					regulator-min-microvolt = <1500000>;
795					regulator-max-microvolt = <1500000>;
796					bias-pull-down;
797				};
798				l12 {
799					regulator-min-microvolt = <2900000>;
800					regulator-max-microvolt = <2900000>;
801					bias-pull-down;
802				};
803				l13 {
804					regulator-min-microvolt = <2050000>;
805					regulator-max-microvolt = <2050000>;
806					bias-pull-down;
807				};
808				l14 {
809					regulator-min-microvolt = <2850000>;
810					regulator-max-microvolt = <2850000>;
811				};
812				l15 {
813					regulator-min-microvolt = <2850000>;
814					regulator-max-microvolt = <2850000>;
815					bias-pull-down;
816				};
817				l16 {
818					regulator-min-microvolt = <1800000>;
819					regulator-max-microvolt = <1800000>;
820					bias-pull-down;
821					regulator-always-on;
822				};
823				l17 {
824					// 1.5V according to schematic
825					regulator-min-microvolt = <2600000>;
826					regulator-max-microvolt = <2600000>;
827					bias-pull-down;
828				};
829				l18 {
830					regulator-min-microvolt = <2200000>;
831					regulator-max-microvolt = <2200000>;
832					bias-pull-down;
833				};
834				l19 {
835					regulator-min-microvolt = <2500000>;
836					regulator-max-microvolt = <2500000>;
837					bias-pull-down;
838				};
839				l20 {
840					regulator-min-microvolt = <1800000>;
841					regulator-max-microvolt = <1800000>;
842					bias-pull-down;
843				};
844				l21 {
845					// 1.1 V according to schematic
846					regulator-min-microvolt = <1200000>;
847					regulator-max-microvolt = <1200000>;
848					bias-pull-down;
849					regulator-always-on;
850				};
851				l22 {
852					// 1.2 V according to schematic
853					regulator-min-microvolt = <1150000>;
854					regulator-max-microvolt = <1150000>;
855					bias-pull-down;
856				};
857				l23 {
858					// Unused
859					regulator-min-microvolt = <1200000>;
860					regulator-max-microvolt = <1200000>;
861					bias-pull-down;
862				};
863				l24 {
864					// Unused
865					regulator-min-microvolt = <1200000>;
866					regulator-max-microvolt = <1200000>;
867					bias-pull-down;
868				};
869				l25 {
870					regulator-min-microvolt = <1200000>;
871					regulator-max-microvolt = <1200000>;
872					bias-pull-down;
873				};
874
875				s0 {
876					// regulator-min-microvolt = <500000>;
877					// regulator-max-microvolt = <1325000>;
878					regulator-min-microvolt = <1100000>;
879					regulator-max-microvolt = <1100000>;
880					qcom,switch-mode-frequency = <1600000>;
881					bias-pull-down;
882				};
883				s1 {
884					// regulator-min-microvolt = <500000>;
885					// regulator-max-microvolt = <1250000>;
886					regulator-min-microvolt = <1100000>;
887					regulator-max-microvolt = <1100000>;
888					qcom,switch-mode-frequency = <1600000>;
889					bias-pull-down;
890				};
891				s2 {
892					// 1.3 V according to schematic
893					regulator-min-microvolt = <1200000>;
894					regulator-max-microvolt = <1400000>;
895					qcom,switch-mode-frequency = <1600000>;
896					bias-pull-down;
897				};
898				s3 {
899					regulator-min-microvolt = <1800000>;
900					regulator-max-microvolt = <1800000>;
901					qcom,switch-mode-frequency = <1600000>;
902					regulator-always-on;
903					bias-pull-down;
904				};
905				s4 {
906					regulator-min-microvolt = <2200000>;
907					regulator-max-microvolt = <2200000>;
908					qcom,switch-mode-frequency = <1600000>;
909					regulator-always-on;
910					bias-pull-down;
911				};
912
913				/* LVS0 and LVS1 are just switches */
914				lvs0 {
915					bias-pull-down;
916				};
917				lvs1 {
918					bias-pull-down;
919				};
920
921				ncp {
922					regulator-min-microvolt = <1800000>;
923					regulator-max-microvolt = <1800000>;
924					qcom,switch-mode-frequency = <1600000>;
925				};
926			};
927		};
928		amba {
929			/* Internal 3.69 GiB eMMC */
930			sdcc@12400000 {
931				status = "okay";
932				pinctrl-names = "default";
933				pinctrl-0 = <&dragon_sdcc1_pins>;
934				vmmc-supply = <&pm8901_l5>;
935				vqmmc-supply = <&pm8901_lvs0>;
936			};
937
938			/* External micro SD card, directly connected, pulled up to 2.85 V */
939			sdcc@12180000 {
940				status = "okay";
941				/* Enable SSBI GPIO 22 as input, use for card detect */
942				pinctrl-names = "default";
943				pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
944				cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
945				wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
946				vmmc-supply = <&pm8058_l14>;
947			};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
948
949			/*
950			 * Second external micro SD card, using two TXB104RGYR levelshifters
951			 * to lift from 1.8 V to 2.85 V
952			 */
953			sdcc@12200000 {
954				status = "okay";
955				/* Enable SSBI GPIO 26 as input, use for card detect */
956				pinctrl-names = "default";
957				pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
958				cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
959				wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
960				vmmc-supply = <&pm8058_l14>;
961				vqmmc-supply = <&dragon_vio_txb>;
962			};
 
 
 
 
 
 
963		};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
964	};
965};
v6.2
  1// SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  2#include <dt-bindings/input/input.h>
  3#include <dt-bindings/gpio/gpio.h>
  4#include <dt-bindings/leds/common.h>
  5#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
  6#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
  7#include "qcom-msm8660.dtsi"
  8
  9/ {
 10	model = "Qualcomm APQ8060 Dragonboard";
 11	compatible = "qcom,apq8060-dragonboard", "qcom,msm8660";
 12
 13	aliases {
 14		serial0 = &gsbi12_serial;
 15	};
 16
 17	chosen {
 18		stdout-path = "serial0:115200n8";
 19	};
 20
 21	regulators {
 22		compatible = "simple-bus";
 23
 24		/* Main power of the board: 3.7V */
 25		vph: regulator-fixed {
 26			compatible = "regulator-fixed";
 27			regulator-min-microvolt = <3700000>;
 28			regulator-max-microvolt = <3700000>;
 29			regulator-name = "VPH";
 30			regulator-type = "voltage";
 31			regulator-always-on;
 32			regulator-boot-on;
 33		};
 34
 35		/* GPIO controlled ethernet power regulator */
 36		dragon_veth: xc622a331mrg {
 37			compatible = "regulator-fixed";
 38			regulator-name = "XC6222A331MR-G";
 39			regulator-min-microvolt = <3300000>;
 40			regulator-max-microvolt = <3300000>;
 41			vin-supply = <&vph>;
 42			gpio = <&pm8058_gpio 40 GPIO_ACTIVE_HIGH>;
 43			enable-active-high;
 44			pinctrl-names = "default";
 45			pinctrl-0 = <&dragon_veth_gpios>;
 46			regulator-always-on;
 47		};
 48
 49		/* VDDvario fixed regulator */
 50		dragon_vario: nds332p {
 51			compatible = "regulator-fixed";
 52			regulator-name = "NDS332P";
 53			regulator-min-microvolt = <1800000>;
 54			regulator-max-microvolt = <1800000>;
 55			vin-supply = <&pm8058_s3>;
 56		};
 57
 58		/* This is a levelshifter for SDCC5 */
 59		dragon_vio_txb: txb0104rgyr {
 60			compatible = "regulator-fixed";
 61			regulator-name = "Dragon SDCC levelshifter";
 62			vin-supply = <&pm8058_l14>;
 63			regulator-always-on;
 64		};
 65	};
 66
 67	/*
 68	 * Capella CM3605 light and proximity sensor mounted directly
 69	 * on the sensor board.
 70	 */
 71	cm3605 {
 72		compatible = "capella,cm3605";
 73		vdd-supply = <&pm8058_l14>; // 2.85V
 74		aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>;
 75		capella,aset-resistance-ohms = <100000>;
 
 76		/* Trig on both edges - getting close or far away */
 77		interrupts-extended = <&pm8058_gpio 34 IRQ_TYPE_EDGE_BOTH>;
 78		/* MPP05 analog input to the XOADC */
 79		io-channels = <&xoadc 0x00 0x05>;
 80		io-channel-names = "aout";
 81		pinctrl-names = "default";
 82		pinctrl-0 = <&dragon_cm3605_gpios>, <&dragon_cm3605_mpps>;
 83	};
 84};
 85
 86&ebi2 {
 87	/* The EBI2 will instantiate first, then populate its children */
 88	pinctrl-names = "default";
 89	pinctrl-0 = <&dragon_ebi2_pins>;
 90	status = "okay";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 91
 92	/*
 93	 * An on-board SMSC LAN9221 chip for "debug ethernet",
 94	 * which is actually just an ordinary ethernet on the
 95	 * EBI2. This has a 25MHz chrystal next to it, so no
 96	 * clocking is needed.
 97	 */
 98	ethernet@2,0 {
 99		compatible = "smsc,lan9221", "smsc,lan9115";
100		reg = <2 0x0 0x100>;
101		/*
102		 * The second interrupt is the PME interrupt
103		 * for network wakeup, connected to the TLMM.
104		 */
105		interrupts-extended = <&pm8058_gpio 7 IRQ_TYPE_EDGE_FALLING>,
106				    <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
107		reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
108		vdd33a-supply = <&dragon_veth>;
109		vddvario-supply = <&dragon_vario>;
110		pinctrl-names = "default";
111		pinctrl-0 = <&dragon_ethernet_gpios>;
112		phy-mode = "mii";
113		reg-io-width = <2>;
114		smsc,force-external-phy;
115		smsc,irq-push-pull;
116
117		/*
118		 * SLOW chipselect config
119		 * Delay 9 cycles (140ns@64MHz) between SMSC
120		 * LAN9221 Ethernet controller reads and writes
121		 * on CS2.
122		 */
123		qcom,xmem-recovery-cycles = <0>;
124		qcom,xmem-write-hold-cycles = <3>;
125		qcom,xmem-write-delta-cycles = <31>;
126		qcom,xmem-read-delta-cycles = <28>;
127		qcom,xmem-write-wait-cycles = <9>;
128		qcom,xmem-read-wait-cycles = <9>;
129	};
130};
131
132&gsbi3 {
133	qcom,mode = <GSBI_PROT_I2C>;
134	status = "okay";
135};
136
137&gsbi3_i2c {
138	pinctrl-names = "default";
139	pinctrl-0 = <&dragon_gsbi3_i2c_pins>;
140	status = "okay";
141
142	touchscreen@24 {
143		compatible = "cypress,cy8ctma340";
144		reg = <0x24>;
145		/* Certainly we can do at least 400 kHz */
146		clock-frequency = <400000>;
147		/* IRQ on GPIO61 called /CTP_INT */
148		interrupt-parent = <&tlmm>;
149		interrupts = <61 IRQ_TYPE_EDGE_FALLING>;
150		/*
151		 * The I2C bus is using a PCA9306 level translator from L16A
152		 * to L2B so these two voltages are needed and L16A is
153		 * kind of the IO voltage, however L16Aisn't really fed to
154		 * the TMA340, which relies entirely on L2B (PM8901 L2).
155		 */
156		vcpin-supply = <&pm8058_l16>;
157		vdd-supply = <&pm8901_l2>;
158		/* GPIO58, called WAKE_CTP */
159		reset-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
160		touchscreen-size-x = <480>;
161		touchscreen-size-y = <800>;
162		active-interval-ms = <0>;
163		touch-timeout-ms = <255>;
164		lowpower-interval-ms = <10>;
165		bootloader-key = /bits/ 8 <0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07>;
166		pinctrl-names = "default";
167		pinctrl-0 = <&dragon_tma340_gpios>;
168	};
169};
170
171&gsbi8 {
172	qcom,mode = <GSBI_PROT_I2C>;
173	status = "okay";
174};
175
176&gsbi8_i2c {
177	pinctrl-names = "default";
178	pinctrl-0 = <&dragon_gsbi8_i2c_pins>;
179	status = "okay";
180
181	eeprom@52 {
182		/* A 16KiB Platform ID EEPROM on the CPU carrier board */
183		compatible = "atmel,24c128";
184		reg = <0x52>;
185		vcc-supply = <&pm8058_s3>;
186		pagesize = <64>;
187	};
188	wm8903: wm8903@1a {
189		/* This Woolfson Micro device has an unrouted interrupt line */
190		compatible = "wlf,wm8903";
191		reg = <0x1a>;
192
193		AVDD-supply = <&pm8058_l16>;
194		CPVDD-supply = <&pm8058_l16>;
195		DBVDD-supply = <&pm8058_s3>;
196		DCVDD-supply = <&pm8058_l0>;
197
198		gpio-controller;
199		#gpio-cells = <2>;
200
201		micdet-cfg = <0>;
202		micdet-delay = <100>;
203		gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
204	};
205};
206
207&gsbi12 {
208	qcom,mode = <GSBI_PROT_I2C_UART>;
209	status = "okay";
210};
211
212&gsbi12_serial {
213	pinctrl-names = "default";
214	pinctrl-0 = <&dragon_gsbi12_serial_pins>;
215	status = "okay";
216};
217
218&gsbi12_i2c {
219	pinctrl-names = "default";
220	pinctrl-0 = <&dragon_gsbi12_i2c_pins>;
221	status = "okay";
222
223	ak8975@c {
224		compatible = "asahi-kasei,ak8975";
225		reg = <0x0c>;
226		interrupt-parent = <&pm8058_gpio>;
227		interrupts = <33 IRQ_TYPE_EDGE_RISING>;
228		pinctrl-names = "default";
229		pinctrl-0 = <&dragon_ak8975_gpios>;
230		vid-supply = <&pm8058_lvs0>; // 1.8V
231		vdd-supply = <&pm8058_l14>; // 2.85V
232	};
233	bmp085@77 {
234		compatible = "bosch,bmp085";
235		reg = <0x77>;
236		interrupt-parent = <&pm8058_gpio>;
237		interrupts = <16 IRQ_TYPE_EDGE_RISING>;
238		reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
239		pinctrl-names = "default";
240		pinctrl-0 = <&dragon_bmp085_gpios>;
241		vddd-supply = <&pm8058_lvs0>; // 1.8V
242		vdda-supply = <&pm8058_l14>; // 2.85V
243	};
244	mpu3050@68 {
245		compatible = "invensense,mpu3050";
246		reg = <0x68>;
247		/*
248		 * GPIO17 is pulled high by a 10k
249		 * resistor to VLOGIC so needs to be
250		 * active low/falling edge.
251		 */
252		interrupts-extended = <&pm8058_gpio 17 IRQ_TYPE_EDGE_FALLING>;
253		pinctrl-names = "default";
254		pinctrl-0 = <&dragon_mpu3050_gpios>;
255		vlogic-supply = <&pm8058_lvs0>; // 1.8V
256		vdd-supply = <&pm8058_l14>; // 2.85V
257
258		/*
259		 * The MPU-3050 acts as a hub for the
260		 * accelerometer.
261		 */
262		i2c-gate {
263			#address-cells = <1>;
264			#size-cells = <0>;
265
266			kxsd9@18 {
267				compatible = "kionix,kxsd9";
268				reg = <0x18>;
269				interrupt-parent = <&tlmm>;
270				interrupts = <57 IRQ_TYPE_EDGE_FALLING>;
271				pinctrl-names = "default";
272				pinctrl-0 = <&dragon_kxsd9_gpios>;
273				iovdd-supply = <&pm8058_lvs0>; // 1.8V
274				vdd-supply = <&pm8058_l14>; // 2.85V
275			};
276		};
277	};
278};
279
280&pm8058_gpio {
281	dragon_ethernet_gpios: ethernet-state {
282		pinconf {
283			pins = "gpio7";
284			function = "normal";
285			input-enable;
286			bias-disable;
287			power-source = <PM8058_GPIO_S3>;
288		};
289	};
290	dragon_bmp085_gpios: bmp085-state {
291		pinconf {
292			pins = "gpio16";
293			function = "normal";
294			input-enable;
295			bias-disable;
296			power-source = <PM8058_GPIO_S3>;
297		};
298	};
299	dragon_mpu3050_gpios: mpu3050-state {
300		pinconf {
301			pins = "gpio17";
302			function = "normal";
303			input-enable;
304			bias-disable;
305			power-source = <PM8058_GPIO_S3>;
306		};
307	};
308	dragon_sdcc3_gpios: sdcc3-state {
309		pinconf {
310			pins = "gpio22";
311			function = "normal";
312			input-enable;
313			bias-disable;
314			power-source = <PM8058_GPIO_S3>;
315		};
316	};
317	dragon_sdcc5_gpios: sdcc5-state {
318		pinconf {
319			pins = "gpio26";
320			function = "normal";
321			input-enable;
322			bias-pull-up;
323			qcom,pull-up-strength = <PMIC_GPIO_PULL_UP_30>;
324			power-source = <PM8058_GPIO_S3>;
325		};
326	};
327	dragon_ak8975_gpios: ak8975-state {
328		pinconf {
329			pins = "gpio33";
330			function = "normal";
331			input-enable;
332			bias-disable;
333			power-source = <PM8058_GPIO_S3>;
334		};
335	};
336	dragon_cm3605_gpios: cm3605-state {
337		/* Pin 34 connected to the proxy IRQ */
338		gpio34-pins {
339			pins = "gpio34";
340			function = "normal";
341			input-enable;
342			bias-disable;
343			power-source = <PM8058_GPIO_S3>;
344		};
345		/* Pin 35 connected to ASET */
346		gpio35-pins {
347			pins = "gpio35";
348			function = "normal";
349			output-high;
350			bias-disable;
351			power-source = <PM8058_GPIO_S3>;
352		};
353	};
354	dragon_veth_gpios: veth-state {
355		pinconf {
356			pins = "gpio40";
357			function = "normal";
358			bias-disable;
359			drive-push-pull;
360		};
361	};
362};
363
364&pm8058_keypad {
365	linux,keymap = <
366		MATRIX_KEY(0, 0, KEY_MENU)
367		MATRIX_KEY(0, 2, KEY_1)
368		MATRIX_KEY(0, 3, KEY_4)
369		MATRIX_KEY(0, 4, KEY_7)
370		MATRIX_KEY(1, 0, KEY_UP)
371		MATRIX_KEY(1, 1, KEY_LEFT)
372		MATRIX_KEY(1, 2, KEY_DOWN)
373		MATRIX_KEY(1, 3, KEY_5)
374		MATRIX_KEY(1, 3, KEY_8)
375		MATRIX_KEY(2, 0, KEY_HOME)
376		MATRIX_KEY(2, 1, KEY_REPLY)
377		MATRIX_KEY(2, 2, KEY_2)
378		MATRIX_KEY(2, 3, KEY_6)
379		MATRIX_KEY(3, 0, KEY_VOLUMEUP)
380		MATRIX_KEY(3, 1, KEY_RIGHT)
381		MATRIX_KEY(3, 2, KEY_3)
382		MATRIX_KEY(3, 3, KEY_9)
383		MATRIX_KEY(3, 4, KEY_SWITCHVIDEOMODE)
384		MATRIX_KEY(4, 0, KEY_VOLUMEDOWN)
385		MATRIX_KEY(4, 1, KEY_BACK)
386		MATRIX_KEY(4, 2, KEY_CAMERA)
387		MATRIX_KEY(4, 3, KEY_KBDILLUMTOGGLE)
388	>;
389	keypad,num-rows = <6>;
390	keypad,num-columns = <5>;
391};
392
393&pm8058_led48 {
394	/*
395	 * The keypad LED @0x48 is routed to
396	 * the sensor board where it is
397	 * connected to an infrared LED
398	 * SFH4650 (60mW, @850nm) next to the
399	 * ambient light and proximity sensor
400	 * Capella Microsystems CM3605.
401	 */
402	label = "pm8058:infrared:proximitysensor";
403	default-state = "off";
404	linux,default-trigger = "cm3605";
405	status = "okay";
406};
407
408&pm8058_led131 {
409	label = "pm8058:red";
410	color = <LED_COLOR_ID_RED>;
411	default-state = "off";
412	status = "okay";
413};
414
415&pm8058_led132 {
416	/*
417	 * This is actually green too on my
418	 * board, but documented as yellow.
419	 */
420	label = "pm8058:yellow";
421	color = <LED_COLOR_ID_YELLOW>;
422	default-state = "off";
423	linux,default-trigger = "mmc0";
424	status = "okay";
425};
426
427&pm8058_led133 {
428	label = "pm8058:green";
429	function = LED_FUNCTION_HEARTBEAT;
430	color = <LED_COLOR_ID_GREEN>;
431	default-state = "on";
432	linux,default-trigger = "heartbeat";
433	status = "okay";
434};
435
436&pm8058_mpps {
437	dragon_cm3605_mpps: cm3605-mpps-state {
438		mpp5 {
439			pins = "mpp5";
440			function = "analog";
441			input-enable;
442			bias-high-impedance;
443			/* Let's use channel 5 */
444			qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
445			power-source = <PM8058_GPIO_S3>;
446		};
447	};
448};
449
450&rpm {
451	/*
452	 * Set up of the PMIC RPM regulators for this board
453	 * PM8901 supplies "preliminary regulators" whatever
454	 * that means
455	 */
456	pm8901-regulators {
457		vdd_l0-supply = <&pm8901_s4>;
458		vdd_l1-supply = <&vph>;
459		vdd_l2-supply = <&vph>;
460		vdd_l3-supply = <&vph>;
461		vdd_l4-supply = <&vph>;
462		vdd_l5-supply = <&vph>;
463		vdd_l6-supply = <&vph>;
464		/* vdd_s0-supply, vdd_s1-supply: SAW regulators */
465		vdd_s2-supply = <&vph>;
466		vdd_s3-supply = <&vph>;
467		vdd_s4-supply = <&vph>;
468		lvs0_in-supply = <&pm8058_s3>;
469		lvs1_in-supply = <&pm8901_s4>;
470		lvs2_in-supply = <&pm8058_l0>;
471		lvs3_in-supply = <&pm8058_s2>;
472		mvs_in-supply = <&pm8058_s3>;
473
474		l0 {
475			regulator-min-microvolt = <1200000>;
476			regulator-max-microvolt = <1200000>;
477			bias-pull-down;
478		};
479		l1 {
480			regulator-min-microvolt = <3300000>;
481			regulator-max-microvolt = <3300000>;
482			bias-pull-down;
483		};
484		l2 {
485			/* TMA340 requires strictly 3.3V */
486			regulator-min-microvolt = <3300000>;
487			regulator-max-microvolt = <3300000>;
488			bias-pull-down;
489		};
490		l3 {
491			regulator-min-microvolt = <3300000>;
492			regulator-max-microvolt = <3300000>;
493			bias-pull-down;
494		};
495		l4 {
496			regulator-min-microvolt = <2600000>;
497			regulator-max-microvolt = <2600000>;
498			bias-pull-down;
499		};
500		l5 {
501			regulator-min-microvolt = <2850000>;
502			regulator-max-microvolt = <2850000>;
503			bias-pull-down;
504		};
505		l6 {
506			regulator-min-microvolt = <2200000>;
507			regulator-max-microvolt = <2200000>;
508			bias-pull-down;
509		};
510
511		/* s0 and s1 are SAW regulators controlled over SPM */
512		s2 {
513			regulator-min-microvolt = <1300000>;
514			regulator-max-microvolt = <1300000>;
515			qcom,switch-mode-frequency = <1600000>;
516			bias-pull-down;
517		};
518		s3 {
519			regulator-min-microvolt = <1100000>;
520			regulator-max-microvolt = <1100000>;
521			qcom,switch-mode-frequency = <1600000>;
522			bias-pull-down;
523		};
524		s4 {
525			regulator-min-microvolt = <1225000>;
526			regulator-max-microvolt = <1225000>;
527			qcom,switch-mode-frequency = <1600000>;
528			bias-pull-down;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
529		};
530
531		/* LVS0 thru 3 and mvs are just switches */
532		lvs0 {
533			regulator-always-on;
534		};
535		lvs1 { };
536		lvs2 { };
537		lvs3 { };
538		mvs { };
539
540	};
 
 
 
541
542	pm8058-regulators {
543		vdd_l0_l1_lvs-supply = <&pm8058_s3>;
544		vdd_l2_l11_l12-supply = <&vph>;
545		vdd_l3_l4_l5-supply = <&vph>;
546		vdd_l6_l7-supply = <&vph>;
547		vdd_l8-supply = <&vph>;
548		vdd_l9-supply = <&vph>;
549		vdd_l10-supply = <&vph>;
550		vdd_l13_l16-supply = <&pm8058_s4>;
551		vdd_l14_l15-supply = <&vph>;
552		vdd_l17_l18-supply = <&vph>;
553		vdd_l19_l20-supply = <&vph>;
554		vdd_l21-supply = <&pm8058_s3>;
555		vdd_l22-supply = <&pm8058_s3>;
556		vdd_l23_l24_l25-supply = <&pm8058_s3>;
557		vdd_s0-supply = <&vph>;
558		vdd_s1-supply = <&vph>;
559		vdd_s2-supply = <&vph>;
560		vdd_s3-supply = <&vph>;
561		vdd_s4-supply = <&vph>;
562		vdd_ncp-supply = <&vph>;
563
564		l0 {
565			regulator-min-microvolt = <1200000>;
566			regulator-max-microvolt = <1200000>;
567			bias-pull-down;
568		};
569		l1 {
570			regulator-min-microvolt = <1200000>;
571			regulator-max-microvolt = <1200000>;
572			bias-pull-down;
573		};
574		l2 {
575			regulator-min-microvolt = <1800000>;
576			regulator-max-microvolt = <2600000>;
577			bias-pull-down;
578		};
579		l3 {
580			regulator-min-microvolt = <1800000>;
581			regulator-max-microvolt = <1800000>;
582			bias-pull-down;
583		};
584		l4 {
585			regulator-min-microvolt = <2850000>;
586			regulator-max-microvolt = <2850000>;
587			bias-pull-down;
588		};
589		l5 {
590			regulator-min-microvolt = <2850000>;
591			regulator-max-microvolt = <2850000>;
592			bias-pull-down;
593		};
594		l6 {
595			regulator-min-microvolt = <3000000>;
596			regulator-max-microvolt = <3600000>;
597			bias-pull-down;
598		};
599		l7 {
600			regulator-min-microvolt = <1800000>;
601			regulator-max-microvolt = <1800000>;
602			bias-pull-down;
603		};
604		l8 {
605			regulator-min-microvolt = <2900000>;
606			regulator-max-microvolt = <3050000>;
607			bias-pull-down;
608		};
609		l9 {
610			regulator-min-microvolt = <1800000>;
611			regulator-max-microvolt = <1800000>;
612			bias-pull-down;
613		};
614		l10 {
615			regulator-min-microvolt = <2600000>;
616			regulator-max-microvolt = <2600000>;
617			bias-pull-down;
618		};
619		l11 {
620			regulator-min-microvolt = <1500000>;
621			regulator-max-microvolt = <1500000>;
622			bias-pull-down;
623		};
624		l12 {
625			regulator-min-microvolt = <2900000>;
626			regulator-max-microvolt = <2900000>;
627			bias-pull-down;
628		};
629		l13 {
630			regulator-min-microvolt = <2050000>;
631			regulator-max-microvolt = <2050000>;
632			bias-pull-down;
633		};
634		l14 {
635			regulator-min-microvolt = <2850000>;
636			regulator-max-microvolt = <2850000>;
637		};
638		l15 {
639			regulator-min-microvolt = <2850000>;
640			regulator-max-microvolt = <2850000>;
641			bias-pull-down;
642		};
643		l16 {
644			regulator-min-microvolt = <1800000>;
645			regulator-max-microvolt = <1800000>;
646			bias-pull-down;
647			regulator-always-on;
648		};
649		l17 {
650			// 1.5V according to schematic
651			regulator-min-microvolt = <2600000>;
652			regulator-max-microvolt = <2600000>;
653			bias-pull-down;
654		};
655		l18 {
656			regulator-min-microvolt = <2200000>;
657			regulator-max-microvolt = <2200000>;
658			bias-pull-down;
659		};
660		l19 {
661			regulator-min-microvolt = <2500000>;
662			regulator-max-microvolt = <2500000>;
663			bias-pull-down;
664		};
665		l20 {
666			regulator-min-microvolt = <1800000>;
667			regulator-max-microvolt = <1800000>;
668			bias-pull-down;
669		};
670		l21 {
671			// 1.1 V according to schematic
672			regulator-min-microvolt = <1200000>;
673			regulator-max-microvolt = <1200000>;
674			bias-pull-down;
675			regulator-always-on;
676		};
677		l22 {
678			// 1.2 V according to schematic
679			regulator-min-microvolt = <1150000>;
680			regulator-max-microvolt = <1150000>;
681			bias-pull-down;
682		};
683		l23 {
684			// Unused
685			regulator-min-microvolt = <1200000>;
686			regulator-max-microvolt = <1200000>;
687			bias-pull-down;
688		};
689		l24 {
690			// Unused
691			regulator-min-microvolt = <1200000>;
692			regulator-max-microvolt = <1200000>;
693			bias-pull-down;
694		};
695		l25 {
696			regulator-min-microvolt = <1200000>;
697			regulator-max-microvolt = <1200000>;
698			bias-pull-down;
699		};
700
701		s0 {
702			// regulator-min-microvolt = <500000>;
703			// regulator-max-microvolt = <1325000>;
704			regulator-min-microvolt = <1100000>;
705			regulator-max-microvolt = <1100000>;
706			qcom,switch-mode-frequency = <1600000>;
707			bias-pull-down;
708		};
709		s1 {
710			// regulator-min-microvolt = <500000>;
711			// regulator-max-microvolt = <1250000>;
712			regulator-min-microvolt = <1100000>;
713			regulator-max-microvolt = <1100000>;
714			qcom,switch-mode-frequency = <1600000>;
715			bias-pull-down;
716		};
717		s2 {
718			// 1.3 V according to schematic
719			regulator-min-microvolt = <1200000>;
720			regulator-max-microvolt = <1400000>;
721			qcom,switch-mode-frequency = <1600000>;
722			bias-pull-down;
723		};
724		s3 {
725			regulator-min-microvolt = <1800000>;
726			regulator-max-microvolt = <1800000>;
727			qcom,switch-mode-frequency = <1600000>;
728			regulator-always-on;
729			bias-pull-down;
730		};
731		s4 {
732			regulator-min-microvolt = <2200000>;
733			regulator-max-microvolt = <2200000>;
734			qcom,switch-mode-frequency = <1600000>;
735			regulator-always-on;
736			bias-pull-down;
737		};
738
739		/* LVS0 and LVS1 are just switches */
740		lvs0 {
741			bias-pull-down;
742		};
743		lvs1 {
744			bias-pull-down;
745		};
746
747		ncp {
748			regulator-min-microvolt = <1800000>;
749			regulator-max-microvolt = <1800000>;
750			qcom,switch-mode-frequency = <1600000>;
751		};
752	};
753};
754
755/* Internal 3.69 GiB eMMC */
756&sdcc1 {
757	pinctrl-names = "default";
758	pinctrl-0 = <&dragon_sdcc1_pins>;
759	vmmc-supply = <&pm8901_l5>;
760	vqmmc-supply = <&pm8901_lvs0>;
761	status = "okay";
762};
763
764/* External micro SD card, directly connected, pulled up to 2.85 V */
765&sdcc3 {
766	/* Enable SSBI GPIO 22 as input, use for card detect */
767	pinctrl-names = "default";
768	pinctrl-0 = <&dragon_sdcc3_pins>, <&dragon_sdcc3_gpios>;
769	cd-gpios = <&pm8058_gpio 22 GPIO_ACTIVE_LOW>;
770	wp-gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
771	vmmc-supply = <&pm8058_l14>;
772	status = "okay";
773};
774
775/*
776 * Second external micro SD card, using two TXB104RGYR levelshifters
777 * to lift from 1.8 V to 2.85 V
778 */
779&sdcc5 {
780	/* Enable SSBI GPIO 26 as input, use for card detect */
781	pinctrl-names = "default";
782	pinctrl-0 = <&dragon_sdcc5_pins>, <&dragon_sdcc5_gpios>;
783	cd-gpios = <&pm8058_gpio 26 GPIO_ACTIVE_LOW>;
784	wp-gpios = <&tlmm 106 GPIO_ACTIVE_HIGH>;
785	vmmc-supply = <&pm8058_l14>;
786	vqmmc-supply = <&dragon_vio_txb>;
787	status = "okay";
788};
789
790&tlmm {
791	/* eMMC pins, all 8 data lines connected */
792	dragon_sdcc1_pins: sdcc1-state {
793		clk-pins {
794			pins = "gpio167"; /* SDC1 CLK */
795			function = "sdc1";
796			drive-strength = <16>;
797			bias-disable;
798		};
799		cmd-pins {
800			pins = "gpio168"; /* SDC1 CMD */
801			function = "sdc1";
802			drive-strength = <10>;
803			bias-pull-up;
804		};
805		data-pins {
806			/* SDC1 D0 to D7 */
807			pins = "gpio159", "gpio160", "gpio161", "gpio162",
808			     "gpio163", "gpio164", "gpio165", "gpio166";
809			function = "sdc1";
810			drive-strength = <10>;
811			bias-pull-up;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
812		};
813	};
814
815	/*
816	 * The SDCC3 pins are hardcoded (non-muxable) but need some pin
817	 * configuration.
818	 */
819	dragon_sdcc3_pins: sdcc3-state {
820		clk-pins {
821			pins = "sdc3_clk";
822			drive-strength = <8>;
823			bias-disable;
824		};
825		cmd-pins {
826			pins = "sdc3_cmd";
827			drive-strength = <8>;
828			bias-pull-up;
829		};
830		data-pins {
831			pins = "sdc3_data";
832			drive-strength = <8>;
833			bias-pull-up;
834		};
835	};
836
837	/* Second SD card slot pins */
838	dragon_sdcc5_pins: sdcc5-state {
839		clk-pins {
840			pins = "gpio97"; /* SDC5 CLK */
841			function = "sdc5";
842			drive-strength = <16>;
843			bias-disable;
844		};
845		cmd-pins {
846			pins = "gpio95"; /* SDC5 CMD */
847			function = "sdc5";
848			drive-strength = <10>;
849			bias-pull-up;
850		};
851		data-pins {
852			/* SDC5 D0 to D3 */
853			pins = "gpio96", "gpio98", "gpio99", "gpio100";
854			function = "sdc5";
855			drive-strength = <10>;
856			bias-pull-up;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
857		};
858	};
859
860	dragon_gsbi3_i2c_pins: gsbi3-i2c-state {
861		pins = "gpio43", "gpio44";
862		function = "gsbi3";
863		drive-strength = <8>;
864		/* These have external pull-up 2.2kOhm to 1.8V */
865		bias-disable;
866	};
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
867
868	dragon_gsbi8_i2c_pins: gsbi8-i2c-state {
869		pins = "gpio64", "gpio65";
870		function = "gsbi8";
871		drive-strength = <16>;
872		/* These have external pull-up 2.2kOhm to 1.8V */
873		bias-disable;
874	};
875
876	dragon_gsbi12_i2c_pins: gsbi12-i2c-state {
877		pins = "gpio115", "gpio116";
878		function = "gsbi12";
879		drive-strength = <16>;
880		/* These have external pull-up 4.7kOhm to 1.8V */
881		bias-disable;
882	};
883
884	/* Primary serial port uart 0 pins */
885	dragon_gsbi12_serial_pins: gsbi12-serial-state {
886		tx-pins {
887			pins = "gpio117";
888			function = "gsbi12";
889			drive-strength = <8>;
890			bias-disable;
891		};
892		rx-pins {
893			pins = "gpio118";
894			function = "gsbi12";
895			drive-strength = <2>;
896			bias-pull-up;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
897		};
898	};
 
 
 
 
 
 
 
 
899
900	dragon_ebi2_pins: ebi2-state {
901		/*
902		 * Pins used by EBI2 on the Dragonboard, actually only
903		 * CS2 is used by a real peripheral. CS0 is just
904		 * routed to a test point.
905		 */
906		mux0-pins {
907			pins =
908			    /* "gpio39", CS1A_N this is not good to mux */
909			    "gpio40", /* CS2A_N */
910			    "gpio134"; /* CS0_N testpoint TP29 */
911			function = "ebi2cs";
912		};
913		mux1-pins {
914			pins =
915			    /* EBI2_ADDR_7 downto EBI2_ADDR_0 address bus */
916			    "gpio123", "gpio124", "gpio125", "gpio126",
917			    "gpio127", "gpio128", "gpio129", "gpio130",
918			    /* EBI2_DATA_15 downto EBI2_DATA_0 data bus */
919			    "gpio135", "gpio136", "gpio137", "gpio138",
920			    "gpio139", "gpio140", "gpio141", "gpio142",
921			    "gpio143", "gpio144", "gpio145", "gpio146",
922			    "gpio147", "gpio148", "gpio149", "gpio150",
923			    "gpio151", /* EBI2_OE_N */
924			    "gpio153", /* EBI2_ADV */
925			    "gpio157"; /* EBI2_WE_N */
926			function = "ebi2";
927		};
928	};
929
930	/* Interrupt line for the KXSD9 accelerometer */
931	dragon_kxsd9_gpios: kxsd9-state {
932		pins = "gpio57"; /* IRQ line */
933		function = "gpio";
934		bias-pull-up;
935	};
936
937	dragon_tma340_gpios: tma340-state {
938		reset-pins {
939			/* RESET line, TS_ATTN, WAKE_CTP */
940			pins = "gpio58";
941			function = "gpio";
942			drive-strength = <6>;
943			bias-disable;
944		};
945		irq-pins {
946			pins = "gpio61"; /* IRQ line */
947			function = "gpio";
948			drive-strength = <2>;
949			bias-pull-up;
950		};
951	};
952};
953
954&xoadc {
955	/* Reference voltage 2.2 V */
956	xoadc-ref-supply = <&pm8058_l18>;
957
958	/* Board-specific channels */
959	mpp5@5 {
960		/* Connected to AOUT of ALS sensor */
961		reg = <0x00 0x05>;
962	};
963	mpp6@6 {
964		/* Connected to test point TP43 */
965		reg = <0x00 0x06>;
966	};
967	mpp7@7 {
968		/* Connected to battery thermistor */
969		reg = <0x00 0x07>;
970	};
971	mpp8@8 {
972		/* Connected to battery ID detector */
973		reg = <0x00 0x08>;
974	};
975	mpp9@9 {
976		/* Connected to XO thermistor */
977		reg = <0x00 0x09>;
978	};
979};