pci, ACPI, iommu: Enhance pci_root to support DMAR device hotplug
[cascardo/linux.git] / arch / arm / boot / dts / exynos5250-snow.dts
1 /*
2  * Google Snow board device tree source
3  *
4  * Copyright (c) 2012 Google, Inc
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9 */
10
11 /dts-v1/;
12 #include <dt-bindings/gpio/gpio.h>
13 #include "exynos5250.dtsi"
14
15 / {
16         model = "Google Snow";
17         compatible = "google,snow", "samsung,exynos5250", "samsung,exynos5";
18
19         aliases {
20                 i2c104 = &i2c_104;
21         };
22
23         memory {
24                 reg = <0x40000000 0x80000000>;
25         };
26
27         chosen {
28         };
29
30         rtc@101E0000 {
31                 status = "okay";
32         };
33
34         pinctrl@11400000 {
35                 ec_irq: ec-irq {
36                         samsung,pins = "gpx1-6";
37                         samsung,pin-function = <0>;
38                         samsung,pin-pud = <0>;
39                         samsung,pin-drv = <0>;
40                 };
41
42                 sd3_clk: sd3-clk {
43                         samsung,pin-drv = <0>;
44                 };
45
46                 sd3_cmd: sd3-cmd {
47                         samsung,pin-pud = <3>;
48                         samsung,pin-drv = <0>;
49                 };
50
51                 sd3_bus4: sd3-bus-width4 {
52                         samsung,pin-drv = <0>;
53                 };
54
55                 max98095_en: max98095-en {
56                         samsung,pins = "gpx1-7";
57                         samsung,pin-function = <0>;
58                         samsung,pin-pud = <3>;
59                         samsung,pin-drv = <0>;
60                 };
61
62                 tps65090_irq: tps65090-irq {
63                         samsung,pins = "gpx2-6";
64                         samsung,pin-function = <0>;
65                         samsung,pin-pud = <0>;
66                         samsung,pin-drv = <0>;
67                 };
68
69                 usb3_vbus_en: usb3-vbus-en {
70                         samsung,pins = "gpx2-7";
71                         samsung,pin-function = <1>;
72                         samsung,pin-pud = <0>;
73                         samsung,pin-drv = <0>;
74                 };
75
76                 hdmi_hpd_irq: hdmi-hpd-irq {
77                         samsung,pins = "gpx3-7";
78                         samsung,pin-function = <0>;
79                         samsung,pin-pud = <1>;
80                         samsung,pin-drv = <0>;
81                 };
82         };
83
84         pinctrl@13400000 {
85                 arb_their_claim: arb-their-claim {
86                         samsung,pins = "gpe0-4";
87                         samsung,pin-function = <0>;
88                         samsung,pin-pud = <3>;
89                         samsung,pin-drv = <0>;
90                 };
91
92                 arb_our_claim: arb-our-claim {
93                         samsung,pins = "gpf0-3";
94                         samsung,pin-function = <1>;
95                         samsung,pin-pud = <0>;
96                         samsung,pin-drv = <0>;
97                 };
98         };
99
100         gpio-keys {
101                 compatible = "gpio-keys";
102
103                 power {
104                         label = "Power";
105                         gpios = <&gpx1 3 1>;
106                         linux,code = <116>; /* KEY_POWER */
107                         gpio-key,wakeup;
108                 };
109
110                 lid-switch {
111                         label = "Lid";
112                         gpios = <&gpx3 5 1>;
113                         linux,input-type = <5>; /* EV_SW */
114                         linux,code = <0>; /* SW_LID */
115                         debounce-interval = <1>;
116                         gpio-key,wakeup;
117                 };
118         };
119
120         vbat: vbat-fixed-regulator {
121                 compatible = "regulator-fixed";
122                 regulator-name = "vbat-supply";
123                 regulator-boot-on;
124         };
125
126         i2c-arbitrator {
127                 compatible = "i2c-arb-gpio-challenge";
128                 #address-cells = <1>;
129                 #size-cells = <0>;
130
131                 i2c-parent = <&{/i2c@12CA0000}>;
132
133                 our-claim-gpio = <&gpf0 3 1>;
134                 their-claim-gpios = <&gpe0 4 1>;
135                 slew-delay-us = <10>;
136                 wait-retry-us = <3000>;
137                 wait-free-us = <50000>;
138
139                 pinctrl-names = "default";
140                 pinctrl-0 = <&arb_our_claim &arb_their_claim>;
141
142                 /* Use ID 104 as a hint that we're on physical bus 4 */
143                 i2c_104: i2c@0 {
144                         reg = <0>;
145                         #address-cells = <1>;
146                         #size-cells = <0>;
147
148                         battery: sbs-battery@b {
149                                 compatible = "sbs,sbs-battery";
150                                 reg = <0xb>;
151                                 sbs,poll-retry-count = <1>;
152                         };
153
154                         cros_ec: embedded-controller {
155                                 compatible = "google,cros-ec-i2c";
156                                 reg = <0x1e>;
157                                 interrupts = <6 0>;
158                                 interrupt-parent = <&gpx1>;
159                                 pinctrl-names = "default";
160                                 pinctrl-0 = <&ec_irq>;
161                                 wakeup-source;
162                         };
163
164                         power-regulator {
165                                 compatible = "ti,tps65090";
166                                 reg = <0x48>;
167
168                                 /*
169                                  * Config irq to disable internal pulls
170                                  * even though we run in polling mode.
171                                  */
172                                 pinctrl-names = "default";
173                                 pinctrl-0 = <&tps65090_irq>;
174
175                                 vsys1-supply = <&vbat>;
176                                 vsys2-supply = <&vbat>;
177                                 vsys3-supply = <&vbat>;
178                                 infet1-supply = <&vbat>;
179                                 infet2-supply = <&vbat>;
180                                 infet3-supply = <&vbat>;
181                                 infet4-supply = <&vbat>;
182                                 infet5-supply = <&vbat>;
183                                 infet6-supply = <&vbat>;
184                                 infet7-supply = <&vbat>;
185                                 vsys-l1-supply = <&vbat>;
186                                 vsys-l2-supply = <&vbat>;
187
188                                 regulators {
189                                         dcdc1 {
190                                                 ti,enable-ext-control;
191                                         };
192                                         dcdc2 {
193                                                 ti,enable-ext-control;
194                                         };
195                                         dcdc3 {
196                                                 ti,enable-ext-control;
197                                         };
198                                         fet1: fet1 {
199                                                 regulator-name = "vcd_led";
200                                                 ti,overcurrent-wait = <3>;
201                                         };
202                                         tps65090_fet2: fet2 {
203                                                 regulator-name = "video_mid";
204                                                 regulator-always-on;
205                                                 ti,overcurrent-wait = <3>;
206                                         };
207                                         fet3 {
208                                                 regulator-name = "wwan_r";
209                                                 regulator-always-on;
210                                                 ti,overcurrent-wait = <3>;
211                                         };
212                                         fet4 {
213                                                 regulator-name = "sdcard";
214                                                 ti,overcurrent-wait = <3>;
215                                         };
216                                         fet5 {
217                                                 regulator-name = "camout";
218                                                 regulator-always-on;
219                                                 ti,overcurrent-wait = <3>;
220                                         };
221                                         fet6: fet6 {
222                                                 regulator-name = "lcd_vdd";
223                                                 ti,overcurrent-wait = <3>;
224                                         };
225                                         tps65090_fet7: fet7 {
226                                                 regulator-name = "video_mid_1a";
227                                                 regulator-always-on;
228                                                 ti,overcurrent-wait = <3>;
229                                         };
230                                         ldo1 {
231                                         };
232                                         ldo2 {
233                                         };
234                                 };
235
236                                 charger {
237                                         compatible = "ti,tps65090-charger";
238                                 };
239                         };
240                 };
241         };
242
243         i2c@12CD0000 {
244                 max98095: codec@11 {
245                         compatible = "maxim,max98095";
246                         reg = <0x11>;
247                         pinctrl-0 = <&max98095_en>;
248                         pinctrl-names = "default";
249                 };
250
251                 ptn3460: lvds-bridge@20 {
252                         compatible = "nxp,ptn3460";
253                         reg = <0x20>;
254                         powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
255                         reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
256                         edid-emulation = <5>;
257                         panel = <&panel>;
258                 };
259         };
260
261         i2s0: i2s@03830000 {
262                 status = "okay";
263         };
264
265         sound {
266                 compatible = "google,snow-audio-max98095";
267
268                 samsung,model = "Snow-I2S-MAX98095";
269                 samsung,i2s-controller = <&i2s0>;
270                 samsung,audio-codec = <&max98095>;
271         };
272
273         usb3_vbus_reg: regulator-usb3 {
274                 compatible = "regulator-fixed";
275                 regulator-name = "P5.0V_USB3CON";
276                 regulator-min-microvolt = <5000000>;
277                 regulator-max-microvolt = <5000000>;
278                 gpio = <&gpx2 7 0>;
279                 pinctrl-names = "default";
280                 pinctrl-0 = <&usb3_vbus_en>;
281                 enable-active-high;
282         };
283
284         phy@12100000 {
285                 vbus-supply = <&usb3_vbus_reg>;
286         };
287
288         usb@12110000 {
289                 samsung,vbus-gpio = <&gpx1 1 0>;
290         };
291
292         fixed-rate-clocks {
293                 xxti {
294                         compatible = "samsung,clock-xxti";
295                         clock-frequency = <24000000>;
296                 };
297         };
298
299         hdmi {
300                 hpd-gpio = <&gpx3 7 0>;
301                 pinctrl-names = "default";
302                 pinctrl-0 = <&hdmi_hpd_irq>;
303                 phy = <&hdmiphy>;
304                 ddc = <&i2c_2>;
305                 hdmi-en-supply = <&tps65090_fet7>;
306                 vdd-supply = <&ldo8_reg>;
307                 vdd_osc-supply = <&ldo10_reg>;
308                 vdd_pll-supply = <&ldo8_reg>;
309         };
310
311         backlight: backlight {
312                 compatible = "pwm-backlight";
313                 pwms = <&pwm 0 1000000 0>;
314                 brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
315                 default-brightness-level = <7>;
316                 enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
317                 power-supply = <&fet1>;
318                 pinctrl-0 = <&pwm0_out>;
319                 pinctrl-names = "default";
320         };
321
322         fimd@14400000 {
323                 status = "okay";
324                 samsung,invert-vclk;
325         };
326
327         panel: panel {
328                 compatible = "auo,b116xw03";
329                 power-supply = <&fet6>;
330                 backlight = <&backlight>;
331         };
332
333         dp-controller@145B0000 {
334                 status = "okay";
335                 pinctrl-names = "default";
336                 pinctrl-0 = <&dp_hpd>;
337                 samsung,color-space = <0>;
338                 samsung,dynamic-range = <0>;
339                 samsung,ycbcr-coeff = <0>;
340                 samsung,color-depth = <1>;
341                 samsung,link-rate = <0x0a>;
342                 samsung,lane-count = <2>;
343                 samsung,hpd-gpio = <&gpx0 7 0>;
344                 bridge = <&ptn3460>;
345         };
346 };
347
348 &i2c_0 {
349         status = "okay";
350         samsung,i2c-sda-delay = <100>;
351         samsung,i2c-max-bus-freq = <378000>;
352
353         max77686@09 {
354                 compatible = "maxim,max77686";
355                 interrupt-parent = <&gpx3>;
356                 interrupts = <2 0>;
357                 pinctrl-names = "default";
358                 pinctrl-0 = <&max77686_irq>;
359                 wakeup-source;
360                 reg = <0x09>;
361                 #clock-cells = <1>;
362
363                 voltage-regulators {
364                         ldo1_reg: LDO1 {
365                                 regulator-name = "P1.0V_LDO_OUT1";
366                                 regulator-min-microvolt = <1000000>;
367                                 regulator-max-microvolt = <1000000>;
368                                 regulator-always-on;
369                         };
370
371                         ldo2_reg: LDO2 {
372                                 regulator-name = "P1.8V_LDO_OUT2";
373                                 regulator-min-microvolt = <1800000>;
374                                 regulator-max-microvolt = <1800000>;
375                                 regulator-always-on;
376                         };
377
378                         ldo3_reg: LDO3 {
379                                 regulator-name = "P1.8V_LDO_OUT3";
380                                 regulator-min-microvolt = <1800000>;
381                                 regulator-max-microvolt = <1800000>;
382                                 regulator-always-on;
383                         };
384
385                         ldo7_reg: LDO7 {
386                                 regulator-name = "P1.1V_LDO_OUT7";
387                                 regulator-min-microvolt = <1100000>;
388                                 regulator-max-microvolt = <1100000>;
389                                 regulator-always-on;
390                         };
391
392                         ldo8_reg: LDO8 {
393                                 regulator-name = "P1.0V_LDO_OUT8";
394                                 regulator-min-microvolt = <1000000>;
395                                 regulator-max-microvolt = <1000000>;
396                                 regulator-always-on;
397                         };
398
399                         ldo10_reg: LDO10 {
400                                 regulator-name = "P1.8V_LDO_OUT10";
401                                 regulator-min-microvolt = <1800000>;
402                                 regulator-max-microvolt = <1800000>;
403                                 regulator-always-on;
404                         };
405
406                         ldo12_reg: LDO12 {
407                                 regulator-name = "P3.0V_LDO_OUT12";
408                                 regulator-min-microvolt = <3000000>;
409                                 regulator-max-microvolt = <3000000>;
410                                 regulator-always-on;
411                         };
412
413                         ldo14_reg: LDO14 {
414                                 regulator-name = "P1.8V_LDO_OUT14";
415                                 regulator-min-microvolt = <1800000>;
416                                 regulator-max-microvolt = <1800000>;
417                                 regulator-always-on;
418                         };
419
420                         ldo15_reg: LDO15 {
421                                 regulator-name = "P1.0V_LDO_OUT15";
422                                 regulator-min-microvolt = <1000000>;
423                                 regulator-max-microvolt = <1000000>;
424                                 regulator-always-on;
425                         };
426
427                         ldo16_reg: LDO16 {
428                                 regulator-name = "P1.8V_LDO_OUT16";
429                                 regulator-min-microvolt = <1800000>;
430                                 regulator-max-microvolt = <1800000>;
431                                 regulator-always-on;
432                         };
433
434                         buck1_reg: BUCK1 {
435                                 regulator-name = "vdd_mif";
436                                 regulator-min-microvolt = <950000>;
437                                 regulator-max-microvolt = <1300000>;
438                                 regulator-always-on;
439                                 regulator-boot-on;
440                         };
441
442                         buck2_reg: BUCK2 {
443                                 regulator-name = "vdd_arm";
444                                 regulator-min-microvolt = <850000>;
445                                 regulator-max-microvolt = <1350000>;
446                                 regulator-always-on;
447                                 regulator-boot-on;
448                         };
449
450                         buck3_reg: BUCK3 {
451                                 regulator-name = "vdd_int";
452                                 regulator-min-microvolt = <900000>;
453                                 regulator-max-microvolt = <1200000>;
454                                 regulator-always-on;
455                                 regulator-boot-on;
456                         };
457
458                         buck4_reg: BUCK4 {
459                                 regulator-name = "vdd_g3d";
460                                 regulator-min-microvolt = <850000>;
461                                 regulator-max-microvolt = <1300000>;
462                                 regulator-always-on;
463                                 regulator-boot-on;
464                         };
465
466                         buck5_reg: BUCK5 {
467                                 regulator-name = "P1.8V_BUCK_OUT5";
468                                 regulator-min-microvolt = <1800000>;
469                                 regulator-max-microvolt = <1800000>;
470                                 regulator-always-on;
471                                 regulator-boot-on;
472                         };
473
474                         buck6_reg: BUCK6 {
475                                 regulator-name = "P1.35V_BUCK_OUT6";
476                                 regulator-min-microvolt = <1350000>;
477                                 regulator-max-microvolt = <1350000>;
478                                 regulator-always-on;
479                         };
480
481                         buck7_reg: BUCK7 {
482                                 regulator-name = "P2.0V_BUCK_OUT7";
483                                 regulator-min-microvolt = <2000000>;
484                                 regulator-max-microvolt = <2000000>;
485                                 regulator-always-on;
486                         };
487
488                         buck8_reg: BUCK8 {
489                                 regulator-name = "P2.85V_BUCK_OUT8";
490                                 regulator-min-microvolt = <2850000>;
491                                 regulator-max-microvolt = <2850000>;
492                                 regulator-always-on;
493                         };
494                 };
495         };
496 };
497
498 &i2c_1 {
499         status = "okay";
500         samsung,i2c-sda-delay = <100>;
501         samsung,i2c-max-bus-freq = <378000>;
502
503         trackpad {
504                 reg = <0x67>;
505                 compatible = "cypress,cyapa";
506                 interrupts = <2 0>;
507                 interrupt-parent = <&gpx1>;
508                 wakeup-source;
509         };
510 };
511
512 /*
513  * Disabled pullups since external part has its own pullups and
514  * double-pulling gets us out of spec in some cases.
515  */
516 &i2c2_bus {
517         samsung,pin-pud = <0>;
518 };
519
520 &i2c_2 {
521         status = "okay";
522         samsung,i2c-sda-delay = <100>;
523         samsung,i2c-max-bus-freq = <66000>;
524
525         hdmiddc@50 {
526                 compatible = "samsung,exynos4210-hdmiddc";
527                 reg = <0x50>;
528         };
529 };
530
531 &i2c_3 {
532         status = "okay";
533         samsung,i2c-sda-delay = <100>;
534         samsung,i2c-max-bus-freq = <66000>;
535 };
536
537 &i2c_4 {
538         status = "okay";
539         samsung,i2c-sda-delay = <100>;
540         samsung,i2c-max-bus-freq = <66000>;
541 };
542
543 &i2c_5 {
544         status = "okay";
545         samsung,i2c-sda-delay = <100>;
546         samsung,i2c-max-bus-freq = <66000>;
547 };
548
549 &i2c_7 {
550         status = "okay";
551         samsung,i2c-sda-delay = <100>;
552         samsung,i2c-max-bus-freq = <66000>;
553 };
554
555 &i2c_8 {
556         status = "okay";
557         samsung,i2c-sda-delay = <100>;
558         samsung,i2c-max-bus-freq = <378000>;
559
560         hdmiphy: hdmiphy@38 {
561                 compatible = "samsung,exynos4212-hdmiphy";
562                 reg = <0x38>;
563         };
564 };
565
566 &mmc_0 {
567         status = "okay";
568         num-slots = <1>;
569         broken-cd;
570         card-detect-delay = <200>;
571         samsung,dw-mshc-ciu-div = <3>;
572         samsung,dw-mshc-sdr-timing = <2 3>;
573         samsung,dw-mshc-ddr-timing = <1 2>;
574         pinctrl-names = "default";
575         pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
576         bus-width = <8>;
577         cap-mmc-highspeed;
578 };
579
580 &mmc_2 {
581         status = "okay";
582         num-slots = <1>;
583         card-detect-delay = <200>;
584         samsung,dw-mshc-ciu-div = <3>;
585         samsung,dw-mshc-sdr-timing = <2 3>;
586         samsung,dw-mshc-ddr-timing = <1 2>;
587         pinctrl-names = "default";
588         pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
589         bus-width = <4>;
590         wp-gpios = <&gpc2 1 0>;
591         cap-sd-highspeed;
592 };
593
594 /*
595  * On Snow we've got SIP WiFi and so can keep drive strengths low to
596  * reduce EMI.
597  */
598 &mmc_3 {
599         status = "okay";
600         num-slots = <1>;
601         broken-cd;
602         card-detect-delay = <200>;
603         samsung,dw-mshc-ciu-div = <3>;
604         samsung,dw-mshc-sdr-timing = <2 3>;
605         samsung,dw-mshc-ddr-timing = <1 2>;
606         pinctrl-names = "default";
607         pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
608         bus-width = <4>;
609         cap-sd-highspeed;
610 };
611
612 &pinctrl_0 {
613         max77686_irq: max77686-irq {
614                 samsung,pins = "gpx3-2";
615                 samsung,pin-function = <0>;
616                 samsung,pin-pud = <0>;
617                 samsung,pin-drv = <0>;
618         };
619 };
620
621 &spi_1 {
622         status = "okay";
623         samsung,spi-src-clk = <0>;
624         num-cs = <1>;
625 };
626
627 #include "cros-ec-keyboard.dtsi"