Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'samsung-dt-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt

Samsung DT updates for v4.2

- for exyos3250
: use s3c6410-rtc instead of exynos3250-rtc
: add JPEG codec node and support it on exynos3250-rinato
: use s3c-rtc clock id for exynos3250-rinato and monk boards

- for exynos4
: add JPEG codec node and syscon property to MIPI DPHY
: remove obsolete MIPI DPHY reg property
: enable s3c-rtc on exynos4412-trats2

- for exynos5
: add syscon property to MIPI DPHY for exynos5420
: enable s3c-rtc on exynos5420-arndale-octa
: add missing irq pinctrl for max77686 on exynos5250-smdk5250

: clk: add bindings for 32kHz clocks from s2mps11
: fix pinctrl for s2mps11-irq on exynos5420-arndale-octa

- for exynos5422-odroidxu3
: add mmc detect gpio and LEDs
: add HS400 support, simple-audio-card and rtc_src clock

* tag 'samsung-dt-3' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
ARM: dts: Add syscon property to the MIPI DPHY for exynos4415
ARM: dts: Remove obsolete MIPI DPHY 'reg' property for exynos4
ARM: dts: Use last parent for clocks during power domain on/off
ARM: dts: add support JPEG codec for exynos3250-rinato
ARM: dts: support simple-audio-card for exynos5420 and exynos5422-odroidxu3
ARM: dts: add jpeg-codec node for exynos4 and exynos4x12
ARM: dts: Enable S3C RTC on exynos4412-trats2 and exynos5420-arndale-octa
ARM: dts: Use define for s3c-rtc clock id for exynos3250-monk
ARM: dts: Use define for s3c-rtc clock id for exynos3250-rinato
ARM: dts: Use s3c6410-rtc instead of exynos3250-rtc for exynos3250/4415
ARM: dts: add 'rtc_src' clock to rtc node for exynos5422-odroidxu3
clk: samsung: Add bindings for 32kHz clocks from s2mps11
ARM: dts: fix pinctrl for s2mps11-irq on exynos5420-arndale-octa
ARM: dts: Add syscon property to the MIPI phy in exynos5420
ARM: dts: Add HS400 support for exynos5422-odroidxu3
ARM: dts: Add LEDs for exynos5422-odroidxu3
ARM: dts: add mmc detect gpio for exynos5422-odroidxu3
ARM: dts: add JPEG codec device node for exynos3250
ARM: dts: Add missing irq pinctrl for max77686 on smdk5250

+211 -28
+2 -1
Documentation/devicetree/bindings/rtc/s3c-rtc.txt
··· 6 6 * "samsung,s3c2416-rtc" - for controllers compatible with s3c2416 rtc. 7 7 * "samsung,s3c2443-rtc" - for controllers compatible with s3c2443 rtc. 8 8 * "samsung,s3c6410-rtc" - for controllers compatible with s3c6410 rtc. 9 - * "samsung,exynos3250-rtc" - for controllers compatible with exynos3250 rtc. 9 + * "samsung,exynos3250-rtc" - (deprecated) for controllers compatible with 10 + exynos3250 rtc (use "samsung,s3c6410-rtc"). 10 11 - reg: physical base address of the controller and length of memory mapped 11 12 region. 12 13 - interrupts: Two interrupt numbers to the cpu should be specified. First
+2 -1
arch/arm/boot/dts/exynos3250-monk.dts
··· 16 16 #include "exynos3250.dtsi" 17 17 #include <dt-bindings/input/input.h> 18 18 #include <dt-bindings/gpio/gpio.h> 19 + #include <dt-bindings/clock/samsung,s2mps11.h> 19 20 20 21 / { 21 22 model = "Samsung Monk board"; ··· 433 432 }; 434 433 435 434 &rtc { 436 - clocks = <&cmu CLK_RTC>, <&s2mps14_osc 0>; 435 + clocks = <&cmu CLK_RTC>, <&s2mps14_osc S2MPS11_CLK_AP>; 437 436 clock-names = "rtc", "rtc_src"; 438 437 status = "okay"; 439 438 };
+6 -1
arch/arm/boot/dts/exynos3250-rinato.dts
··· 16 16 #include "exynos3250.dtsi" 17 17 #include <dt-bindings/input/input.h> 18 18 #include <dt-bindings/gpio/gpio.h> 19 + #include <dt-bindings/clock/samsung,s2mps11.h> 19 20 20 21 / { 21 22 model = "Samsung Rinato board"; ··· 568 567 status = "okay"; 569 568 }; 570 569 570 + &jpeg { 571 + status = "okay"; 572 + }; 573 + 571 574 &mshc_0 { 572 575 #address-cells = <1>; 573 576 #size-cells = <0>; ··· 610 605 }; 611 606 612 607 &rtc { 613 - clocks = <&cmu CLK_RTC>, <&s2mps14_osc 0>; 608 + clocks = <&cmu CLK_RTC>, <&s2mps14_osc S2MPS11_CLK_AP>; 614 609 clock-names = "rtc", "rtc_src"; 615 610 status = "okay"; 616 611 };
+14 -1
arch/arm/boot/dts/exynos3250.dtsi
··· 189 189 }; 190 190 191 191 rtc: rtc@10070000 { 192 - compatible = "samsung,exynos3250-rtc"; 192 + compatible = "samsung,s3c6410-rtc"; 193 193 reg = <0x10070000 0x100>; 194 194 interrupts = <0 73 0>, <0 74 0>; 195 195 interrupt-parent = <&pmu_system_controller>; ··· 241 241 compatible = "samsung,exynos3250-pinctrl"; 242 242 reg = <0x11400000 0x1000>; 243 243 interrupts = <0 240 0>; 244 + }; 245 + 246 + jpeg: codec@11830000 { 247 + compatible = "samsung,exynos3250-jpeg"; 248 + reg = <0x11830000 0x1000>; 249 + interrupts = <0 171 0>; 250 + clocks = <&cmu CLK_JPEG>, <&cmu CLK_SCLK_JPEG>; 251 + clock-names = "jpeg", "sclk"; 252 + power-domains = <&pd_cam>; 253 + assigned-clocks = <&cmu CLK_MOUT_CAM_BLK>, <&cmu CLK_SCLK_JPEG>; 254 + assigned-clock-rates = <0>, <150000000>; 255 + assigned-clock-parents = <&cmu CLK_DIV_MPLL_PRE>; 256 + status = "disabled"; 244 257 }; 245 258 246 259 fimd: fimd@11c00000 {
+10 -2
arch/arm/boot/dts/exynos4.dtsi
··· 78 78 79 79 mipi_phy: video-phy@10020710 { 80 80 compatible = "samsung,s5pv210-mipi-video-phy"; 81 - reg = <0x10020710 8>; 82 81 #phy-cells = <1>; 83 82 syscon = <&pmu_system_controller>; 84 83 }; ··· 265 266 status = "disabled"; 266 267 }; 267 268 268 - rtc@10070000 { 269 + rtc: rtc@10070000 { 269 270 compatible = "samsung,s3c6410-rtc"; 270 271 reg = <0x10070000 0x100>; 271 272 interrupt-parent = <&pmu_system_controller>; ··· 686 687 687 688 tmu: tmu@100C0000 { 688 689 #include "exynos4412-tmu-sensor-conf.dtsi" 690 + }; 691 + 692 + jpeg-codec@11840000 { 693 + compatible = "samsung,exynos4210-jpeg"; 694 + reg = <0x11840000 0x1000>; 695 + interrupts = <0 88 0>; 696 + clocks = <&clock CLK_JPEG>; 697 + clock-names = "jpeg"; 698 + power-domains = <&pd_cam>; 689 699 }; 690 700 691 701 hdmi: hdmi@12D00000 {
+8 -1
arch/arm/boot/dts/exynos4412-trats2.dts
··· 16 16 #include "exynos4412.dtsi" 17 17 #include <dt-bindings/gpio/gpio.h> 18 18 #include <dt-bindings/interrupt-controller/irq.h> 19 + #include <dt-bindings/clock/maxim,max77686.h> 19 20 20 21 / { 21 22 model = "Samsung Trats 2 based on Exynos4412"; ··· 215 214 pinctrl-names = "default"; 216 215 status = "okay"; 217 216 218 - max77686_pmic@09 { 217 + max77686: max77686_pmic@09 { 219 218 compatible = "maxim,max77686"; 220 219 interrupt-parent = <&gpx0>; 221 220 interrupts = <7 0>; ··· 1304 1303 1305 1304 PIN_SLP(gpv4-0, INPUT, DOWN); 1306 1305 }; 1306 + }; 1307 + 1308 + &rtc { 1309 + status = "okay"; 1310 + clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>; 1311 + clock-names = "rtc", "rtc_src"; 1307 1312 };
+2 -2
arch/arm/boot/dts/exynos4415.dtsi
··· 124 124 125 125 mipi_phy: video-phy@10020710 { 126 126 compatible = "samsung,s5pv210-mipi-video-phy"; 127 - reg = <0x10020710 8>; 128 127 #phy-cells = <1>; 128 + syscon = <&pmu_system_controller>; 129 129 }; 130 130 131 131 pd_cam: cam-power-domain@10024000 { ··· 177 177 }; 178 178 179 179 rtc: rtc@10070000 { 180 - compatible = "samsung,exynos3250-rtc"; 180 + compatible = "samsung,s3c6410-rtc"; 181 181 reg = <0x10070000 0x100>; 182 182 interrupts = <0 73 0>, <0 74 0>; 183 183 status = "disabled";
+4
arch/arm/boot/dts/exynos4x12.dtsi
··· 299 299 status = "disabled"; 300 300 }; 301 301 302 + jpeg-codec@11840000 { 303 + compatible = "samsung,exynos4212-jpeg"; 304 + }; 305 + 302 306 hdmi: hdmi@12D00000 { 303 307 compatible = "samsung,exynos4212-hdmi"; 304 308 };
+12
arch/arm/boot/dts/exynos5250-smdk5250.dts
··· 131 131 reg = <0x09>; 132 132 interrupt-parent = <&gpx3>; 133 133 interrupts = <2 IRQ_TYPE_NONE>; 134 + pinctrl-names = "default"; 135 + pinctrl-0 = <&max77686_irq>; 136 + wakeup-source; 134 137 135 138 voltage-regulators { 136 139 ldo1_reg: LDO1 { ··· 411 408 label = "Kernel"; 412 409 reg = <0x40000 0xc0000>; 413 410 }; 411 + }; 412 + }; 413 + 414 + &pinctrl_0 { 415 + max77686_irq: max77686-irq { 416 + samsung,pins = "gpx3-2"; 417 + samsung,pin-function = <0xf>; 418 + samsung,pin-pud = <0>; 419 + samsung,pin-drv = <0>; 414 420 }; 415 421 };
+19 -5
arch/arm/boot/dts/exynos5420-arndale-octa.dts
··· 13 13 #include "exynos5420.dtsi" 14 14 #include <dt-bindings/interrupt-controller/irq.h> 15 15 #include <dt-bindings/input/input.h> 16 + #include <dt-bindings/clock/samsung,s2mps11.h> 16 17 17 18 / { 18 19 model = "Insignal Arndale Octa evaluation board based on EXYNOS5420"; ··· 37 36 compatible = "samsung,exynos5420-oscclk"; 38 37 clock-frequency = <24000000>; 39 38 }; 40 - }; 41 - 42 - rtc@101E0000 { 43 - status = "okay"; 44 39 }; 45 40 46 41 codec@11000000 { ··· 87 90 s2mps11,buck4-ramp-enable = <1>; 88 91 89 92 interrupt-parent = <&gpx3>; 90 - interrupts = <2 IRQ_TYPE_LEVEL_HIGH>; 93 + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; 94 + pinctrl-names = "default"; 95 + pinctrl-0 = <&s2mps11_irq>; 91 96 92 97 s2mps11_osc: clocks { 93 98 #clock-cells = <1>; ··· 374 375 375 376 &cci { 376 377 status = "disabled"; 378 + }; 379 + 380 + &pinctrl_0 { 381 + s2mps11_irq: s2mps11-irq { 382 + samsung,pins = "gpx3-2"; 383 + samsung,pin-function = <0xf>; 384 + samsung,pin-pud = <0>; 385 + samsung,pin-drv = <0>; 386 + }; 387 + }; 388 + 389 + &rtc { 390 + status = "okay"; 391 + clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>; 392 + clock-names = "rtc", "rtc_src"; 377 393 };
+14 -10
arch/arm/boot/dts/exynos5420.dtsi
··· 264 264 mfc_pd: power-domain@10044060 { 265 265 compatible = "samsung,exynos4210-pd"; 266 266 reg = <0x10044060 0x20>; 267 - clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_SW_ACLK333>, 268 - <&clock CLK_MOUT_USER_ACLK333>; 269 - clock-names = "oscclk", "pclk0", "clk0"; 267 + clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_USER_ACLK333>; 268 + clock-names = "oscclk", "clk0"; 270 269 #power-domain-cells = <0>; 271 270 }; 272 271 ··· 279 280 compatible = "samsung,exynos4210-pd"; 280 281 reg = <0x100440C0 0x20>; 281 282 #power-domain-cells = <0>; 282 - clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_SW_ACLK200>, 283 + clocks = <&clock CLK_FIN_PLL>, 283 284 <&clock CLK_MOUT_USER_ACLK200_DISP1>, 284 - <&clock CLK_MOUT_SW_ACLK300>, 285 285 <&clock CLK_MOUT_USER_ACLK300_DISP1>, 286 - <&clock CLK_MOUT_SW_ACLK400>, 287 286 <&clock CLK_MOUT_USER_ACLK400_DISP1>, 288 287 <&clock CLK_FIMD1>, <&clock CLK_MIXER>; 289 - clock-names = "oscclk", "pclk0", "clk0", 290 - "pclk1", "clk1", "pclk2", "clk2", 291 - "asb0", "asb1"; 288 + clock-names = "oscclk", "clk0", "clk1", "clk2", "asb0", "asb1"; 292 289 }; 293 290 294 291 pinctrl_0: pinctrl@13400000 { ··· 411 416 <&clock_audss EXYNOS_I2S_BUS>, 412 417 <&clock_audss EXYNOS_SCLK_I2S>; 413 418 clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; 419 + #clock-cells = <1>; 420 + clock-output-names = "i2s_cdclk0"; 421 + #sound-dai-cells = <1>; 414 422 samsung,idma-addr = <0x03000000>; 415 423 pinctrl-names = "default"; 416 424 pinctrl-0 = <&i2s0_bus>; ··· 428 430 dma-names = "tx", "rx"; 429 431 clocks = <&clock CLK_I2S1>, <&clock CLK_SCLK_I2S1>; 430 432 clock-names = "iis", "i2s_opclk0"; 433 + #clock-cells = <1>; 434 + clock-output-names = "i2s_cdclk1"; 435 + #sound-dai-cells = <1>; 431 436 pinctrl-names = "default"; 432 437 pinctrl-0 = <&i2s1_bus>; 433 438 status = "disabled"; ··· 444 443 dma-names = "tx", "rx"; 445 444 clocks = <&clock CLK_I2S2>, <&clock CLK_SCLK_I2S2>; 446 445 clock-names = "iis", "i2s_opclk0"; 446 + #clock-cells = <1>; 447 + clock-output-names = "i2s_cdclk2"; 448 + #sound-dai-cells = <1>; 447 449 pinctrl-names = "default"; 448 450 pinctrl-0 = <&i2s2_bus>; 449 451 status = "disabled"; ··· 545 541 546 542 mipi_phy: video-phy@10040714 { 547 543 compatible = "samsung,s5pv210-mipi-video-phy"; 548 - reg = <0x10040714 12>; 544 + syscon = <&pmu_system_controller>; 549 545 #phy-cells = <1>; 550 546 }; 551 547
+95 -4
arch/arm/boot/dts/exynos5422-odroidxu3.dts
··· 11 11 */ 12 12 13 13 /dts-v1/; 14 + #include <dt-bindings/clock/samsung,s2mps11.h> 15 + #include <dt-bindings/gpio/gpio.h> 16 + #include <dt-bindings/sound/samsung-i2s.h> 14 17 #include "exynos5800.dtsi" 15 18 16 19 / { ··· 285 282 }; 286 283 }; 287 284 288 - rtc@101E0000 { 289 - status = "okay"; 285 + leds { 286 + compatible = "gpio-leds"; 287 + heartbeat { 288 + label = "blue:heartbeart"; 289 + gpios = <&gpb2 2 0>; 290 + default-state = "off"; 291 + linux,default-trigger = "heartbeat"; 292 + }; 293 + 294 + eMMC { 295 + label = "green:eMMC"; 296 + gpios = <&gpb2 1 0>; 297 + default-state = "off"; 298 + linux,default-trigger = "mmc0"; 299 + }; 300 + 301 + microSD { 302 + label = "red:microSD"; 303 + gpios = <&gpx2 3 0>; 304 + default-state = "off"; 305 + linux,default-trigger = "mmc1"; 306 + }; 290 307 }; 308 + 309 + sound: sound { 310 + compatible = "simple-audio-card"; 311 + 312 + simple-audio-card,name = "Odroid-XU3"; 313 + simple-audio-card,widgets = 314 + "Headphone", "Headphone Jack", 315 + "Speakers", "Speakers"; 316 + simple-audio-card,routing = 317 + "Headphone Jack", "HPL", 318 + "Headphone Jack", "HPR", 319 + "Headphone Jack", "MICBIAS", 320 + "IN1", "Headphone Jack", 321 + "Speakers", "SPKL", 322 + "Speakers", "SPKR"; 323 + 324 + simple-audio-card,format = "i2s"; 325 + simple-audio-card,bitclock-master = <&link0_codec>; 326 + simple-audio-card,frame-master = <&link0_codec>; 327 + 328 + simple-audio-card,cpu { 329 + sound-dai = <&i2s0 0>; 330 + system-clock-frequency = <19200000>; 331 + }; 332 + 333 + link0_codec: simple-audio-card,codec { 334 + sound-dai = <&max98090>; 335 + clocks = <&i2s0 CLK_I2S_CDCLK>; 336 + }; 337 + }; 338 + }; 339 + 340 + &clock_audss { 341 + assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>, 342 + <&clock_audss EXYNOS_MOUT_I2S>, 343 + <&clock_audss EXYNOS_DOUT_AUD_BUS>; 344 + assigned-clock-parents = <&clock CLK_FIN_PLL>, 345 + <&clock_audss EXYNOS_MOUT_AUDSS>; 346 + assigned-clock-rates = <0>, 347 + <0>, 348 + <19200000>; 349 + }; 350 + 351 + &hsi2c_5 { 352 + status = "okay"; 353 + max98090: max98090@10 { 354 + compatible = "maxim,max98090"; 355 + reg = <0x10>; 356 + interrupt-parent = <&gpx3>; 357 + interrupts = <2 0>; 358 + clocks = <&i2s0 CLK_I2S_CDCLK>; 359 + clock-names = "mclk"; 360 + #sound-dai-cells = <0>; 361 + }; 362 + }; 363 + 364 + &i2s0 { 365 + status = "okay"; 291 366 }; 292 367 293 368 &hdmi { ··· 387 306 &mmc_0 { 388 307 status = "okay"; 389 308 mmc-pwrseq = <&emmc_pwrseq>; 390 - broken-cd; 309 + cd-gpios = <&gpc0 2 GPIO_ACTIVE_LOW>; 391 310 card-detect-delay = <200>; 392 311 samsung,dw-mshc-ciu-div = <3>; 393 312 samsung,dw-mshc-sdr-timing = <0 4>; 394 313 samsung,dw-mshc-ddr-timing = <0 2>; 314 + samsung,dw-mshc-hs400-timing = <0 2>; 315 + samsung,read-strobe-delay = <90>; 395 316 pinctrl-names = "default"; 396 - pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>; 317 + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>; 397 318 bus-width = <8>; 398 319 cap-mmc-highspeed; 320 + mmc-hs200-1_8v; 321 + mmc-hs400-1_8v; 399 322 }; 400 323 401 324 &mmc_2 { ··· 470 385 reg = <0x45>; 471 386 shunt-resistor = <10000>; 472 387 }; 388 + }; 389 + 390 + &rtc { 391 + status = "okay"; 392 + clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>; 393 + clock-names = "rtc", "rtc_src"; 473 394 };
+23
include/dt-bindings/clock/samsung,s2mps11.h
··· 1 + /* 2 + * Copyright (C) 2015 Markus Reichl 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 as 6 + * published by the Free Software Foundation. 7 + * 8 + * Device Tree binding constants clocks for the Samsung S2MPS11 PMIC. 9 + */ 10 + 11 + #ifndef _DT_BINDINGS_CLOCK_SAMSUNG_S2MPS11_CLOCK_H 12 + #define _DT_BINDINGS_CLOCK_SAMSUNG_S2MPS11_CLOCK_H 13 + 14 + /* Fixed rate clocks. */ 15 + 16 + #define S2MPS11_CLK_AP 0 17 + #define S2MPS11_CLK_CP 1 18 + #define S2MPS11_CLK_BT 2 19 + 20 + /* Total number of clocks. */ 21 + #define S2MPS11_CLKS_NUM (S2MPS11_CLK_BT + 1) 22 + 23 + #endif /* _DT_BINDINGS_CLOCK_SAMSUNG_S2MPS11_CLOCK_H */