2017-12-25 11:40:09 +01:00
// SPDX-License-Identifier: GPL-2.0
2014-07-16 02:54:07 +09:00
/*
* Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards
* device tree source
*/
2015-02-03 15:06:20 +01:00
#include <dt-bindings/sound/samsung-i2s.h>
2014-07-16 02:54:07 +09:00
#include <dt-bindings/input/input.h>
2015-05-09 03:05:51 +09:00
#include <dt-bindings/clock/maxim,max77686.h>
2014-07-16 02:54:07 +09:00
#include "exynos4412.dtsi"
2016-04-11 12:57:55 +09:00
#include "exynos4412-ppmu-common.dtsi"
2015-10-08 07:39:58 +09:00
#include <dt-bindings/gpio/gpio.h>
2016-05-24 15:31:30 +02:00
#include "exynos-mfc-reserved-memory.dtsi"
2014-07-16 02:54:07 +09:00
/ {
2015-01-23 14:47:42 +01:00
chosen {
stdout-path = &serial_1;
};
2017-10-13 12:54:51 -05:00
firmware@204f000 {
2014-07-16 02:54:07 +09:00
compatible = "samsung,secure-firmware";
reg = <0x0204F000 0x1000>;
};
2014-07-16 02:54:07 +09:00
gpio_keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&gpio_power_key>;
power_key {
2015-10-08 07:39:58 +09:00
gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
2014-07-16 02:54:07 +09:00
linux,code = <KEY_POWER>;
label = "power key";
debounce-interval = <10>;
2016-01-28 15:59:58 +00:00
wakeup-source;
2014-07-16 02:54:07 +09:00
};
};
2014-07-16 03:16:44 +09:00
sound: sound {
2018-05-14 10:01:48 +02:00
compatible = "hardkernel,odroid-xu4-audio";
2015-02-03 15:06:21 +01:00
2018-05-14 10:01:48 +02:00
cpu {
2015-02-03 15:06:21 +01:00
sound-dai = <&i2s0 0>;
};
2018-05-14 10:01:48 +02:00
codec {
sound-dai = <&hdmi>, <&max98090>;
2015-02-03 15:06:21 +01:00
};
2014-07-16 03:16:44 +09:00
};
2015-02-05 00:35:58 +09:00
emmc_pwrseq: pwrseq {
2019-01-24 13:22:57 +01:00
pinctrl-0 = <&emmc_rstn>;
2015-02-05 00:35:58 +09:00
pinctrl-names = "default";
compatible = "mmc-pwrseq-emmc";
2015-10-08 07:39:58 +09:00
reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>;
2015-02-05 00:35:58 +09:00
};
2015-04-06 21:06:50 +02:00
fixed-rate-clocks {
xxti {
compatible = "samsung,clock-xxti";
clock-frequency = <0>;
2014-07-16 02:54:07 +09:00
};
2015-04-06 21:06:50 +02:00
xusbxti {
compatible = "samsung,clock-xusbxti";
clock-frequency = <24000000>;
2014-07-16 02:54:07 +09:00
};
2015-04-06 21:06:50 +02:00
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
thermal-zones {
cpu_thermal: cpu-thermal {
cooling-maps {
2016-12-29 14:36:51 +01:00
cooling_map0: map0 {
2015-04-06 21:06:50 +02:00
/* Corresponds to 800MHz at freq_table */
2018-11-16 15:31:10 +05:30
cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
<&cpu2 7 7>, <&cpu3 7 7>;
2015-04-06 21:06:50 +02:00
};
2016-12-29 14:36:51 +01:00
cooling_map1: map1 {
2015-04-06 21:06:50 +02:00
/* Corresponds to 200MHz at freq_table */
2018-11-16 15:31:10 +05:30
cooling-device = <&cpu0 13 13>,
<&cpu1 13 13>,
<&cpu2 13 13>,
<&cpu3 13 13>;
2015-04-06 21:06:50 +02:00
};
};
2014-07-16 02:54:07 +09:00
};
};
2015-04-06 21:06:50 +02:00
};
2014-07-16 02:54:07 +09:00
2016-04-11 12:57:58 +09:00
&bus_dmc {
devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
vdd-supply = <&buck1_reg>;
status = "okay";
};
&bus_acp {
devfreq = <&bus_dmc>;
status = "okay";
};
&bus_c2c {
devfreq = <&bus_dmc>;
status = "okay";
};
&bus_leftbus {
devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
vdd-supply = <&buck3_reg>;
status = "okay";
};
&bus_rightbus {
devfreq = <&bus_leftbus>;
status = "okay";
};
&bus_display {
devfreq = <&bus_leftbus>;
status = "okay";
};
&bus_fsys {
devfreq = <&bus_leftbus>;
status = "okay";
};
&bus_peri {
devfreq = <&bus_leftbus>;
status = "okay";
};
&bus_mfc {
devfreq = <&bus_leftbus>;
status = "okay";
};
2018-02-05 08:57:06 +01:00
&camera {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <>;
};
2018-05-14 10:01:48 +02:00
&clock {
assigned-clocks = <&clock CLK_FOUT_EPLL>;
assigned-clock-rates = <45158401>;
};
2016-12-09 08:22:11 +01:00
&clock_audss {
assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
<&clock_audss EXYNOS_MOUT_I2S>,
<&clock_audss EXYNOS_DOUT_SRP>,
2018-05-14 10:01:48 +02:00
<&clock_audss EXYNOS_DOUT_AUD_BUS>,
<&clock_audss EXYNOS_DOUT_I2S>;
2016-12-09 08:22:11 +01:00
assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
2018-05-14 10:01:48 +02:00
<&clock_audss EXYNOS_MOUT_AUDSS>;
assigned-clock-rates = <0>, <0>,
<196608001>,
<(196608001 / 2)>,
<(196608001 / 8)>;
2016-12-09 08:22:11 +01:00
};
2015-08-12 07:38:45 +09:00
&cpu0 {
cpu0-supply = <&buck2_reg>;
};
2015-04-06 21:06:50 +02:00
&pinctrl_1 {
gpio_power_key: power_key {
samsung,pins = "gpx1-3";
2016-09-04 13:04:09 +02:00
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
2014-07-16 02:54:07 +09:00
};
2015-04-06 21:06:50 +02:00
max77686_irq: max77686-irq {
samsung,pins = "gpx3-2";
2016-09-04 13:04:09 +02:00
samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
2014-07-16 02:54:07 +09:00
};
2015-04-06 21:06:50 +02:00
hdmi_hpd: hdmi-hpd {
samsung,pins = "gpx3-7";
2016-09-04 13:04:09 +02:00
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
2014-07-16 02:54:07 +09:00
};
2019-01-24 13:22:57 +01:00
emmc_rstn: emmc-rstn {
samsung,pins = "gpk1-2";
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
};
2015-04-06 21:06:50 +02:00
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&ehci {
status = "okay";
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&exynos_usbphy {
status = "okay";
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&fimc_0 {
status = "okay";
assigned-clocks = <&clock CLK_MOUT_FIMC0>,
<&clock CLK_SCLK_FIMC0>;
assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
assigned-clock-rates = <0>, <176000000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&fimc_1 {
status = "okay";
assigned-clocks = <&clock CLK_MOUT_FIMC1>,
<&clock CLK_SCLK_FIMC1>;
assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
assigned-clock-rates = <0>, <176000000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&fimc_2 {
status = "okay";
assigned-clocks = <&clock CLK_MOUT_FIMC2>,
<&clock CLK_SCLK_FIMC2>;
assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
assigned-clock-rates = <0>, <176000000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&fimc_3 {
status = "okay";
assigned-clocks = <&clock CLK_MOUT_FIMC3>,
<&clock CLK_SCLK_FIMC3>;
assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
assigned-clock-rates = <0>, <176000000>;
};
2014-07-16 02:54:07 +09:00
2019-06-21 20:02:03 +02:00
&gpu {
mali-supply = <&buck4_reg>;
status = "okay";
};
2015-04-06 21:06:50 +02:00
&hdmi {
2016-08-24 22:07:16 +09:00
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
2015-04-06 21:06:50 +02:00
pinctrl-names = "default";
pinctrl-0 = <&hdmi_hpd>;
vdd-supply = <&ldo8_reg>;
vdd_osc-supply = <&ldo10_reg>;
vdd_pll-supply = <&ldo8_reg>;
ddc = <&i2c_2>;
status = "okay";
};
2014-07-16 02:54:07 +09:00
2016-03-25 14:10:01 +01:00
&hdmicec {
status = "okay";
};
2015-04-06 21:06:50 +02:00
&hsotg {
dr_mode = "peripheral";
status = "okay";
vusb_d-supply = <&ldo15_reg>;
vusb_a-supply = <&ldo12_reg>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&i2c_0 {
samsung,i2c-sda-delay = <100>;
samsung,i2c-max-bus-freq = <400000>;
status = "okay";
2017-10-13 12:54:51 -05:00
usb3503: usb3503@8 {
2015-04-06 21:06:50 +02:00
compatible = "smsc,usb3503";
reg = <0x08>;
2015-10-08 07:39:58 +09:00
intn-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
connect-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>;
2015-04-06 21:06:50 +02:00
initial-mode = <1>;
};
2014-07-16 02:54:07 +09:00
2017-10-13 12:54:51 -05:00
max77686: pmic@9 {
2015-04-06 21:06:50 +02:00
compatible = "maxim,max77686";
interrupt-parent = <&gpx3>;
2017-06-02 20:13:45 +02:00
interrupts = <2 IRQ_TYPE_NONE>;
2015-04-06 21:06:50 +02:00
pinctrl-names = "default";
pinctrl-0 = <&max77686_irq>;
reg = <0x09>;
#clock-cells = <1>;
voltage-regulators {
ldo1_reg: LDO1 {
regulator-name = "VDD_ALIVE_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
ldo2_reg: LDO2 {
regulator-name = "VDDQ_M1_2_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
2015-01-30 08:26:02 +09:00
2015-04-06 21:06:50 +02:00
ldo3_reg: LDO3 {
regulator-name = "VDDQ_EXT_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo4_reg: LDO4 {
regulator-name = "VDDQ_MMC2_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo5_reg: LDO5 {
regulator-name = "VDDQ_MMC1_3_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo6_reg: LDO6 {
regulator-name = "VDD10_MPLL_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo7_reg: LDO7 {
regulator-name = "VDD10_XPLL_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
};
2014-07-16 02:54:07 +09:00
2015-09-21 19:59:00 +02:00
ldo8_reg: LDO8 {
2015-04-06 21:06:50 +02:00
regulator-name = "VDD10_HDMI_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
};
2014-07-16 02:54:07 +09:00
2015-09-21 19:59:00 +02:00
ldo10_reg: LDO10 {
2015-04-06 21:06:50 +02:00
regulator-name = "VDDQ_MIPIHSI_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo11_reg: LDO11 {
regulator-name = "VDD18_ABB1_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo12_reg: LDO12 {
regulator-name = "VDD33_USB_3.3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo13_reg: LDO13 {
regulator-name = "VDDQ_C2C_W_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo14_reg: LDO14 {
regulator-name = "VDD18_ABB0_2_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo15_reg: LDO15 {
regulator-name = "VDD10_HSIC_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo16_reg: LDO16 {
regulator-name = "VDD18_HSIC_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo20_reg: LDO20 {
regulator-name = "LDO20_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
ldo21_reg: LDO21 {
2016-05-04 14:44:00 +02:00
regulator-name = "TFLASH_2.8V";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
2015-04-06 21:06:50 +02:00
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2016-05-04 14:43:59 +02:00
ldo22_reg: LDO22 {
/*
* Only U3 uses it, so let it define the
* constraints
*/
regulator-name = "LDO22";
regulator-boot-on;
};
2015-04-06 21:06:50 +02:00
ldo25_reg: LDO25 {
regulator-name = "VDDQ_LCD_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
buck1_reg: BUCK1 {
regulator-name = "vdd_mif";
2016-04-11 12:57:57 +09:00
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1100000>;
2015-04-06 21:06:50 +02:00
regulator-always-on;
regulator-boot-on;
2014-07-16 02:54:07 +09:00
};
2015-04-06 21:06:50 +02:00
buck2_reg: BUCK2 {
regulator-name = "vdd_arm";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-boot-on;
};
2014-07-16 03:16:44 +09:00
2015-04-06 21:06:50 +02:00
buck3_reg: BUCK3 {
regulator-name = "vdd_int";
2016-04-11 12:57:57 +09:00
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1050000>;
2015-04-06 21:06:50 +02:00
regulator-always-on;
regulator-boot-on;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
buck4_reg: BUCK4 {
regulator-name = "vdd_g3d";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1100000>;
regulator-microvolt-offset = <50000>;
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
buck5_reg: BUCK5 {
regulator-name = "VDDQ_CKEM1_2_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
regulator-boot-on;
};
2015-01-30 08:26:02 +09:00
2015-04-06 21:06:50 +02:00
buck6_reg: BUCK6 {
regulator-name = "BUCK6_1.35V";
regulator-min-microvolt = <1350000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-boot-on;
};
2015-01-30 08:26:02 +09:00
2015-04-06 21:06:50 +02:00
buck7_reg: BUCK7 {
regulator-name = "BUCK7_2.0V";
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
regulator-always-on;
};
buck8_reg: BUCK8 {
2016-05-04 14:43:59 +02:00
/*
* Constraints set by specific board: X,
* X2 and U3.
*/
2015-04-06 21:06:50 +02:00
regulator-name = "BUCK8_2.8V";
};
2015-01-30 08:26:02 +09:00
};
};
2015-04-06 21:06:50 +02:00
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
&i2c_1 {
status = "okay";
max98090: max98090@10 {
compatible = "maxim,max98090";
reg = <0x10>;
interrupt-parent = <&gpx0>;
2017-06-02 20:13:45 +02:00
interrupts = <0 IRQ_TYPE_NONE>;
2015-04-06 21:06:50 +02:00
clocks = <&i2s0 CLK_I2S_CDCLK>;
clock-names = "mclk";
#sound-dai-cells = <0>;
2015-02-04 23:44:15 +09:00
};
2015-04-06 21:06:50 +02:00
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
&i2c_2 {
status = "okay";
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
&i2c_8 {
status = "okay";
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
&i2s0 {
pinctrl-0 = <&i2s0_bus>;
pinctrl-names = "default";
status = "okay";
2018-05-14 10:01:48 +02:00
assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
2014-07-16 02:54:07 +09:00
};
2014-07-16 02:54:07 +09:00
2015-04-06 21:06:50 +02:00
&mixer {
status = "okay";
2015-02-05 00:35:58 +09:00
};
2015-04-06 21:06:50 +02:00
&mshc_0 {
pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
pinctrl-names = "default";
2016-05-04 14:43:59 +02:00
vmmc-supply = <&ldo20_reg>;
2015-04-06 21:06:50 +02:00
mmc-pwrseq = <&emmc_pwrseq>;
status = "okay";
broken-cd;
card-detect-delay = <200>;
samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>;
bus-width = <8>;
cap-mmc-highspeed;
};
2014-08-18 11:39:50 -05:00
2015-04-06 21:06:50 +02:00
&rtc {
status = "okay";
clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
clock-names = "rtc", "rtc_src";
};
2015-02-04 23:44:15 +09:00
2015-04-06 21:06:50 +02:00
&sdhci_2 {
bus-width = <4>;
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
pinctrl-names = "default";
2016-05-04 14:43:58 +02:00
vmmc-supply = <&ldo21_reg>;
vqmmc-supply = <&ldo4_reg>;
2018-09-05 19:40:24 +02:00
cd-gpios = <&gpk2 2 GPIO_ACTIVE_LOW>;
2015-04-06 21:06:50 +02:00
status = "okay";
};
&serial_0 {
status = "okay";
};
&serial_1 {
status = "okay";
};
&tmu {
vtmu-supply = <&ldo10_reg>;
status = "okay";
};