diff options
21 files changed, 565 insertions, 11 deletions
diff --git a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt index f4445e5a2bbb..1e097037349c 100644 --- a/Documentation/devicetree/bindings/arm/exynos/power_domain.txt +++ b/Documentation/devicetree/bindings/arm/exynos/power_domain.txt | |||
| @@ -22,6 +22,8 @@ Optional Properties: | |||
| 22 | - pclkN, clkN: Pairs of parent of input clock and input clock to the | 22 | - pclkN, clkN: Pairs of parent of input clock and input clock to the |
| 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) | 23 | devices in this power domain. Maximum of 4 pairs (N = 0 to 3) |
| 24 | are supported currently. | 24 | are supported currently. |
| 25 | - power-domains: phandle pointing to the parent power domain, for more details | ||
| 26 | see Documentation/devicetree/bindings/power/power_domain.txt | ||
| 25 | 27 | ||
| 26 | Node of a device using power domains must have a power-domains property | 28 | Node of a device using power domains must have a power-domains property |
| 27 | defined with a phandle to respective power domain. | 29 | defined with a phandle to respective power domain. |
diff --git a/Documentation/devicetree/bindings/power/power_domain.txt b/Documentation/devicetree/bindings/power/power_domain.txt index 98c16672ab5f..0f8ed3710c66 100644 --- a/Documentation/devicetree/bindings/power/power_domain.txt +++ b/Documentation/devicetree/bindings/power/power_domain.txt | |||
| @@ -19,6 +19,16 @@ Required properties: | |||
| 19 | providing multiple PM domains (e.g. power controllers), but can be any value | 19 | providing multiple PM domains (e.g. power controllers), but can be any value |
| 20 | as specified by device tree binding documentation of particular provider. | 20 | as specified by device tree binding documentation of particular provider. |
| 21 | 21 | ||
| 22 | Optional properties: | ||
| 23 | - power-domains : A phandle and PM domain specifier as defined by bindings of | ||
| 24 | the power controller specified by phandle. | ||
| 25 | Some power domains might be powered from another power domain (or have | ||
| 26 | other hardware specific dependencies). For representing such dependency | ||
| 27 | a standard PM domain consumer binding is used. When provided, all domains | ||
| 28 | created by the given provider should be subdomains of the domain | ||
| 29 | specified by this binding. More details about power domain specifier are | ||
| 30 | available in the next section. | ||
| 31 | |||
| 22 | Example: | 32 | Example: |
| 23 | 33 | ||
| 24 | power: power-controller@12340000 { | 34 | power: power-controller@12340000 { |
| @@ -30,6 +40,25 @@ Example: | |||
| 30 | The node above defines a power controller that is a PM domain provider and | 40 | The node above defines a power controller that is a PM domain provider and |
| 31 | expects one cell as its phandle argument. | 41 | expects one cell as its phandle argument. |
| 32 | 42 | ||
| 43 | Example 2: | ||
| 44 | |||
| 45 | parent: power-controller@12340000 { | ||
| 46 | compatible = "foo,power-controller"; | ||
| 47 | reg = <0x12340000 0x1000>; | ||
| 48 | #power-domain-cells = <1>; | ||
| 49 | }; | ||
| 50 | |||
| 51 | child: power-controller@12340000 { | ||
| 52 | compatible = "foo,power-controller"; | ||
| 53 | reg = <0x12341000 0x1000>; | ||
| 54 | power-domains = <&parent 0>; | ||
| 55 | #power-domain-cells = <1>; | ||
| 56 | }; | ||
| 57 | |||
| 58 | The nodes above define two power controllers: 'parent' and 'child'. | ||
| 59 | Domains created by the 'child' power controller are subdomains of '0' power | ||
| 60 | domain provided by the 'parent' power controller. | ||
| 61 | |||
| 33 | ==PM domain consumers== | 62 | ==PM domain consumers== |
| 34 | 63 | ||
| 35 | Required properties: | 64 | Required properties: |
diff --git a/arch/arm/boot/dts/exynos3250.dtsi b/arch/arm/boot/dts/exynos3250.dtsi index 277b48b0b6f9..ac6b0ae42caf 100644 --- a/arch/arm/boot/dts/exynos3250.dtsi +++ b/arch/arm/boot/dts/exynos3250.dtsi | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include "skeleton.dtsi" | 20 | #include "skeleton.dtsi" |
| 21 | #include "exynos4-cpu-thermal.dtsi" | ||
| 21 | #include <dt-bindings/clock/exynos3250.h> | 22 | #include <dt-bindings/clock/exynos3250.h> |
| 22 | 23 | ||
| 23 | / { | 24 | / { |
| @@ -193,6 +194,7 @@ | |||
| 193 | interrupts = <0 216 0>; | 194 | interrupts = <0 216 0>; |
| 194 | clocks = <&cmu CLK_TMU_APBIF>; | 195 | clocks = <&cmu CLK_TMU_APBIF>; |
| 195 | clock-names = "tmu_apbif"; | 196 | clock-names = "tmu_apbif"; |
| 197 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 196 | status = "disabled"; | 198 | status = "disabled"; |
| 197 | }; | 199 | }; |
| 198 | 200 | ||
diff --git a/arch/arm/boot/dts/exynos4-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos4-cpu-thermal.dtsi new file mode 100644 index 000000000000..735cb2f10817 --- /dev/null +++ b/arch/arm/boot/dts/exynos4-cpu-thermal.dtsi | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | /* | ||
| 2 | * Device tree sources for Exynos4 thermal zone | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com> | ||
| 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 | |||
| 12 | #include <dt-bindings/thermal/thermal.h> | ||
| 13 | |||
| 14 | / { | ||
| 15 | thermal-zones { | ||
| 16 | cpu_thermal: cpu-thermal { | ||
| 17 | thermal-sensors = <&tmu 0>; | ||
| 18 | polling-delay-passive = <0>; | ||
| 19 | polling-delay = <0>; | ||
| 20 | trips { | ||
| 21 | cpu_alert0: cpu-alert-0 { | ||
| 22 | temperature = <70000>; /* millicelsius */ | ||
| 23 | hysteresis = <10000>; /* millicelsius */ | ||
| 24 | type = "active"; | ||
| 25 | }; | ||
| 26 | cpu_alert1: cpu-alert-1 { | ||
| 27 | temperature = <95000>; /* millicelsius */ | ||
| 28 | hysteresis = <10000>; /* millicelsius */ | ||
| 29 | type = "active"; | ||
| 30 | }; | ||
| 31 | cpu_alert2: cpu-alert-2 { | ||
| 32 | temperature = <110000>; /* millicelsius */ | ||
| 33 | hysteresis = <10000>; /* millicelsius */ | ||
| 34 | type = "active"; | ||
| 35 | }; | ||
| 36 | cpu_crit0: cpu-crit-0 { | ||
| 37 | temperature = <120000>; /* millicelsius */ | ||
| 38 | hysteresis = <0>; /* millicelsius */ | ||
| 39 | type = "critical"; | ||
| 40 | }; | ||
| 41 | }; | ||
| 42 | cooling-maps { | ||
| 43 | map0 { | ||
| 44 | trip = <&cpu_alert0>; | ||
| 45 | }; | ||
| 46 | map1 { | ||
| 47 | trip = <&cpu_alert1>; | ||
| 48 | }; | ||
| 49 | }; | ||
| 50 | }; | ||
| 51 | }; | ||
| 52 | }; | ||
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi index 76173cacd450..77ea547768f4 100644 --- a/arch/arm/boot/dts/exynos4.dtsi +++ b/arch/arm/boot/dts/exynos4.dtsi | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | i2c5 = &i2c_5; | 38 | i2c5 = &i2c_5; |
| 39 | i2c6 = &i2c_6; | 39 | i2c6 = &i2c_6; |
| 40 | i2c7 = &i2c_7; | 40 | i2c7 = &i2c_7; |
| 41 | i2c8 = &i2c_8; | ||
| 41 | csis0 = &csis_0; | 42 | csis0 = &csis_0; |
| 42 | csis1 = &csis_1; | 43 | csis1 = &csis_1; |
| 43 | fimc0 = &fimc_0; | 44 | fimc0 = &fimc_0; |
| @@ -104,6 +105,7 @@ | |||
| 104 | compatible = "samsung,exynos4210-pd"; | 105 | compatible = "samsung,exynos4210-pd"; |
| 105 | reg = <0x10023C20 0x20>; | 106 | reg = <0x10023C20 0x20>; |
| 106 | #power-domain-cells = <0>; | 107 | #power-domain-cells = <0>; |
| 108 | power-domains = <&pd_lcd0>; | ||
| 107 | }; | 109 | }; |
| 108 | 110 | ||
| 109 | pd_cam: cam-power-domain@10023C00 { | 111 | pd_cam: cam-power-domain@10023C00 { |
| @@ -554,6 +556,22 @@ | |||
| 554 | status = "disabled"; | 556 | status = "disabled"; |
| 555 | }; | 557 | }; |
| 556 | 558 | ||
| 559 | i2c_8: i2c@138E0000 { | ||
| 560 | #address-cells = <1>; | ||
| 561 | #size-cells = <0>; | ||
| 562 | compatible = "samsung,s3c2440-hdmiphy-i2c"; | ||
| 563 | reg = <0x138E0000 0x100>; | ||
| 564 | interrupts = <0 93 0>; | ||
| 565 | clocks = <&clock CLK_I2C_HDMI>; | ||
| 566 | clock-names = "i2c"; | ||
| 567 | status = "disabled"; | ||
| 568 | |||
| 569 | hdmi_i2c_phy: hdmiphy@38 { | ||
| 570 | compatible = "exynos4210-hdmiphy"; | ||
| 571 | reg = <0x38>; | ||
| 572 | }; | ||
| 573 | }; | ||
| 574 | |||
| 557 | spi_0: spi@13920000 { | 575 | spi_0: spi@13920000 { |
| 558 | compatible = "samsung,exynos4210-spi"; | 576 | compatible = "samsung,exynos4210-spi"; |
| 559 | reg = <0x13920000 0x100>; | 577 | reg = <0x13920000 0x100>; |
| @@ -663,6 +681,33 @@ | |||
| 663 | status = "disabled"; | 681 | status = "disabled"; |
| 664 | }; | 682 | }; |
| 665 | 683 | ||
| 684 | tmu: tmu@100C0000 { | ||
| 685 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 686 | }; | ||
| 687 | |||
| 688 | hdmi: hdmi@12D00000 { | ||
| 689 | compatible = "samsung,exynos4210-hdmi"; | ||
| 690 | reg = <0x12D00000 0x70000>; | ||
| 691 | interrupts = <0 92 0>; | ||
| 692 | clock-names = "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy", | ||
| 693 | "mout_hdmi"; | ||
| 694 | clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>, | ||
| 695 | <&clock CLK_SCLK_PIXEL>, <&clock CLK_SCLK_HDMIPHY>, | ||
| 696 | <&clock CLK_MOUT_HDMI>; | ||
| 697 | phy = <&hdmi_i2c_phy>; | ||
| 698 | power-domains = <&pd_tv>; | ||
| 699 | samsung,syscon-phandle = <&pmu_system_controller>; | ||
| 700 | status = "disabled"; | ||
| 701 | }; | ||
| 702 | |||
| 703 | mixer: mixer@12C10000 { | ||
| 704 | compatible = "samsung,exynos4210-mixer"; | ||
| 705 | interrupts = <0 91 0>; | ||
| 706 | reg = <0x12C10000 0x2100>, <0x12c00000 0x300>; | ||
| 707 | power-domains = <&pd_tv>; | ||
| 708 | status = "disabled"; | ||
| 709 | }; | ||
| 710 | |||
| 666 | ppmu_dmc0: ppmu_dmc0@106a0000 { | 711 | ppmu_dmc0: ppmu_dmc0@106a0000 { |
| 667 | compatible = "samsung,exynos-ppmu"; | 712 | compatible = "samsung,exynos-ppmu"; |
| 668 | reg = <0x106a0000 0x2000>; | 713 | reg = <0x106a0000 0x2000>; |
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts index 3d6652a4b6cb..32c5fd8f6269 100644 --- a/arch/arm/boot/dts/exynos4210-trats.dts +++ b/arch/arm/boot/dts/exynos4210-trats.dts | |||
| @@ -426,6 +426,25 @@ | |||
| 426 | status = "okay"; | 426 | status = "okay"; |
| 427 | }; | 427 | }; |
| 428 | 428 | ||
| 429 | tmu@100C0000 { | ||
| 430 | status = "okay"; | ||
| 431 | }; | ||
| 432 | |||
| 433 | thermal-zones { | ||
| 434 | cpu_thermal: cpu-thermal { | ||
| 435 | cooling-maps { | ||
| 436 | map0 { | ||
| 437 | /* Corresponds to 800MHz at freq_table */ | ||
| 438 | cooling-device = <&cpu0 2 2>; | ||
| 439 | }; | ||
| 440 | map1 { | ||
| 441 | /* Corresponds to 200MHz at freq_table */ | ||
| 442 | cooling-device = <&cpu0 4 4>; | ||
| 443 | }; | ||
| 444 | }; | ||
| 445 | }; | ||
| 446 | }; | ||
| 447 | |||
| 429 | camera { | 448 | camera { |
| 430 | pinctrl-names = "default"; | 449 | pinctrl-names = "default"; |
| 431 | pinctrl-0 = <>; | 450 | pinctrl-0 = <>; |
diff --git a/arch/arm/boot/dts/exynos4210-universal_c210.dts b/arch/arm/boot/dts/exynos4210-universal_c210.dts index b57e6b82ea20..d4f2b11319dd 100644 --- a/arch/arm/boot/dts/exynos4210-universal_c210.dts +++ b/arch/arm/boot/dts/exynos4210-universal_c210.dts | |||
| @@ -505,6 +505,63 @@ | |||
| 505 | assigned-clock-rates = <0>, <160000000>; | 505 | assigned-clock-rates = <0>, <160000000>; |
| 506 | }; | 506 | }; |
| 507 | }; | 507 | }; |
| 508 | |||
| 509 | hdmi_en: voltage-regulator-hdmi-5v { | ||
| 510 | compatible = "regulator-fixed"; | ||
| 511 | regulator-name = "HDMI_5V"; | ||
| 512 | regulator-min-microvolt = <5000000>; | ||
| 513 | regulator-max-microvolt = <5000000>; | ||
| 514 | gpio = <&gpe0 1 0>; | ||
| 515 | enable-active-high; | ||
| 516 | }; | ||
| 517 | |||
| 518 | hdmi_ddc: i2c-ddc { | ||
| 519 | compatible = "i2c-gpio"; | ||
| 520 | gpios = <&gpe4 2 0 &gpe4 3 0>; | ||
| 521 | i2c-gpio,delay-us = <100>; | ||
| 522 | #address-cells = <1>; | ||
| 523 | #size-cells = <0>; | ||
| 524 | |||
| 525 | pinctrl-0 = <&i2c_ddc_bus>; | ||
| 526 | pinctrl-names = "default"; | ||
| 527 | status = "okay"; | ||
| 528 | }; | ||
| 529 | |||
| 530 | mixer@12C10000 { | ||
| 531 | status = "okay"; | ||
| 532 | }; | ||
| 533 | |||
| 534 | hdmi@12D00000 { | ||
| 535 | hpd-gpio = <&gpx3 7 0>; | ||
| 536 | pinctrl-names = "default"; | ||
| 537 | pinctrl-0 = <&hdmi_hpd>; | ||
| 538 | hdmi-en-supply = <&hdmi_en>; | ||
| 539 | vdd-supply = <&ldo3_reg>; | ||
| 540 | vdd_osc-supply = <&ldo4_reg>; | ||
| 541 | vdd_pll-supply = <&ldo3_reg>; | ||
| 542 | ddc = <&hdmi_ddc>; | ||
| 543 | status = "okay"; | ||
| 544 | }; | ||
| 545 | |||
| 546 | i2c@138E0000 { | ||
| 547 | status = "okay"; | ||
| 548 | }; | ||
| 549 | }; | ||
| 550 | |||
| 551 | &pinctrl_1 { | ||
| 552 | hdmi_hpd: hdmi-hpd { | ||
| 553 | samsung,pins = "gpx3-7"; | ||
| 554 | samsung,pin-pud = <0>; | ||
| 555 | }; | ||
| 556 | }; | ||
| 557 | |||
| 558 | &pinctrl_0 { | ||
| 559 | i2c_ddc_bus: i2c-ddc-bus { | ||
| 560 | samsung,pins = "gpe4-2", "gpe4-3"; | ||
| 561 | samsung,pin-function = <2>; | ||
| 562 | samsung,pin-pud = <3>; | ||
| 563 | samsung,pin-drv = <0>; | ||
| 564 | }; | ||
| 508 | }; | 565 | }; |
| 509 | 566 | ||
| 510 | &mdma1 { | 567 | &mdma1 { |
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index 67c832c9dcf1..be89f83f70e7 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | #include "exynos4.dtsi" | 22 | #include "exynos4.dtsi" |
| 23 | #include "exynos4210-pinctrl.dtsi" | 23 | #include "exynos4210-pinctrl.dtsi" |
| 24 | #include "exynos4-cpu-thermal.dtsi" | ||
| 24 | 25 | ||
| 25 | / { | 26 | / { |
| 26 | compatible = "samsung,exynos4210", "samsung,exynos4"; | 27 | compatible = "samsung,exynos4210", "samsung,exynos4"; |
| @@ -35,10 +36,13 @@ | |||
| 35 | #address-cells = <1>; | 36 | #address-cells = <1>; |
| 36 | #size-cells = <0>; | 37 | #size-cells = <0>; |
| 37 | 38 | ||
| 38 | cpu@900 { | 39 | cpu0: cpu@900 { |
| 39 | device_type = "cpu"; | 40 | device_type = "cpu"; |
| 40 | compatible = "arm,cortex-a9"; | 41 | compatible = "arm,cortex-a9"; |
| 41 | reg = <0x900>; | 42 | reg = <0x900>; |
| 43 | cooling-min-level = <4>; | ||
| 44 | cooling-max-level = <2>; | ||
| 45 | #cooling-cells = <2>; /* min followed by max */ | ||
| 42 | }; | 46 | }; |
| 43 | 47 | ||
| 44 | cpu@901 { | 48 | cpu@901 { |
| @@ -153,16 +157,38 @@ | |||
| 153 | reg = <0x03860000 0x1000>; | 157 | reg = <0x03860000 0x1000>; |
| 154 | }; | 158 | }; |
| 155 | 159 | ||
| 156 | tmu@100C0000 { | 160 | tmu: tmu@100C0000 { |
| 157 | compatible = "samsung,exynos4210-tmu"; | 161 | compatible = "samsung,exynos4210-tmu"; |
| 158 | interrupt-parent = <&combiner>; | 162 | interrupt-parent = <&combiner>; |
| 159 | reg = <0x100C0000 0x100>; | 163 | reg = <0x100C0000 0x100>; |
| 160 | interrupts = <2 4>; | 164 | interrupts = <2 4>; |
| 161 | clocks = <&clock CLK_TMU_APBIF>; | 165 | clocks = <&clock CLK_TMU_APBIF>; |
| 162 | clock-names = "tmu_apbif"; | 166 | clock-names = "tmu_apbif"; |
| 167 | samsung,tmu_gain = <15>; | ||
| 168 | samsung,tmu_reference_voltage = <7>; | ||
| 163 | status = "disabled"; | 169 | status = "disabled"; |
| 164 | }; | 170 | }; |
| 165 | 171 | ||
| 172 | thermal-zones { | ||
| 173 | cpu_thermal: cpu-thermal { | ||
| 174 | polling-delay-passive = <0>; | ||
| 175 | polling-delay = <0>; | ||
| 176 | thermal-sensors = <&tmu 0>; | ||
| 177 | |||
| 178 | trips { | ||
| 179 | cpu_alert0: cpu-alert-0 { | ||
| 180 | temperature = <85000>; /* millicelsius */ | ||
| 181 | }; | ||
| 182 | cpu_alert1: cpu-alert-1 { | ||
| 183 | temperature = <100000>; /* millicelsius */ | ||
| 184 | }; | ||
| 185 | cpu_alert2: cpu-alert-2 { | ||
| 186 | temperature = <110000>; /* millicelsius */ | ||
| 187 | }; | ||
| 188 | }; | ||
| 189 | }; | ||
| 190 | }; | ||
| 191 | |||
| 166 | g2d@12800000 { | 192 | g2d@12800000 { |
| 167 | compatible = "samsung,s5pv210-g2d"; | 193 | compatible = "samsung,s5pv210-g2d"; |
| 168 | reg = <0x12800000 0x1000>; | 194 | reg = <0x12800000 0x1000>; |
| @@ -203,6 +229,14 @@ | |||
| 203 | }; | 229 | }; |
| 204 | }; | 230 | }; |
| 205 | 231 | ||
| 232 | mixer: mixer@12C10000 { | ||
| 233 | clock-names = "mixer", "hdmi", "sclk_hdmi", "vp", "mout_mixer", | ||
| 234 | "sclk_mixer"; | ||
| 235 | clocks = <&clock CLK_MIXER>, <&clock CLK_HDMI>, | ||
| 236 | <&clock CLK_SCLK_HDMI>, <&clock CLK_VP>, | ||
| 237 | <&clock CLK_MOUT_MIXER>, <&clock CLK_SCLK_MIXER>; | ||
| 238 | }; | ||
| 239 | |||
| 206 | ppmu_lcd1: ppmu_lcd1@12240000 { | 240 | ppmu_lcd1: ppmu_lcd1@12240000 { |
| 207 | compatible = "samsung,exynos-ppmu"; | 241 | compatible = "samsung,exynos-ppmu"; |
| 208 | reg = <0x12240000 0x2000>; | 242 | reg = <0x12240000 0x2000>; |
diff --git a/arch/arm/boot/dts/exynos4212.dtsi b/arch/arm/boot/dts/exynos4212.dtsi index dd0a43ec56da..5be03288f1ee 100644 --- a/arch/arm/boot/dts/exynos4212.dtsi +++ b/arch/arm/boot/dts/exynos4212.dtsi | |||
| @@ -26,10 +26,13 @@ | |||
| 26 | #address-cells = <1>; | 26 | #address-cells = <1>; |
| 27 | #size-cells = <0>; | 27 | #size-cells = <0>; |
| 28 | 28 | ||
| 29 | cpu@A00 { | 29 | cpu0: cpu@A00 { |
| 30 | device_type = "cpu"; | 30 | device_type = "cpu"; |
| 31 | compatible = "arm,cortex-a9"; | 31 | compatible = "arm,cortex-a9"; |
| 32 | reg = <0xA00>; | 32 | reg = <0xA00>; |
| 33 | cooling-min-level = <13>; | ||
| 34 | cooling-max-level = <7>; | ||
| 35 | #cooling-cells = <2>; /* min followed by max */ | ||
| 33 | }; | 36 | }; |
| 34 | 37 | ||
| 35 | cpu@A01 { | 38 | cpu@A01 { |
diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi index de80b5bba204..adb4f6a97a1d 100644 --- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi +++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi | |||
| @@ -249,6 +249,20 @@ | |||
| 249 | regulator-always-on; | 249 | regulator-always-on; |
| 250 | }; | 250 | }; |
| 251 | 251 | ||
| 252 | ldo8_reg: ldo@8 { | ||
| 253 | regulator-compatible = "LDO8"; | ||
| 254 | regulator-name = "VDD10_HDMI_1.0V"; | ||
| 255 | regulator-min-microvolt = <1000000>; | ||
| 256 | regulator-max-microvolt = <1000000>; | ||
| 257 | }; | ||
| 258 | |||
| 259 | ldo10_reg: ldo@10 { | ||
| 260 | regulator-compatible = "LDO10"; | ||
| 261 | regulator-name = "VDDQ_MIPIHSI_1.8V"; | ||
| 262 | regulator-min-microvolt = <1800000>; | ||
| 263 | regulator-max-microvolt = <1800000>; | ||
| 264 | }; | ||
| 265 | |||
| 252 | ldo11_reg: LDO11 { | 266 | ldo11_reg: LDO11 { |
| 253 | regulator-name = "VDD18_ABB1_1.8V"; | 267 | regulator-name = "VDD18_ABB1_1.8V"; |
| 254 | regulator-min-microvolt = <1800000>; | 268 | regulator-min-microvolt = <1800000>; |
| @@ -411,6 +425,51 @@ | |||
| 411 | ehci: ehci@12580000 { | 425 | ehci: ehci@12580000 { |
| 412 | status = "okay"; | 426 | status = "okay"; |
| 413 | }; | 427 | }; |
| 428 | |||
| 429 | tmu@100C0000 { | ||
| 430 | vtmu-supply = <&ldo10_reg>; | ||
| 431 | status = "okay"; | ||
| 432 | }; | ||
| 433 | |||
| 434 | thermal-zones { | ||
| 435 | cpu_thermal: cpu-thermal { | ||
| 436 | cooling-maps { | ||
| 437 | map0 { | ||
| 438 | /* Corresponds to 800MHz at freq_table */ | ||
| 439 | cooling-device = <&cpu0 7 7>; | ||
| 440 | }; | ||
| 441 | map1 { | ||
| 442 | /* Corresponds to 200MHz at freq_table */ | ||
| 443 | cooling-device = <&cpu0 13 13>; | ||
| 444 | }; | ||
| 445 | }; | ||
| 446 | }; | ||
| 447 | }; | ||
| 448 | |||
| 449 | mixer: mixer@12C10000 { | ||
| 450 | status = "okay"; | ||
| 451 | }; | ||
| 452 | |||
| 453 | hdmi@12D00000 { | ||
| 454 | hpd-gpio = <&gpx3 7 0>; | ||
| 455 | pinctrl-names = "default"; | ||
| 456 | pinctrl-0 = <&hdmi_hpd>; | ||
| 457 | vdd-supply = <&ldo8_reg>; | ||
| 458 | vdd_osc-supply = <&ldo10_reg>; | ||
| 459 | vdd_pll-supply = <&ldo8_reg>; | ||
| 460 | ddc = <&hdmi_ddc>; | ||
| 461 | status = "okay"; | ||
| 462 | }; | ||
| 463 | |||
| 464 | hdmi_ddc: i2c@13880000 { | ||
| 465 | status = "okay"; | ||
| 466 | pinctrl-names = "default"; | ||
| 467 | pinctrl-0 = <&i2c2_bus>; | ||
| 468 | }; | ||
| 469 | |||
| 470 | i2c@138E0000 { | ||
| 471 | status = "okay"; | ||
| 472 | }; | ||
| 414 | }; | 473 | }; |
| 415 | 474 | ||
| 416 | &pinctrl_1 { | 475 | &pinctrl_1 { |
| @@ -425,4 +484,9 @@ | |||
| 425 | samsung,pin-pud = <0>; | 484 | samsung,pin-pud = <0>; |
| 426 | samsung,pin-drv = <0>; | 485 | samsung,pin-drv = <0>; |
| 427 | }; | 486 | }; |
| 487 | |||
| 488 | hdmi_hpd: hdmi-hpd { | ||
| 489 | samsung,pins = "gpx3-7"; | ||
| 490 | samsung,pin-pud = <1>; | ||
| 491 | }; | ||
| 428 | }; | 492 | }; |
diff --git a/arch/arm/boot/dts/exynos4412-tmu-sensor-conf.dtsi b/arch/arm/boot/dts/exynos4412-tmu-sensor-conf.dtsi new file mode 100644 index 000000000000..e3f7934d19d0 --- /dev/null +++ b/arch/arm/boot/dts/exynos4412-tmu-sensor-conf.dtsi | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | /* | ||
| 2 | * Device tree sources for Exynos4412 TMU sensor configuration | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com> | ||
| 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 | |||
| 12 | #include <dt-bindings/thermal/thermal_exynos.h> | ||
| 13 | |||
| 14 | #thermal-sensor-cells = <0>; | ||
| 15 | samsung,tmu_gain = <8>; | ||
| 16 | samsung,tmu_reference_voltage = <16>; | ||
| 17 | samsung,tmu_noise_cancel_mode = <4>; | ||
| 18 | samsung,tmu_efuse_value = <55>; | ||
| 19 | samsung,tmu_min_efuse_value = <40>; | ||
| 20 | samsung,tmu_max_efuse_value = <100>; | ||
| 21 | samsung,tmu_first_point_trim = <25>; | ||
| 22 | samsung,tmu_second_point_trim = <85>; | ||
| 23 | samsung,tmu_default_temp_offset = <50>; | ||
| 24 | samsung,tmu_cal_type = <TYPE_ONE_POINT_TRIMMING>; | ||
diff --git a/arch/arm/boot/dts/exynos4412-trats2.dts b/arch/arm/boot/dts/exynos4412-trats2.dts index 21f748083586..173ffa479ad3 100644 --- a/arch/arm/boot/dts/exynos4412-trats2.dts +++ b/arch/arm/boot/dts/exynos4412-trats2.dts | |||
| @@ -927,6 +927,21 @@ | |||
| 927 | pulldown-ohm = <100000>; /* 100K */ | 927 | pulldown-ohm = <100000>; /* 100K */ |
| 928 | io-channels = <&adc 2>; /* Battery temperature */ | 928 | io-channels = <&adc 2>; /* Battery temperature */ |
| 929 | }; | 929 | }; |
| 930 | |||
| 931 | thermal-zones { | ||
| 932 | cpu_thermal: cpu-thermal { | ||
| 933 | cooling-maps { | ||
| 934 | map0 { | ||
| 935 | /* Corresponds to 800MHz at freq_table */ | ||
| 936 | cooling-device = <&cpu0 7 7>; | ||
| 937 | }; | ||
| 938 | map1 { | ||
| 939 | /* Corresponds to 200MHz at freq_table */ | ||
| 940 | cooling-device = <&cpu0 13 13>; | ||
| 941 | }; | ||
| 942 | }; | ||
| 943 | }; | ||
| 944 | }; | ||
| 930 | }; | 945 | }; |
| 931 | 946 | ||
| 932 | &pmu_system_controller { | 947 | &pmu_system_controller { |
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi index 0f6ec93bb1d8..68ad43b391ae 100644 --- a/arch/arm/boot/dts/exynos4412.dtsi +++ b/arch/arm/boot/dts/exynos4412.dtsi | |||
| @@ -26,10 +26,13 @@ | |||
| 26 | #address-cells = <1>; | 26 | #address-cells = <1>; |
| 27 | #size-cells = <0>; | 27 | #size-cells = <0>; |
| 28 | 28 | ||
| 29 | cpu@A00 { | 29 | cpu0: cpu@A00 { |
| 30 | device_type = "cpu"; | 30 | device_type = "cpu"; |
| 31 | compatible = "arm,cortex-a9"; | 31 | compatible = "arm,cortex-a9"; |
| 32 | reg = <0xA00>; | 32 | reg = <0xA00>; |
| 33 | cooling-min-level = <13>; | ||
| 34 | cooling-max-level = <7>; | ||
| 35 | #cooling-cells = <2>; /* min followed by max */ | ||
| 33 | }; | 36 | }; |
| 34 | 37 | ||
| 35 | cpu@A01 { | 38 | cpu@A01 { |
diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi index f5e0ae780d6c..6a6abe14fd9b 100644 --- a/arch/arm/boot/dts/exynos4x12.dtsi +++ b/arch/arm/boot/dts/exynos4x12.dtsi | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | #include "exynos4.dtsi" | 20 | #include "exynos4.dtsi" |
| 21 | #include "exynos4x12-pinctrl.dtsi" | 21 | #include "exynos4x12-pinctrl.dtsi" |
| 22 | #include "exynos4-cpu-thermal.dtsi" | ||
| 22 | 23 | ||
| 23 | / { | 24 | / { |
| 24 | aliases { | 25 | aliases { |
| @@ -297,4 +298,15 @@ | |||
| 297 | clock-names = "tmu_apbif"; | 298 | clock-names = "tmu_apbif"; |
| 298 | status = "disabled"; | 299 | status = "disabled"; |
| 299 | }; | 300 | }; |
| 301 | |||
| 302 | hdmi: hdmi@12D00000 { | ||
| 303 | compatible = "samsung,exynos4212-hdmi"; | ||
| 304 | }; | ||
| 305 | |||
| 306 | mixer: mixer@12C10000 { | ||
| 307 | compatible = "samsung,exynos4212-mixer"; | ||
| 308 | clock-names = "mixer", "hdmi", "sclk_hdmi", "vp"; | ||
| 309 | clocks = <&clock CLK_MIXER>, <&clock CLK_HDMI>, | ||
| 310 | <&clock CLK_SCLK_HDMI>, <&clock CLK_VP>; | ||
| 311 | }; | ||
| 300 | }; | 312 | }; |
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi index 9bb1b0b738f5..adbde1adad95 100644 --- a/arch/arm/boot/dts/exynos5250.dtsi +++ b/arch/arm/boot/dts/exynos5250.dtsi | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #include <dt-bindings/clock/exynos5250.h> | 20 | #include <dt-bindings/clock/exynos5250.h> |
| 21 | #include "exynos5.dtsi" | 21 | #include "exynos5.dtsi" |
| 22 | #include "exynos5250-pinctrl.dtsi" | 22 | #include "exynos5250-pinctrl.dtsi" |
| 23 | 23 | #include "exynos4-cpu-thermal.dtsi" | |
| 24 | #include <dt-bindings/clock/exynos-audss-clk.h> | 24 | #include <dt-bindings/clock/exynos-audss-clk.h> |
| 25 | 25 | ||
| 26 | / { | 26 | / { |
| @@ -58,11 +58,14 @@ | |||
| 58 | #address-cells = <1>; | 58 | #address-cells = <1>; |
| 59 | #size-cells = <0>; | 59 | #size-cells = <0>; |
| 60 | 60 | ||
| 61 | cpu@0 { | 61 | cpu0: cpu@0 { |
| 62 | device_type = "cpu"; | 62 | device_type = "cpu"; |
| 63 | compatible = "arm,cortex-a15"; | 63 | compatible = "arm,cortex-a15"; |
| 64 | reg = <0>; | 64 | reg = <0>; |
| 65 | clock-frequency = <1700000000>; | 65 | clock-frequency = <1700000000>; |
| 66 | cooling-min-level = <15>; | ||
| 67 | cooling-max-level = <9>; | ||
| 68 | #cooling-cells = <2>; /* min followed by max */ | ||
| 66 | }; | 69 | }; |
| 67 | cpu@1 { | 70 | cpu@1 { |
| 68 | device_type = "cpu"; | 71 | device_type = "cpu"; |
| @@ -102,6 +105,12 @@ | |||
| 102 | #power-domain-cells = <0>; | 105 | #power-domain-cells = <0>; |
| 103 | }; | 106 | }; |
| 104 | 107 | ||
| 108 | pd_disp1: disp1-power-domain@100440A0 { | ||
| 109 | compatible = "samsung,exynos4210-pd"; | ||
| 110 | reg = <0x100440A0 0x20>; | ||
| 111 | #power-domain-cells = <0>; | ||
| 112 | }; | ||
| 113 | |||
| 105 | clock: clock-controller@10010000 { | 114 | clock: clock-controller@10010000 { |
| 106 | compatible = "samsung,exynos5250-clock"; | 115 | compatible = "samsung,exynos5250-clock"; |
| 107 | reg = <0x10010000 0x30000>; | 116 | reg = <0x10010000 0x30000>; |
| @@ -235,12 +244,32 @@ | |||
| 235 | status = "disabled"; | 244 | status = "disabled"; |
| 236 | }; | 245 | }; |
| 237 | 246 | ||
| 238 | tmu@10060000 { | 247 | tmu: tmu@10060000 { |
| 239 | compatible = "samsung,exynos5250-tmu"; | 248 | compatible = "samsung,exynos5250-tmu"; |
| 240 | reg = <0x10060000 0x100>; | 249 | reg = <0x10060000 0x100>; |
| 241 | interrupts = <0 65 0>; | 250 | interrupts = <0 65 0>; |
| 242 | clocks = <&clock CLK_TMU>; | 251 | clocks = <&clock CLK_TMU>; |
| 243 | clock-names = "tmu_apbif"; | 252 | clock-names = "tmu_apbif"; |
| 253 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 254 | }; | ||
| 255 | |||
| 256 | thermal-zones { | ||
| 257 | cpu_thermal: cpu-thermal { | ||
| 258 | polling-delay-passive = <0>; | ||
| 259 | polling-delay = <0>; | ||
| 260 | thermal-sensors = <&tmu 0>; | ||
| 261 | |||
| 262 | cooling-maps { | ||
| 263 | map0 { | ||
| 264 | /* Corresponds to 800MHz at freq_table */ | ||
| 265 | cooling-device = <&cpu0 9 9>; | ||
| 266 | }; | ||
| 267 | map1 { | ||
| 268 | /* Corresponds to 200MHz at freq_table */ | ||
| 269 | cooling-device = <&cpu0 15 15>; | ||
| 270 | }; | ||
| 271 | }; | ||
| 272 | }; | ||
| 244 | }; | 273 | }; |
| 245 | 274 | ||
| 246 | serial@12C00000 { | 275 | serial@12C00000 { |
| @@ -719,6 +748,7 @@ | |||
| 719 | hdmi: hdmi { | 748 | hdmi: hdmi { |
| 720 | compatible = "samsung,exynos4212-hdmi"; | 749 | compatible = "samsung,exynos4212-hdmi"; |
| 721 | reg = <0x14530000 0x70000>; | 750 | reg = <0x14530000 0x70000>; |
| 751 | power-domains = <&pd_disp1>; | ||
| 722 | interrupts = <0 95 0>; | 752 | interrupts = <0 95 0>; |
| 723 | clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>, | 753 | clocks = <&clock CLK_HDMI>, <&clock CLK_SCLK_HDMI>, |
| 724 | <&clock CLK_SCLK_PIXEL>, <&clock CLK_SCLK_HDMIPHY>, | 754 | <&clock CLK_SCLK_PIXEL>, <&clock CLK_SCLK_HDMIPHY>, |
| @@ -731,9 +761,11 @@ | |||
| 731 | mixer { | 761 | mixer { |
| 732 | compatible = "samsung,exynos5250-mixer"; | 762 | compatible = "samsung,exynos5250-mixer"; |
| 733 | reg = <0x14450000 0x10000>; | 763 | reg = <0x14450000 0x10000>; |
| 764 | power-domains = <&pd_disp1>; | ||
| 734 | interrupts = <0 94 0>; | 765 | interrupts = <0 94 0>; |
| 735 | clocks = <&clock CLK_MIXER>, <&clock CLK_SCLK_HDMI>; | 766 | clocks = <&clock CLK_MIXER>, <&clock CLK_HDMI>, |
| 736 | clock-names = "mixer", "sclk_hdmi"; | 767 | <&clock CLK_SCLK_HDMI>; |
| 768 | clock-names = "mixer", "hdmi", "sclk_hdmi"; | ||
| 737 | }; | 769 | }; |
| 738 | 770 | ||
| 739 | dp_phy: video-phy@10040720 { | 771 | dp_phy: video-phy@10040720 { |
| @@ -743,6 +775,7 @@ | |||
| 743 | }; | 775 | }; |
| 744 | 776 | ||
| 745 | dp: dp-controller@145B0000 { | 777 | dp: dp-controller@145B0000 { |
| 778 | power-domains = <&pd_disp1>; | ||
| 746 | clocks = <&clock CLK_DP>; | 779 | clocks = <&clock CLK_DP>; |
| 747 | clock-names = "dp"; | 780 | clock-names = "dp"; |
| 748 | phys = <&dp_phy>; | 781 | phys = <&dp_phy>; |
| @@ -750,6 +783,7 @@ | |||
| 750 | }; | 783 | }; |
| 751 | 784 | ||
| 752 | fimd: fimd@14400000 { | 785 | fimd: fimd@14400000 { |
| 786 | power-domains = <&pd_disp1>; | ||
| 753 | clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>; | 787 | clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>; |
| 754 | clock-names = "sclk_fimd", "fimd"; | 788 | clock-names = "sclk_fimd", "fimd"; |
| 755 | }; | 789 | }; |
diff --git a/arch/arm/boot/dts/exynos5420-trip-points.dtsi b/arch/arm/boot/dts/exynos5420-trip-points.dtsi new file mode 100644 index 000000000000..5d31fc140823 --- /dev/null +++ b/arch/arm/boot/dts/exynos5420-trip-points.dtsi | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | /* | ||
| 2 | * Device tree sources for default Exynos5420 thermal zone definition | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com> | ||
| 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 | |||
| 12 | polling-delay-passive = <0>; | ||
| 13 | polling-delay = <0>; | ||
| 14 | trips { | ||
| 15 | cpu-alert-0 { | ||
| 16 | temperature = <85000>; /* millicelsius */ | ||
| 17 | hysteresis = <10000>; /* millicelsius */ | ||
| 18 | type = "active"; | ||
| 19 | }; | ||
| 20 | cpu-alert-1 { | ||
| 21 | temperature = <103000>; /* millicelsius */ | ||
| 22 | hysteresis = <10000>; /* millicelsius */ | ||
| 23 | type = "active"; | ||
| 24 | }; | ||
| 25 | cpu-alert-2 { | ||
| 26 | temperature = <110000>; /* millicelsius */ | ||
| 27 | hysteresis = <10000>; /* millicelsius */ | ||
| 28 | type = "active"; | ||
| 29 | }; | ||
| 30 | cpu-crit-0 { | ||
| 31 | temperature = <1200000>; /* millicelsius */ | ||
| 32 | hysteresis = <0>; /* millicelsius */ | ||
| 33 | type = "critical"; | ||
| 34 | }; | ||
| 35 | }; | ||
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi index 9dc2e9773b30..c0e98cf3514f 100644 --- a/arch/arm/boot/dts/exynos5420.dtsi +++ b/arch/arm/boot/dts/exynos5420.dtsi | |||
| @@ -740,8 +740,9 @@ | |||
| 740 | compatible = "samsung,exynos5420-mixer"; | 740 | compatible = "samsung,exynos5420-mixer"; |
| 741 | reg = <0x14450000 0x10000>; | 741 | reg = <0x14450000 0x10000>; |
| 742 | interrupts = <0 94 0>; | 742 | interrupts = <0 94 0>; |
| 743 | clocks = <&clock CLK_MIXER>, <&clock CLK_SCLK_HDMI>; | 743 | clocks = <&clock CLK_MIXER>, <&clock CLK_HDMI>, |
| 744 | clock-names = "mixer", "sclk_hdmi"; | 744 | <&clock CLK_SCLK_HDMI>; |
| 745 | clock-names = "mixer", "hdmi", "sclk_hdmi"; | ||
| 745 | power-domains = <&disp_pd>; | 746 | power-domains = <&disp_pd>; |
| 746 | }; | 747 | }; |
| 747 | 748 | ||
| @@ -782,6 +783,7 @@ | |||
| 782 | interrupts = <0 65 0>; | 783 | interrupts = <0 65 0>; |
| 783 | clocks = <&clock CLK_TMU>; | 784 | clocks = <&clock CLK_TMU>; |
| 784 | clock-names = "tmu_apbif"; | 785 | clock-names = "tmu_apbif"; |
| 786 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 785 | }; | 787 | }; |
| 786 | 788 | ||
| 787 | tmu_cpu1: tmu@10064000 { | 789 | tmu_cpu1: tmu@10064000 { |
| @@ -790,6 +792,7 @@ | |||
| 790 | interrupts = <0 183 0>; | 792 | interrupts = <0 183 0>; |
| 791 | clocks = <&clock CLK_TMU>; | 793 | clocks = <&clock CLK_TMU>; |
| 792 | clock-names = "tmu_apbif"; | 794 | clock-names = "tmu_apbif"; |
| 795 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 793 | }; | 796 | }; |
| 794 | 797 | ||
| 795 | tmu_cpu2: tmu@10068000 { | 798 | tmu_cpu2: tmu@10068000 { |
| @@ -798,6 +801,7 @@ | |||
| 798 | interrupts = <0 184 0>; | 801 | interrupts = <0 184 0>; |
| 799 | clocks = <&clock CLK_TMU>, <&clock CLK_TMU>; | 802 | clocks = <&clock CLK_TMU>, <&clock CLK_TMU>; |
| 800 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 803 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 804 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 801 | }; | 805 | }; |
| 802 | 806 | ||
| 803 | tmu_cpu3: tmu@1006c000 { | 807 | tmu_cpu3: tmu@1006c000 { |
| @@ -806,6 +810,7 @@ | |||
| 806 | interrupts = <0 185 0>; | 810 | interrupts = <0 185 0>; |
| 807 | clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>; | 811 | clocks = <&clock CLK_TMU>, <&clock CLK_TMU_GPU>; |
| 808 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 812 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 813 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 809 | }; | 814 | }; |
| 810 | 815 | ||
| 811 | tmu_gpu: tmu@100a0000 { | 816 | tmu_gpu: tmu@100a0000 { |
| @@ -814,6 +819,30 @@ | |||
| 814 | interrupts = <0 215 0>; | 819 | interrupts = <0 215 0>; |
| 815 | clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>; | 820 | clocks = <&clock CLK_TMU_GPU>, <&clock CLK_TMU>; |
| 816 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; | 821 | clock-names = "tmu_apbif", "tmu_triminfo_apbif"; |
| 822 | #include "exynos4412-tmu-sensor-conf.dtsi" | ||
| 823 | }; | ||
| 824 | |||
| 825 | thermal-zones { | ||
| 826 | cpu0_thermal: cpu0-thermal { | ||
| 827 | thermal-sensors = <&tmu_cpu0>; | ||
| 828 | #include "exynos5420-trip-points.dtsi" | ||
| 829 | }; | ||
| 830 | cpu1_thermal: cpu1-thermal { | ||
| 831 | thermal-sensors = <&tmu_cpu1>; | ||
| 832 | #include "exynos5420-trip-points.dtsi" | ||
| 833 | }; | ||
| 834 | cpu2_thermal: cpu2-thermal { | ||
| 835 | thermal-sensors = <&tmu_cpu2>; | ||
| 836 | #include "exynos5420-trip-points.dtsi" | ||
| 837 | }; | ||
| 838 | cpu3_thermal: cpu3-thermal { | ||
| 839 | thermal-sensors = <&tmu_cpu3>; | ||
| 840 | #include "exynos5420-trip-points.dtsi" | ||
| 841 | }; | ||
| 842 | gpu_thermal: gpu-thermal { | ||
| 843 | thermal-sensors = <&tmu_gpu>; | ||
| 844 | #include "exynos5420-trip-points.dtsi" | ||
| 845 | }; | ||
| 817 | }; | 846 | }; |
| 818 | 847 | ||
| 819 | watchdog: watchdog@101D0000 { | 848 | watchdog: watchdog@101D0000 { |
diff --git a/arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi b/arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi new file mode 100644 index 000000000000..7b2fba0ae92b --- /dev/null +++ b/arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | /* | ||
| 2 | * Device tree sources for Exynos5440 TMU sensor configuration | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com> | ||
| 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 | |||
| 12 | #include <dt-bindings/thermal/thermal_exynos.h> | ||
| 13 | |||
| 14 | #thermal-sensor-cells = <0>; | ||
| 15 | samsung,tmu_gain = <5>; | ||
| 16 | samsung,tmu_reference_voltage = <16>; | ||
| 17 | samsung,tmu_noise_cancel_mode = <4>; | ||
| 18 | samsung,tmu_efuse_value = <0x5d2d>; | ||
| 19 | samsung,tmu_min_efuse_value = <16>; | ||
| 20 | samsung,tmu_max_efuse_value = <76>; | ||
| 21 | samsung,tmu_first_point_trim = <25>; | ||
| 22 | samsung,tmu_second_point_trim = <70>; | ||
| 23 | samsung,tmu_default_temp_offset = <25>; | ||
| 24 | samsung,tmu_cal_type = <TYPE_ONE_POINT_TRIMMING>; | ||
diff --git a/arch/arm/boot/dts/exynos5440-trip-points.dtsi b/arch/arm/boot/dts/exynos5440-trip-points.dtsi new file mode 100644 index 000000000000..48adfa8f4300 --- /dev/null +++ b/arch/arm/boot/dts/exynos5440-trip-points.dtsi | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * Device tree sources for default Exynos5440 thermal zone definition | ||
| 3 | * | ||
| 4 | * Copyright (c) 2014 Lukasz Majewski <l.majewski@samsung.com> | ||
| 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 | |||
| 12 | polling-delay-passive = <0>; | ||
| 13 | polling-delay = <0>; | ||
| 14 | trips { | ||
| 15 | cpu-alert-0 { | ||
| 16 | temperature = <100000>; /* millicelsius */ | ||
| 17 | hysteresis = <0>; /* millicelsius */ | ||
| 18 | type = "active"; | ||
| 19 | }; | ||
| 20 | cpu-crit-0 { | ||
| 21 | temperature = <1050000>; /* millicelsius */ | ||
| 22 | hysteresis = <0>; /* millicelsius */ | ||
| 23 | type = "critical"; | ||
| 24 | }; | ||
| 25 | }; | ||
diff --git a/arch/arm/boot/dts/exynos5440.dtsi b/arch/arm/boot/dts/exynos5440.dtsi index 8f3373cd7b87..59d9416b3b03 100644 --- a/arch/arm/boot/dts/exynos5440.dtsi +++ b/arch/arm/boot/dts/exynos5440.dtsi | |||
| @@ -219,6 +219,7 @@ | |||
| 219 | interrupts = <0 58 0>; | 219 | interrupts = <0 58 0>; |
| 220 | clocks = <&clock CLK_B_125>; | 220 | clocks = <&clock CLK_B_125>; |
| 221 | clock-names = "tmu_apbif"; | 221 | clock-names = "tmu_apbif"; |
| 222 | #include "exynos5440-tmu-sensor-conf.dtsi" | ||
| 222 | }; | 223 | }; |
| 223 | 224 | ||
| 224 | tmuctrl_1: tmuctrl@16011C { | 225 | tmuctrl_1: tmuctrl@16011C { |
| @@ -227,6 +228,7 @@ | |||
| 227 | interrupts = <0 58 0>; | 228 | interrupts = <0 58 0>; |
| 228 | clocks = <&clock CLK_B_125>; | 229 | clocks = <&clock CLK_B_125>; |
| 229 | clock-names = "tmu_apbif"; | 230 | clock-names = "tmu_apbif"; |
| 231 | #include "exynos5440-tmu-sensor-conf.dtsi" | ||
| 230 | }; | 232 | }; |
| 231 | 233 | ||
| 232 | tmuctrl_2: tmuctrl@160120 { | 234 | tmuctrl_2: tmuctrl@160120 { |
| @@ -235,6 +237,22 @@ | |||
| 235 | interrupts = <0 58 0>; | 237 | interrupts = <0 58 0>; |
| 236 | clocks = <&clock CLK_B_125>; | 238 | clocks = <&clock CLK_B_125>; |
| 237 | clock-names = "tmu_apbif"; | 239 | clock-names = "tmu_apbif"; |
| 240 | #include "exynos5440-tmu-sensor-conf.dtsi" | ||
| 241 | }; | ||
| 242 | |||
| 243 | thermal-zones { | ||
| 244 | cpu0_thermal: cpu0-thermal { | ||
| 245 | thermal-sensors = <&tmuctrl_0>; | ||
| 246 | #include "exynos5440-trip-points.dtsi" | ||
| 247 | }; | ||
| 248 | cpu1_thermal: cpu1-thermal { | ||
| 249 | thermal-sensors = <&tmuctrl_1>; | ||
| 250 | #include "exynos5440-trip-points.dtsi" | ||
| 251 | }; | ||
| 252 | cpu2_thermal: cpu2-thermal { | ||
| 253 | thermal-sensors = <&tmuctrl_2>; | ||
| 254 | #include "exynos5440-trip-points.dtsi" | ||
| 255 | }; | ||
| 238 | }; | 256 | }; |
| 239 | 257 | ||
| 240 | sata@210000 { | 258 | sata@210000 { |
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c index 20f267121b3e..37266a826437 100644 --- a/arch/arm/mach-exynos/pm_domains.c +++ b/arch/arm/mach-exynos/pm_domains.c | |||
| @@ -161,6 +161,34 @@ no_clk: | |||
| 161 | of_genpd_add_provider_simple(np, &pd->pd); | 161 | of_genpd_add_provider_simple(np, &pd->pd); |
| 162 | } | 162 | } |
| 163 | 163 | ||
| 164 | /* Assign the child power domains to their parents */ | ||
| 165 | for_each_compatible_node(np, NULL, "samsung,exynos4210-pd") { | ||
| 166 | struct generic_pm_domain *child_domain, *parent_domain; | ||
| 167 | struct of_phandle_args args; | ||
| 168 | |||
| 169 | args.np = np; | ||
| 170 | args.args_count = 0; | ||
| 171 | child_domain = of_genpd_get_from_provider(&args); | ||
| 172 | if (!child_domain) | ||
| 173 | continue; | ||
| 174 | |||
| 175 | if (of_parse_phandle_with_args(np, "power-domains", | ||
| 176 | "#power-domain-cells", 0, &args) != 0) | ||
| 177 | continue; | ||
| 178 | |||
| 179 | parent_domain = of_genpd_get_from_provider(&args); | ||
| 180 | if (!parent_domain) | ||
| 181 | continue; | ||
| 182 | |||
| 183 | if (pm_genpd_add_subdomain(parent_domain, child_domain)) | ||
| 184 | pr_warn("%s failed to add subdomain: %s\n", | ||
| 185 | parent_domain->name, child_domain->name); | ||
| 186 | else | ||
| 187 | pr_info("%s has as child subdomain: %s.\n", | ||
| 188 | parent_domain->name, child_domain->name); | ||
| 189 | of_node_put(np); | ||
| 190 | } | ||
| 191 | |||
| 164 | return 0; | 192 | return 0; |
| 165 | } | 193 | } |
| 166 | arch_initcall(exynos4_pm_init_power_domain); | 194 | arch_initcall(exynos4_pm_init_power_domain); |
