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