| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Hardkernel Odroid XU3/XU3-Lite/XU4/HC1 boards core device tree source |
| * |
| * Copyright (c) 2017 Marek Szyprowski |
| * Copyright (c) 2013-2017 Samsung Electronics Co., Ltd. |
| * http://www.samsung.com |
| */ |
| |
| #include <dt-bindings/clock/samsung,s2mps11.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/gpio/gpio.h> |
| #include "exynos5800.dtsi" |
| #include "exynos5422-cpus.dtsi" |
| |
| / { |
| memory@40000000 { |
| device_type = "memory"; |
| reg = <0x40000000 0x7EA00000>; |
| }; |
| |
| chosen { |
| stdout-path = "serial2:115200n8"; |
| }; |
| |
| firmware@2073000 { |
| compatible = "samsung,secure-firmware"; |
| reg = <0x02073000 0x1000>; |
| }; |
| |
| fixed-rate-clocks { |
| oscclk { |
| compatible = "samsung,exynos5420-oscclk"; |
| clock-frequency = <24000000>; |
| }; |
| }; |
| |
| dmc_opp_table: opp_table2 { |
| compatible = "operating-points-v2"; |
| |
| opp00 { |
| opp-hz = /bits/ 64 <165000000>; |
| opp-microvolt = <875000>; |
| }; |
| opp01 { |
| opp-hz = /bits/ 64 <206000000>; |
| opp-microvolt = <875000>; |
| }; |
| opp02 { |
| opp-hz = /bits/ 64 <275000000>; |
| opp-microvolt = <875000>; |
| }; |
| opp03 { |
| opp-hz = /bits/ 64 <413000000>; |
| opp-microvolt = <887500>; |
| }; |
| opp04 { |
| opp-hz = /bits/ 64 <543000000>; |
| opp-microvolt = <937500>; |
| }; |
| opp05 { |
| opp-hz = /bits/ 64 <633000000>; |
| opp-microvolt = <1012500>; |
| }; |
| opp06 { |
| opp-hz = /bits/ 64 <728000000>; |
| opp-microvolt = <1037500>; |
| }; |
| opp07 { |
| opp-hz = /bits/ 64 <825000000>; |
| opp-microvolt = <1050000>; |
| }; |
| }; |
| |
| samsung_K3QF2F20DB: lpddr3 { |
| compatible = "samsung,K3QF2F20DB", "jedec,lpddr3"; |
| density = <16384>; |
| io-width = <32>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| tRFC-min-tck = <17>; |
| tRRD-min-tck = <2>; |
| tRPab-min-tck = <2>; |
| tRPpb-min-tck = <2>; |
| tRCD-min-tck = <3>; |
| tRC-min-tck = <6>; |
| tRAS-min-tck = <5>; |
| tWTR-min-tck = <2>; |
| tWR-min-tck = <7>; |
| tRTP-min-tck = <2>; |
| tW2W-C2C-min-tck = <0>; |
| tR2R-C2C-min-tck = <0>; |
| tWL-min-tck = <8>; |
| tDQSCK-min-tck = <5>; |
| tRL-min-tck = <14>; |
| tFAW-min-tck = <5>; |
| tXSR-min-tck = <12>; |
| tXP-min-tck = <2>; |
| tCKE-min-tck = <2>; |
| tCKESR-min-tck = <2>; |
| tMRD-min-tck = <5>; |
| |
| timings_samsung_K3QF2F20DB_800mhz: lpddr3-timings@800000000 { |
| compatible = "jedec,lpddr3-timings"; |
| /* workaround: 'reg' shows max-freq */ |
| reg = <800000000>; |
| min-freq = <100000000>; |
| tRFC = <65000>; |
| tRRD = <6000>; |
| tRPab = <12000>; |
| tRPpb = <12000>; |
| tRCD = <10000>; |
| tRC = <33750>; |
| tRAS = <23000>; |
| tWTR = <3750>; |
| tWR = <7500>; |
| tRTP = <3750>; |
| tW2W-C2C = <0>; |
| tR2R-C2C = <0>; |
| tFAW = <25000>; |
| tXSR = <70000>; |
| tXP = <3750>; |
| tCKE = <3750>; |
| tCKESR = <3750>; |
| tMRD = <7000>; |
| }; |
| }; |
| }; |
| |
| &adc { |
| vdd-supply = <&ldo4_reg>; |
| status = "okay"; |
| }; |
| |
| &bus_wcore { |
| devfreq-events = <&nocp_mem0_0>, <&nocp_mem0_1>, |
| <&nocp_mem1_0>, <&nocp_mem1_1>; |
| vdd-supply = <&buck3_reg>; |
| exynos,saturation-ratio = <100>; |
| status = "okay"; |
| }; |
| |
| &bus_noc { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_fsys_apb { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_fsys { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_fsys2 { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_mfc { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_gen { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_peri { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_g2d { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_g2d_acp { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_jpeg { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_jpeg_apb { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_disp1_fimd { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_disp1 { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_gscl_scaler { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &bus_mscl { |
| devfreq = <&bus_wcore>; |
| status = "okay"; |
| }; |
| |
| &cpu0 { |
| cpu-supply = <&buck6_reg>; |
| }; |
| |
| &cpu4 { |
| cpu-supply = <&buck2_reg>; |
| }; |
| |
| &dmc { |
| devfreq-events = <&ppmu_event3_dmc0_0>, <&ppmu_event3_dmc0_1>, |
| <&ppmu_event3_dmc1_0>, <&ppmu_event3_dmc1_1>; |
| device-handle = <&samsung_K3QF2F20DB>; |
| operating-points-v2 = <&dmc_opp_table>; |
| vdd-supply = <&buck1_reg>; |
| status = "okay"; |
| }; |
| |
| &hsi2c_4 { |
| status = "okay"; |
| |
| s2mps11_pmic@66 { |
| compatible = "samsung,s2mps11-pmic"; |
| reg = <0x66>; |
| samsung,s2mps11-acokb-ground; |
| |
| interrupt-parent = <&gpx0>; |
| interrupts = <4 IRQ_TYPE_EDGE_FALLING>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&s2mps11_irq>; |
| |
| s2mps11_osc: clocks { |
| compatible = "samsung,s2mps11-clk"; |
| #clock-cells = <1>; |
| clock-output-names = "s2mps11_ap", |
| "s2mps11_cp", "s2mps11_bt"; |
| }; |
| |
| regulators { |
| ldo1_reg: LDO1 { |
| regulator-name = "vdd_ldo1"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-always-on; |
| }; |
| |
| ldo2_reg: LDO2 { |
| regulator-name = "vdd_ldo2"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| }; |
| |
| ldo3_reg: LDO3 { |
| regulator-name = "vddq_mmc0"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| }; |
| |
| ldo4_reg: LDO4 { |
| regulator-name = "vdd_adc"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo5_reg: LDO5 { |
| regulator-name = "vdd_ldo5"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo6_reg: LDO6 { |
| regulator-name = "vdd_ldo6"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo7_reg: LDO7 { |
| regulator-name = "vdd_ldo7"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo8_reg: LDO8 { |
| regulator-name = "vdd_ldo8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo9_reg: LDO9 { |
| regulator-name = "vdd_ldo9"; |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo10_reg: LDO10 { |
| regulator-name = "vdd_ldo10"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo11_reg: LDO11 { |
| regulator-name = "vdd_ldo11"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo12_reg: LDO12 { |
| /* Unused */ |
| regulator-name = "vdd_ldo12"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <2375000>; |
| }; |
| |
| ldo13_reg: LDO13 { |
| regulator-name = "vddq_mmc2"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <2800000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo14_reg: LDO14 { |
| /* Unused */ |
| regulator-name = "vdd_ldo14"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo15_reg: LDO15 { |
| regulator-name = "vdd_ldo15"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo16_reg: LDO16 { |
| /* Unused */ |
| regulator-name = "vdd_ldo16"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo17_reg: LDO17 { |
| regulator-name = "vdd_ldo17"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo18_reg: LDO18 { |
| regulator-name = "vdd_emmc_1V8"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo19_reg: LDO19 { |
| regulator-name = "vdd_sd"; |
| regulator-min-microvolt = <2800000>; |
| regulator-max-microvolt = <2800000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo20_reg: LDO20 { |
| /* Unused */ |
| regulator-name = "vdd_ldo20"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo21_reg: LDO21 { |
| /* Unused */ |
| regulator-name = "vdd_ldo21"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo22_reg: LDO22 { |
| /* Unused */ |
| regulator-name = "vdd_ldo22"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <2375000>; |
| }; |
| |
| ldo23_reg: LDO23 { |
| regulator-name = "vdd_mifs"; |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo24_reg: LDO24 { |
| /* Unused */ |
| regulator-name = "vdd_ldo24"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo25_reg: LDO25 { |
| /* Unused */ |
| regulator-name = "vdd_ldo25"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo26_reg: LDO26 { |
| /* Used on XU3, XU3-Lite and XU4 */ |
| regulator-name = "vdd_ldo26"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo27_reg: LDO27 { |
| regulator-name = "vdd_g3ds"; |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-always-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo28_reg: LDO28 { |
| /* Used on XU3 */ |
| regulator-name = "vdd_ldo28"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| ldo29_reg: LDO29 { |
| /* Unused */ |
| regulator-name = "vdd_ldo29"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo30_reg: LDO30 { |
| /* Unused */ |
| regulator-name = "vdd_ldo30"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo31_reg: LDO31 { |
| /* Unused */ |
| regulator-name = "vdd_ldo31"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo32_reg: LDO32 { |
| /* Unused */ |
| regulator-name = "vdd_ldo32"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo33_reg: LDO33 { |
| /* Unused */ |
| regulator-name = "vdd_ldo33"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo34_reg: LDO34 { |
| /* Unused */ |
| regulator-name = "vdd_ldo34"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo35_reg: LDO35 { |
| /* Unused */ |
| regulator-name = "vdd_ldo35"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <2375000>; |
| }; |
| |
| ldo36_reg: LDO36 { |
| /* Unused */ |
| regulator-name = "vdd_ldo36"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo37_reg: LDO37 { |
| /* Unused */ |
| regulator-name = "vdd_ldo37"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| ldo38_reg: LDO38 { |
| /* Unused */ |
| regulator-name = "vdd_ldo38"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <3950000>; |
| }; |
| |
| buck1_reg: BUCK1 { |
| regulator-name = "vdd_mif"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1300000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck2_reg: BUCK2 { |
| regulator-name = "vdd_arm"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1500000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck3_reg: BUCK3 { |
| regulator-name = "vdd_int"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1400000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck4_reg: BUCK4 { |
| regulator-name = "vdd_g3d"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1400000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck5_reg: BUCK5 { |
| regulator-name = "vdd_mem"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1400000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| buck6_reg: BUCK6 { |
| regulator-name = "vdd_kfc"; |
| regulator-min-microvolt = <800000>; |
| regulator-max-microvolt = <1500000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck7_reg: BUCK7 { |
| regulator-name = "vdd_1.35v_ldo"; |
| regulator-min-microvolt = <1200000>; |
| regulator-max-microvolt = <1500000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| buck8_reg: BUCK8 { |
| regulator-name = "vdd_2.0v_ldo"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <2100000>; |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| buck9_reg: BUCK9 { |
| regulator-name = "vdd_2.8v_ldo"; |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3750000>; |
| regulator-always-on; |
| regulator-boot-on; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| |
| buck10_reg: BUCK10 { |
| regulator-name = "vdd_vmem"; |
| regulator-min-microvolt = <2850000>; |
| regulator-max-microvolt = <2850000>; |
| |
| regulator-state-mem { |
| regulator-off-in-suspend; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| &mmc_2 { |
| status = "okay"; |
| card-detect-delay = <200>; |
| samsung,dw-mshc-ciu-div = <3>; |
| samsung,dw-mshc-sdr-timing = <0 4>; |
| samsung,dw-mshc-ddr-timing = <0 2>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_wp &sd2_bus1 &sd2_bus4>; |
| bus-width = <4>; |
| cap-sd-highspeed; |
| max-frequency = <200000000>; |
| vmmc-supply = <&ldo19_reg>; |
| vqmmc-supply = <&ldo13_reg>; |
| sd-uhs-sdr50; |
| sd-uhs-sdr104; |
| sd-uhs-ddr50; |
| }; |
| |
| &nocp_mem0_0 { |
| status = "okay"; |
| }; |
| |
| &nocp_mem0_1 { |
| status = "okay"; |
| }; |
| |
| &nocp_mem1_0 { |
| status = "okay"; |
| }; |
| |
| &nocp_mem1_1 { |
| status = "okay"; |
| }; |
| |
| &pinctrl_0 { |
| s2mps11_irq: s2mps11-irq { |
| samsung,pins = "gpx0-4"; |
| samsung,pin-function = <EXYNOS_PIN_FUNC_F>; |
| samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; |
| samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; |
| }; |
| }; |
| |
| &ppmu_dmc0_0 { |
| status = "okay"; |
| }; |
| |
| &ppmu_dmc0_1 { |
| status = "okay"; |
| }; |
| |
| &ppmu_dmc1_0 { |
| status = "okay"; |
| }; |
| |
| &ppmu_dmc1_1 { |
| status = "okay"; |
| }; |
| |
| &tmu_cpu0 { |
| vtmu-supply = <&ldo7_reg>; |
| }; |
| |
| &tmu_cpu1 { |
| vtmu-supply = <&ldo7_reg>; |
| }; |
| |
| &tmu_cpu2 { |
| vtmu-supply = <&ldo7_reg>; |
| }; |
| |
| &tmu_cpu3 { |
| vtmu-supply = <&ldo7_reg>; |
| }; |
| |
| &tmu_gpu { |
| vtmu-supply = <&ldo7_reg>; |
| }; |
| |
| &rtc { |
| status = "okay"; |
| clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>; |
| clock-names = "rtc", "rtc_src"; |
| }; |
| |
| &usbdrd_dwc3_0 { |
| dr_mode = "host"; |
| }; |
| |
| /* usbdrd_dwc3_1 mode customized in each board */ |
| |
| &usbdrd3_0 { |
| vdd33-supply = <&ldo9_reg>; |
| vdd10-supply = <&ldo11_reg>; |
| }; |
| |
| &usbdrd3_1 { |
| vdd33-supply = <&ldo9_reg>; |
| vdd10-supply = <&ldo11_reg>; |
| }; |