Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[sfrench/cifs-2.6.git] / arch / arm64 / boot / dts / qcom / apq8016-sbc.dtsi
1 /*
2  * Copyright (c) 2015, The Linux Foundation. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 and
6  * only version 2 as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  */
13
14 #include "msm8916.dtsi"
15 #include "pm8916.dtsi"
16 #include "apq8016-sbc-soc-pins.dtsi"
17 #include "apq8016-sbc-pmic-pins.dtsi"
18 #include <dt-bindings/gpio/gpio.h>
19 #include <dt-bindings/input/input.h>
20 #include <dt-bindings/sound/apq8016-lpass.h>
21
22 /*
23  * GPIO name legend: proper name = the GPIO line is used as GPIO
24  *         NC = not connected (pin out but not routed from the chip to
25  *              anything the board)
26  *         "[PER]" = pin is muxed for [peripheral] (not GPIO)
27  *         LSEC = Low Speed External Connector
28  *         HSEC = High Speed External Connector
29  *
30  * Line names are taken from the schematic "DragonBoard410c"
31  * dated monday, august 31, 2015. Page 5 in particular.
32  *
33  * For the lines routed to the external connectors the
34  * lines are named after the 96Boards CE Specification 1.0,
35  * Appendix "Expansion Connector Signal Description".
36  *
37  * When the 96Board naming of a line and the schematic name of
38  * the same line are in conflict, the 96Board specification
39  * takes precedence, which means that the external UART on the
40  * LSEC is named UART0 while the schematic and SoC names this
41  * UART3. This is only for the informational lines i.e. "[FOO]",
42  * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only
43  * ones actually used for GPIO.
44  */
45
46 / {
47         aliases {
48                 serial0 = &blsp1_uart2;
49                 serial1 = &blsp1_uart1;
50                 usid0 = &pm8916_0;
51                 i2c0    = &blsp_i2c2;
52                 i2c1    = &blsp_i2c6;
53                 i2c3    = &blsp_i2c4;
54                 spi0    = &blsp_spi5;
55                 spi1    = &blsp_spi3;
56         };
57
58         chosen {
59                 stdout-path = "serial0";
60         };
61
62         reserved-memory {
63                 ramoops@bff00000{
64                         compatible = "ramoops";
65                         reg = <0x0 0xbff00000 0x0 0x100000>;
66
67                         record-size = <0x20000>;
68                         console-size = <0x20000>;
69                         ftrace-size = <0x20000>;
70                 };
71         };
72
73         soc {
74                 pinctrl@1000000 {
75                         gpio-line-names =
76                                 "[UART0_TX]", /* GPIO_0, LSEC pin 5 */
77                                 "[UART0_RX]", /* GPIO_1, LSEC pin 7 */
78                                 "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */
79                                 "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */
80                                 "[UART1_TX]", /* GPIO_4, LSEC pin 11 */
81                                 "[UART1_RX]", /* GPIO_5, LSEC pin 13 */
82                                 "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */
83                                 "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */
84                                 "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */
85                                 "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */
86                                 "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */
87                                 "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */
88                                 "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */
89                                 "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */
90                                 "[I2C3_SDA]", /* HSEC pin 38 */
91                                 "[I2C3_SCL]", /* HSEC pin 36 */
92                                 "[SPI0_MOSI]", /* LSEC pin 14 */
93                                 "[SPI0_MISO]", /* LSEC pin 10 */
94                                 "[SPI0_CS_N]", /* LSEC pin 12 */
95                                 "[SPI0_CLK]", /* LSEC pin 8 */
96                                 "HDMI_HPD_N", /* GPIO 20 */
97                                 "USR_LED_1_CTRL",
98                                 "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */
99                                 "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */
100                                 "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */
101                                 "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */
102                                 "[CSI0_MCLK]", /* HSEC pin 15 */
103                                 "[CSI1_MCLK]", /* HSEC pin 17 */
104                                 "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */
105                                 "[I2C2_SDA]", /* HSEC pin 34 */
106                                 "[I2C2_SCL]", /* HSEC pin 32 */
107                                 "DSI2HDMI_INT_N",
108                                 "DSI_SW_SEL_APQ",
109                                 "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */
110                                 "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */
111                                 "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */
112                                 "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */
113                                 "FORCED_USB_BOOT",
114                                 "SD_CARD_DET_N",
115                                 "[WCSS_BT_SSBI]",
116                                 "[WCSS_WLAN_DATA_2]", /* GPIO 40 */
117                                 "[WCSS_WLAN_DATA_1]",
118                                 "[WCSS_WLAN_DATA_0]",
119                                 "[WCSS_WLAN_SET]",
120                                 "[WCSS_WLAN_CLK]",
121                                 "[WCSS_FM_SSBI]",
122                                 "[WCSS_FM_SDI]",
123                                 "[WCSS_BT_DAT_CTL]",
124                                 "[WCSS_BT_DAT_STB]",
125                                 "NC",
126                                 "NC", /* GPIO 50 */
127                                 "NC",
128                                 "NC",
129                                 "NC",
130                                 "NC",
131                                 "NC",
132                                 "NC",
133                                 "NC",
134                                 "NC",
135                                 "NC",
136                                 "NC", /* GPIO 60 */
137                                 "NC",
138                                 "NC",
139                                 "[CDC_PDM0_CLK]",
140                                 "[CDC_PDM0_SYNC]",
141                                 "[CDC_PDM0_TX0]",
142                                 "[CDC_PDM0_RX0]",
143                                 "[CDC_PDM0_RX1]",
144                                 "[CDC_PDM0_RX2]",
145                                 "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */
146                                 "NC", /* GPIO 70 */
147                                 "NC",
148                                 "NC",
149                                 "NC",
150                                 "NC", /* GPIO 74 */
151                                 "NC",
152                                 "NC",
153                                 "NC",
154                                 "NC",
155                                 "NC",
156                                 "BOOT_CONFIG_0", /* GPIO 80 */
157                                 "BOOT_CONFIG_1",
158                                 "BOOT_CONFIG_2",
159                                 "BOOT_CONFIG_3",
160                                 "NC",
161                                 "NC",
162                                 "BOOT_CONFIG_5",
163                                 "NC",
164                                 "NC",
165                                 "NC",
166                                 "NC", /* GPIO 90 */
167                                 "NC",
168                                 "NC",
169                                 "NC",
170                                 "NC",
171                                 "NC",
172                                 "NC",
173                                 "NC",
174                                 "NC",
175                                 "NC",
176                                 "NC", /* GPIO 100 */
177                                 "NC",
178                                 "NC",
179                                 "NC",
180                                 "SSBI_GPS",
181                                 "NC",
182                                 "NC",
183                                 "KEY_VOLP_N",
184                                 "NC",
185                                 "NC",
186                                 "[LS_EXP_MI2S_WS]", /* GPIO 110 */
187                                 "NC",
188                                 "NC",
189                                 "[LS_EXP_MI2S_SCK]",
190                                 "[LS_EXP_MI2S_DATA0]",
191                                 "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */
192                                 "NC",
193                                 "[DSI2HDMI_MI2S_WS]",
194                                 "[DSI2HDMI_MI2S_SCK]",
195                                 "[DSI2HDMI_MI2S_DATA0]",
196                                 "USR_LED_2_CTRL", /* GPIO 120 */
197                                 "SB_HS_ID";
198                 };
199
200                 dma@7884000 {
201                         status = "okay";
202                 };
203
204                 serial@78af000 {
205                         label = "LS-UART0";
206                         status = "okay";
207                         pinctrl-names = "default", "sleep";
208                         pinctrl-0 = <&blsp1_uart1_default>;
209                         pinctrl-1 = <&blsp1_uart1_sleep>;
210                 };
211
212                 serial@78b0000 {
213                         label = "LS-UART1";
214                         status = "okay";
215                         pinctrl-names = "default", "sleep";
216                         pinctrl-0 = <&blsp1_uart2_default>;
217                         pinctrl-1 = <&blsp1_uart2_sleep>;
218                 };
219
220                 i2c@78b6000 {
221                 /* On Low speed expansion */
222                         label = "LS-I2C0";
223                         status = "okay";
224                 };
225
226                 i2c@78b8000 {
227                 /* On High speed expansion */
228                         label = "HS-I2C2";
229                         status = "okay";
230
231                         adv_bridge: bridge@39 {
232                                 status = "okay";
233
234                                 compatible = "adi,adv7533";
235                                 reg = <0x39>;
236
237                                 interrupt-parent = <&msmgpio>;
238                                 interrupts = <31 2>;
239
240                                 adi,dsi-lanes = <4>;
241                                 clocks = <&rpmcc RPM_SMD_BB_CLK2>;
242                                 clock-names = "cec";
243
244                                 pd-gpios = <&msmgpio 32 0>;
245
246                                 avdd-supply = <&pm8916_l6>;
247                                 v1p2-supply = <&pm8916_l6>;
248                                 v3p3-supply = <&pm8916_l17>;
249
250                                 pinctrl-names = "default","sleep";
251                                 pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>;
252                                 pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>;
253                                 #sound-dai-cells = <1>;
254
255                                 ports {
256                                         #address-cells = <1>;
257                                         #size-cells = <0>;
258
259                                         port@0 {
260                                                 reg = <0>;
261                                                 adv7533_in: endpoint {
262                                                         remote-endpoint = <&dsi0_out>;
263                                                 };
264                                         };
265
266                                         port@1 {
267                                                 reg = <1>;
268                                                 adv7533_out: endpoint {
269                                                         remote-endpoint = <&hdmi_con>;
270                                                 };
271                                         };
272                                 };
273                         };
274                 };
275
276                 i2c@78ba000 {
277                 /* On Low speed expansion */
278                         label = "LS-I2C1";
279                         status = "okay";
280                 };
281
282                 spi@78b7000 {
283                 /* On High speed expansion */
284                         label = "HS-SPI1";
285                         status = "okay";
286                 };
287
288                 spi@78b9000 {
289                 /* On Low speed expansion */
290                         label = "LS-SPI0";
291                         status = "okay";
292                 };
293
294                 leds {
295                         pinctrl-names = "default";
296                         pinctrl-0 = <&msmgpio_leds>,
297                                     <&pm8916_gpios_leds>,
298                                     <&pm8916_mpps_leds>;
299
300                         compatible = "gpio-leds";
301
302                         led@1 {
303                                 label = "apq8016-sbc:green:user1";
304                                 gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>;
305                                 linux,default-trigger = "heartbeat";
306                                 default-state = "off";
307                         };
308
309                         led@2 {
310                                 label = "apq8016-sbc:green:user2";
311                                 gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>;
312                                 linux,default-trigger = "mmc0";
313                                 default-state = "off";
314                         };
315
316                         led@3 {
317                                 label = "apq8016-sbc:green:user3";
318                                 gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>;
319                                 linux,default-trigger = "mmc1";
320                                 default-state = "off";
321                         };
322
323                         led@4 {
324                                 label = "apq8016-sbc:green:user4";
325                                 gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>;
326                                 linux,default-trigger = "none";
327                                 default-state = "off";
328                         };
329
330                         led@5 {
331                                 label = "apq8016-sbc:yellow:wlan";
332                                 gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
333                                 linux,default-trigger = "phy0tx";
334                                 default-state = "off";
335                         };
336
337                         led@6 {
338                                 label = "apq8016-sbc:blue:bt";
339                                 gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
340                                 linux,default-trigger = "bt";
341                                 default-state = "off";
342                         };
343                 };
344
345                 sdhci@7824000 {
346                         vmmc-supply = <&pm8916_l8>;
347                         vqmmc-supply = <&pm8916_l5>;
348
349                         pinctrl-names = "default", "sleep";
350                         pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
351                         pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
352                         status = "okay";
353                 };
354
355                 sdhci@7864000 {
356                         vmmc-supply = <&pm8916_l11>;
357                         vqmmc-supply = <&pm8916_l12>;
358
359                         pinctrl-names = "default", "sleep";
360                         pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
361                         pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
362
363                         cd-gpios = <&msmgpio 38 0x1>;
364                         status = "okay";
365                 };
366
367                 usb@78d9000 {
368                         extcon = <&usb_id>;
369                         status = "okay";
370                         adp-disable;
371                         hnp-disable;
372                         srp-disable;
373                         dr_mode = "host";
374                         pinctrl-names = "default";
375                         pinctrl-0 = <&usb_sw_sel_pm>;
376                         ulpi {
377                                 phy {
378                                         v1p8-supply = <&pm8916_l7>;
379                                         v3p3-supply = <&pm8916_l13>;
380                                         extcon = <&usb_id>;
381                                 };
382                         };
383                 };
384
385                 lpass@7708000 {
386                         status = "okay";
387                 };
388
389                 mdss@1a00000 {
390                         status = "okay";
391
392                         mdp@1a01000 {
393                                 status = "okay";
394                         };
395
396                         dsi@1a98000 {
397                                 status = "okay";
398
399                                 vdda-supply = <&pm8916_l2>;
400                                 vddio-supply = <&pm8916_l6>;
401
402                                 ports {
403                                         port@1 {
404                                                 endpoint {
405                                                         remote-endpoint = <&adv7533_in>;
406                                                         data-lanes = <0 1 2 3>;
407                                                 };
408                                         };
409                                 };
410                         };
411
412                         dsi-phy@1a98300 {
413                                 status = "okay";
414
415                                 vddio-supply = <&pm8916_l6>;
416                         };
417                 };
418
419                 lpass_codec: codec{
420                         status = "okay";
421                 };
422
423                 /*
424                 Internal Codec
425                         playback - Primary MI2S
426                         capture - Ter MI2S
427
428                 External Primary:
429                         playback - secondary MI2S
430                         capture - Quat MI2S
431
432                 External Secondary:
433                         playback - Quat MI2S
434                         capture - Quat MI2S
435
436                 */
437
438                 sound: sound {
439                         compatible = "qcom,apq8016-sbc-sndcard";
440                         reg = <0x07702000 0x4>, <0x07702004 0x4>;
441                         reg-names = "mic-iomux", "spkr-iomux";
442
443                         status = "okay";
444                         pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>;
445                         pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
446                         pinctrl-names = "default", "sleep";
447                         qcom,model = "DB410c";
448                         qcom,audio-routing =
449                                 "AMIC2", "MIC BIAS Internal2",
450                                 "AMIC3", "MIC BIAS External1";
451                         external-dai-link@0 {
452                                 link-name = "ADV7533";
453                                 cpu { /* QUAT */
454                                         sound-dai = <&lpass MI2S_QUATERNARY>;
455                                 };
456                                 codec {
457                                         sound-dai = <&adv_bridge 0>;
458                                 };
459                         };
460
461                         internal-codec-playback-dai-link@0 {            /* I2S - Internal codec */
462                                 link-name = "WCD";
463                                 cpu { /* PRIMARY */
464                                         sound-dai = <&lpass MI2S_PRIMARY>;
465                                 };
466                                 codec {
467                                         sound-dai = <&lpass_codec 0>, <&wcd_codec 0>;
468                                 };
469                         };
470
471                         internal-codec-capture-dai-link@0 {             /* I2S - Internal codec */
472                                 link-name = "WCD-Capture";
473                                 cpu { /* PRIMARY */
474                                         sound-dai = <&lpass MI2S_TERTIARY>;
475                                 };
476                                 codec {
477                                         sound-dai = <&lpass_codec 1>, <&wcd_codec 1>;
478                                 };
479                         };
480                 };
481
482                 spmi@200f000 {
483                         pm8916@0 {
484                                 gpios@c000 {
485                                         gpio-line-names =
486                                                 "USR_LED_3_CTRL",
487                                                 "USR_LED_4_CTRL",
488                                                 "USB_HUB_RESET_N_PM",
489                                                 "USB_SW_SEL_PM";
490                                 };
491                                 mpps@a000 {
492                                         gpio-line-names =
493                                                 "VDD_PX_BIAS",
494                                                 "WLAN_LED_CTRL",
495                                                 "BT_LED_CTRL",
496                                                 "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */
497                                 };
498                         };
499                 };
500
501                 wcnss@a21b000 {
502                         status = "okay";
503                 };
504         };
505
506         usb2513 {
507                 compatible = "smsc,usb3503";
508                 reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>;
509                 initial-mode = <1>;
510         };
511
512         usb_id: usb-id {
513                 compatible = "linux,extcon-usb-gpio";
514                 vbus-gpio = <&msmgpio 121 GPIO_ACTIVE_HIGH>;
515                 pinctrl-names = "default";
516                 pinctrl-0 = <&usb_id_default>;
517         };
518
519         hdmi-out {
520                 compatible = "hdmi-connector";
521                 type = "a";
522
523                 port {
524                         hdmi_con: endpoint {
525                                 remote-endpoint = <&adv7533_out>;
526                         };
527                 };
528         };
529
530         gpio_keys {
531                 compatible = "gpio-keys";
532                 #address-cells = <1>;
533                 #size-cells = <0>;
534                 autorepeat;
535
536                 pinctrl-names = "default";
537                 pinctrl-0 = <&msm_key_volp_n_default>;
538
539                 button@0 {
540                         label = "Volume Up";
541                         linux,code = <KEY_VOLUMEUP>;
542                         gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
543                 };
544         };
545 };
546
547 &wcd_codec {
548         status = "okay";
549         clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>;
550         clock-names = "mclk";
551         qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
552         qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
553 };
554
555 &smd_rpm_regulators {
556         vdd_l1_l2_l3-supply = <&pm8916_s3>;
557         vdd_l5-supply = <&pm8916_s3>;
558         vdd_l4_l5_l6-supply = <&pm8916_s4>;
559         vdd_l7-supply = <&pm8916_s4>;
560
561         s1 {
562                 regulator-min-microvolt = <375000>;
563                 regulator-max-microvolt = <1562000>;
564         };
565
566         s3 {
567                 regulator-min-microvolt = <375000>;
568                 regulator-max-microvolt = <1562000>;
569         };
570
571         s4 {
572                 regulator-min-microvolt = <1800000>;
573                 regulator-max-microvolt = <1800000>;
574
575                 regulator-always-on;
576                 regulator-boot-on;
577         };
578
579         l1 {
580                 regulator-min-microvolt = <375000>;
581                 regulator-max-microvolt = <1525000>;
582         };
583
584         l2 {
585                 regulator-min-microvolt = <1200000>;
586                 regulator-max-microvolt = <1200000>;
587         };
588
589         l3 {
590                 regulator-min-microvolt = <375000>;
591                 regulator-max-microvolt = <1525000>;
592         };
593
594         l4 {
595                 regulator-min-microvolt = <1750000>;
596                 regulator-max-microvolt = <3337000>;
597         };
598
599         l5 {
600                 regulator-min-microvolt = <1750000>;
601                 regulator-max-microvolt = <3337000>;
602         };
603
604         l6 {
605                 regulator-min-microvolt = <1800000>;
606                 regulator-max-microvolt = <1800000>;
607         };
608
609         l7 {
610                 regulator-min-microvolt = <1750000>;
611                 regulator-max-microvolt = <3337000>;
612         };
613
614         l8 {
615                 regulator-min-microvolt = <1750000>;
616                 regulator-max-microvolt = <3337000>;
617         };
618
619         l9 {
620                 regulator-min-microvolt = <1750000>;
621                 regulator-max-microvolt = <3337000>;
622         };
623
624         l10 {
625                 regulator-min-microvolt = <1750000>;
626                 regulator-max-microvolt = <3337000>;
627         };
628
629         l11 {
630                 regulator-min-microvolt = <1750000>;
631                 regulator-max-microvolt = <3337000>;
632         };
633
634         l12 {
635                 regulator-min-microvolt = <1750000>;
636                 regulator-max-microvolt = <3337000>;
637         };
638
639         l13 {
640                 regulator-min-microvolt = <1750000>;
641                 regulator-max-microvolt = <3337000>;
642         };
643
644         l14 {
645                 regulator-min-microvolt = <1750000>;
646                 regulator-max-microvolt = <3337000>;
647         };
648
649         /**
650          * 1.8v required on LS expansion
651          * for mezzanine boards
652          */
653         l15 {
654                 regulator-min-microvolt = <1750000>;
655                 regulator-max-microvolt = <3337000>;
656                 regulator-always-on;
657         };
658
659         l16 {
660                 regulator-min-microvolt = <1750000>;
661                 regulator-max-microvolt = <3337000>;
662         };
663
664         l17 {
665                 regulator-min-microvolt = <3300000>;
666                 regulator-max-microvolt = <3300000>;
667         };
668
669         l18 {
670                 regulator-min-microvolt = <1750000>;
671                 regulator-max-microvolt = <3337000>;
672         };
673 };