From ce0f3eb005229917ba3e6edfbc5c3d16fa02f11b Mon Sep 17 00:00:00 2001 From: WildfireDEV Date: Wed, 8 Mar 2017 18:41:53 +1100 Subject: [PATCH] Update to G920F Marshmallow Samsung Sources (G920FXXU5DQA7) --- Documentation/sysctl/fs.txt | 23 + arch/arm/include/asm/thread_info.h | 0 arch/arm/include/asm/tls.h | 0 arch/arm/kernel/entry-armv.S | 0 arch/arm/kernel/process.c | 0 arch/arm/kernel/ptrace.c | 0 arch/arm/kernel/sys_oabi-compat.c | 71 +- arch/arm/kernel/traps.c | 0 .../boot/dts/exynos7420-espresso7420_evt0.dts | 1097 +++++++ .../boot/dts/exynos7420-pinctrl_evt0.dtsi | 806 +++++ .../exynos7420-universal7420-ufs_rev00.dts | 1644 ++++++++++ ...xynos7420-universal7420_rev00_battery.dtsi | 182 ++ .../dts/exynos7420-zeroflte_battery_02.dtsi | 360 +++ .../dts/exynos7420-zeroflte_battery_05.dtsi | 370 +++ .../exynos7420-zeroflte_eur_battery_08.dtsi | 385 +++ .../exynos7420-zeroflte_eur_battery_09.dtsi | 385 +++ .../dts/exynos7420-zeroflte_eur_open_00.dts | 734 +++++ .../dts/exynos7420-zeroflte_eur_open_01.dts | 888 ++++++ .../dts/exynos7420-zeroflte_eur_open_02.dts | 887 ++++++ .../dts/exynos7420-zeroflte_eur_open_03.dts | 897 ++++++ .../dts/exynos7420-zeroflte_eur_open_04.dts | 897 ++++++ .../dts/exynos7420-zeroflte_eur_open_05.dts | 898 ++++++ .../boot/dts/exynos7420-zeroflte_gpio_00.dtsi | 380 +++ .../boot/dts/exynos7420-zeroflte_gpio_01.dtsi | 389 +++ .../boot/dts/exynos7420-zeroflte_gpio_02.dtsi | 390 +++ .../boot/dts/exynos7420-zeroflte_gpio_03.dtsi | 390 +++ .../boot/dts/exynos7420-zeroflte_gpio_04.dtsi | 390 +++ .../boot/dts/exynos7420-zeroflte_gpio_05.dtsi | 398 +++ arch/arm64/boot/dts/exynos7420_evt0.dtsi | 2788 +++++++++++++++++ arch/arm64/boot/dts/modem-ss300-pdata.dtsi | 188 ++ .../arm64/boot/dts/modem-ss333-kor-pdata.dtsi | 254 ++ .../configs/exynos7420-zeroflte_defconfig | 1 + arch/arm64/include/asm/cacheflush.h | 3 +- arch/arm64/kernel/perf_event.c | 21 +- arch/arm64/kernel/sys.c | 2 +- arch/arm64/kernel/vdso/vdso.so | Bin 0 -> 2760 bytes arch/arm64/kernel/vdso/vdso.so.dbg | Bin 0 -> 4008 bytes arch/arm64/mm/cache.S | 36 +- arch/arm64/mm/fault.c | 1 + arch/arm64/mm/flush.c | 36 +- arch/arm64/mm/proc-macros.S | 32 + block/genhd.c | 1 + drivers/char/diag/diagchar_core.c | 0 drivers/char/mst_ctrl.c | 3 + 44 files changed, 16155 insertions(+), 72 deletions(-) mode change 100755 => 100644 arch/arm/include/asm/thread_info.h mode change 100755 => 100644 arch/arm/include/asm/tls.h mode change 100755 => 100644 arch/arm/kernel/entry-armv.S mode change 100755 => 100644 arch/arm/kernel/process.c mode change 100755 => 100644 arch/arm/kernel/ptrace.c mode change 100755 => 100644 arch/arm/kernel/traps.c create mode 100644 arch/arm64/boot/dts/exynos7420-espresso7420_evt0.dts create mode 100644 arch/arm64/boot/dts/exynos7420-pinctrl_evt0.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-universal7420-ufs_rev00.dts create mode 100755 arch/arm64/boot/dts/exynos7420-universal7420_rev00_battery.dtsi create mode 100755 arch/arm64/boot/dts/exynos7420-zeroflte_battery_02.dtsi create mode 100755 arch/arm64/boot/dts/exynos7420-zeroflte_battery_05.dtsi create mode 100755 arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_08.dtsi create mode 100755 arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_09.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_00.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_01.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_02.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_03.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_04.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_05.dts create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_00.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_01.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_02.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_03.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_04.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420-zeroflte_gpio_05.dtsi create mode 100644 arch/arm64/boot/dts/exynos7420_evt0.dtsi create mode 100644 arch/arm64/boot/dts/modem-ss300-pdata.dtsi create mode 100644 arch/arm64/boot/dts/modem-ss333-kor-pdata.dtsi create mode 100755 arch/arm64/kernel/vdso/vdso.so create mode 100755 arch/arm64/kernel/vdso/vdso.so.dbg mode change 100755 => 100644 drivers/char/diag/diagchar_core.c diff --git a/Documentation/sysctl/fs.txt b/Documentation/sysctl/fs.txt index 88152f214..302b5ed61 100644 --- a/Documentation/sysctl/fs.txt +++ b/Documentation/sysctl/fs.txt @@ -32,6 +32,8 @@ Currently, these files are in /proc/sys/fs: - nr_open - overflowuid - overflowgid +- pipe-user-pages-hard +- pipe-user-pages-soft - protected_hardlinks - protected_symlinks - suid_dumpable @@ -159,6 +161,27 @@ The default is 65534. ============================================================== +pipe-user-pages-hard: + +Maximum total number of pages a non-privileged user may allocate for pipes. +Once this limit is reached, no new pipes may be allocated until usage goes +below the limit again. When set to 0, no limit is applied, which is the default +setting. + +============================================================== + +pipe-user-pages-soft: + +Maximum total number of pages a non-privileged user may allocate for pipes +before the pipe size gets limited to a single page. Once this limit is reached, +new pipes will be limited to a single page in size for this user in order to +limit total memory usage, and trying to increase them using fcntl() will be +denied until usage goes below the limit again. The default value allows to +allocate up to 1024 pipes at their default size. When set to 0, no limit is +applied. + +============================================================== + protected_hardlinks: A long-standing class of security issues is the hardlink-based diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h old mode 100755 new mode 100644 diff --git a/arch/arm/include/asm/tls.h b/arch/arm/include/asm/tls.h old mode 100755 new mode 100644 diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S old mode 100755 new mode 100644 diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c old mode 100755 new mode 100644 diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c old mode 100755 new mode 100644 diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c index 3e9481169..20a6f3a73 100644 --- a/arch/arm/kernel/sys_oabi-compat.c +++ b/arch/arm/kernel/sys_oabi-compat.c @@ -193,52 +193,53 @@ struct oabi_flock64 { pid_t l_pid; } __attribute__ ((packed,aligned(4))); -asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, +static long do_locks(unsigned int fd, unsigned int cmd, unsigned long arg) { - struct oabi_flock64 user; struct flock64 kernel; - mm_segment_t fs = USER_DS; /* initialized to kill a warning */ - unsigned long local_arg = arg; - int ret; + struct oabi_flock64 user; + mm_segment_t fs; + long ret; - switch (cmd) { - case F_GETLK64: - case F_SETLK64: - case F_SETLKW64: - if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, - sizeof(user))) - return -EFAULT; - kernel.l_type = user.l_type; - kernel.l_whence = user.l_whence; - kernel.l_start = user.l_start; - kernel.l_len = user.l_len; - kernel.l_pid = user.l_pid; - local_arg = (unsigned long)&kernel; - fs = get_fs(); - set_fs(KERNEL_DS); - } + if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, + sizeof(user))) + return -EFAULT; + kernel.l_type = user.l_type; + kernel.l_whence = user.l_whence; + kernel.l_start = user.l_start; + kernel.l_len = user.l_len; + kernel.l_pid = user.l_pid; - ret = sys_fcntl64(fd, cmd, local_arg); + fs = get_fs(); + set_fs(KERNEL_DS); + ret = sys_fcntl64(fd, cmd, (unsigned long)&kernel); + set_fs(fs); + if (!ret && (cmd == F_GETLK64 || cmd == F_OFD_GETLK)) { + user.l_type = kernel.l_type; + user.l_whence = kernel.l_whence; + user.l_start = kernel.l_start; + user.l_len = kernel.l_len; + user.l_pid = kernel.l_pid; + if (copy_to_user((struct oabi_flock64 __user *)arg, + &user, sizeof(user))) + ret = -EFAULT; + } + return ret; +} + +asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, + unsigned long arg) +{ switch (cmd) { case F_GETLK64: - if (!ret) { - user.l_type = kernel.l_type; - user.l_whence = kernel.l_whence; - user.l_start = kernel.l_start; - user.l_len = kernel.l_len; - user.l_pid = kernel.l_pid; - if (copy_to_user((struct oabi_flock64 __user *)arg, - &user, sizeof(user))) - ret = -EFAULT; - } case F_SETLK64: case F_SETLKW64: - set_fs(fs); - } + return do_locks(fd, cmd, arg); - return ret; + default: + return sys_fcntl64(fd, cmd, arg); + } } struct oabi_epoll_event { diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c old mode 100755 new mode 100644 diff --git a/arch/arm64/boot/dts/exynos7420-espresso7420_evt0.dts b/arch/arm64/boot/dts/exynos7420-espresso7420_evt0.dts new file mode 100644 index 000000000..fe01ad66a --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-espresso7420_evt0.dts @@ -0,0 +1,1097 @@ +/* + * SAMSUNG ESPRESSO7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420.dtsi" + +/ { + model = "Samsung ESPRESSO7420 board based on EXYNOS7420"; + compatible = "samsung,exynos7420", "samsung,ESPRESSO7420"; + + memory@40000000 { + device_type = "memory"; + reg = <0x40000000 0x80000000>; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + common { + compatible = "exynos5433-ion,common"; + size = <0x400000>; + alignment = <0x1000>; + }; + + g2d_wfd { + compatible = "exynos5433-ion,g2d_wfd"; + size = <0x800000>; + alignment = <0x1000>; + }; + + video { + compatible = "exynos5433-ion,video"; + size = <0xA800000>; + alignment = <0x10000>; + }; + + mfc_fw { + compatible = "exynos5433-ion,mfc_fw"; + size = <0x100000>; + alignment = <0x10000>; + }; + + mfc_nfw { + compatible = "exynos5433-ion,mfc_nfw"; + size = <0x100000>; + alignment = <0x1000>; + }; + + secdma { + compatible = "exynos5433-ion,secdma"; + size = <0x40000>; + alignment = <0x40000>; + }; + }; + + aliases { + spi0 = &spi_0; + spi1 = &spi_1; + spi2 = &spi_2; + spi3 = &spi_3; + spi4 = &spi_4; + }; + + chosen { + bootargs = "earlyprintk=exynos,0x14C30000 console=ttySAC2,115200n8 ess_setup=0x46000000"; + linux,initrd-start = <0x42000000>; + linux,initrd-end = <0x420FFFFF>; + }; + + fixed-rate-clocks { + oscclk { + compatible = "samsung,exynos7420-oscclk"; + clock-frequency = <24000000>; + }; + }; + + ion { + compatible = "samsung,exynos5430-ion"; + + ion_noncontig_heap { + id-type = <0 0>; + }; + }; + + dwmmc0@15740000 { + status = "okay"; + num-slots = <1>; + broken-cd; + bypass-smu; + fixed_volt; + clock-gate; + enable-cclk-on-suspend; + only_once_tune; + use-fine-tuning; + bypass-for-allpass; + supports-hs200-mode; + supports-ddr200-mode; + supports-highspeed; + enable-cache-control; + use-enable-shift; + qos_int_level = <468000>; + fifo-depth = <0x40>; + card-detect-delay = <200>; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <3 0 2 1>; + samsung,dw-mshc-ddr-timing = <3 0 3 2>; + samsung,dw-mshc-hs200-timing = <3 0 3 1>; + samsung,dw-mshc-ddr200-timing = <1 0 2 2>; + samsung,dw-mshc-ddr200-delay-line = <118>; + clk_pin = "gpr0-0"; + clk_addr = "15690000.pinctrl"; + clk_val = <0x3>; + clk_str_num = <6>; + num-ref-clks = <8>; + ciu_clkin = <25 50 50 100 200 100 200 400>; + pinctrl-names = "default"; + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>; + gpios = <&gph1 4 0>; + slot@0 { + reg = <0>; + bus-width = <8>; + }; + }; + + + dwmmc2@15560000 { + status = "okay"; + num-slots = <1>; + supports-highspeed; + enable-cclk-on-suspend; + cd-type = <1>; + bypass-smu; + clock-gate; + fifo-depth = <0x40>; + card-detect-delay = <200>; + qos_int_level = <468000>; + bypass-for-allpass; + fix-fmp-size-mismatch; + not-allow-single-dma; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <3 0 3 2>; + samsung,dw-mshc-ddr-timing = <3 0 2 1>; + clk_pin = "gpr4-0"; + clk_addr = "10E60000.pinctrl"; + clk_val = <0x2>; + clk_str_num = <6>; + num-ref-clks = <8>; + ciu_clkin = <25 50 50 100 200 100 200 400>; + pinctrl-names = "default"; + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>; + vdd_vmmc-supply = <&ldo17_reg>; + vqmmc-supply = <&ldo2_reg>; + slot@0 { + reg = <0>; + bus-width = <4>; + disable-wp; + }; + }; + + pinctrl@10580000 { + gpa2_pull_up: gpa2_pull_up { + samsung,pins = "gpa2-0", "gpa2-1", "gpa2-7"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + pmic_irq: pmic-irq { + samsung,pins = "gpa0-2"; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + attn_irq: attn-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + attn_input: attn-input { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + fuel_irq: fuel-irq { + samsung,pins = "gpa3-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + chg_irq: chg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + }; + + hsi2c@14E10000 { + status = "okay"; + touchscreen@20 { + compatible = "synaptics,rmi4"; + reg = <0x20>; + pinctrl-names = "on_state", "off_state"; + pinctrl-0 = <&attn_irq>; + pinctrl-1 = <&attn_input>; + synaptics,irq_gpio = <&gpa2 5 0>; + synaptics,irq_type = <8200>; + synaptics,max_coords = <1440 2560>; /* x y */ + synaptics,num_lines = <29 16>; /* rx tx */ + + synaptics,regulator_dvdd = "tsp_io"; + synaptics,regulator_avdd = "tsp_avdd"; + synaptics,project_name = ""; + }; + }; + + hsi2c@13640000 { + status = "okay"; + sec-fuelgauge@3b { + compatible = "sec-fuelgauge,i2c"; + reg = <0x3b>; + pinctrl-names = "default"; + pinctrl-0 = <&fuel_irq>; + fuelgauge,fuel_int = <&gpa3 4 0>; + fuelgauge,fuel_alert_soc = <2>; + fuelgauge,capacity_max = <990>; + fuelgauge,capacity_max_margin = <30>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <12>; + fuelgaguge,repeated_fuelalert; + fuelgauge,type_str = "SDI"; + }; + }; + + hsi2c@14E20000 { + status = "okay"; + bq24193-charger@6b { + compatible = "ti,bq24193"; + reg = <0x6b>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + pinctrl-names = "default"; + pinctrl-3 = <&chg_irq>; + dev_name = "bq24193"; + battery,fuelgauge_name = "sec-fuelgauge"; + }; + }; + + pinctrl@14870000 { + /* Warm reset information from AP */ + pm_wrsti: pm-wrsti { + samsung,pins = "gpf0-2"; + samsung,pin-con-pdn = <3>; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&gpa2_pull_up>; + button@1 { + label = "gpio-keys: KEY_POWER"; + interrupts = <7 0 0>; + interrupt-parent = <&gpa2>; + linux,code = <116>; + gpios = <&gpa2 7 0xf>; + gpio-key,wakeup = <1>; + }; + button@2 { + label = "gpio-keys: KEY_VOLUMEDOWN"; + interrupts = <1 0 0>; + interrupt-parent = <&gpa2>; + linux,code = <114>; + gpios = <&gpa2 1 0xf>; + }; + button@3 { + label = "gpio-keys: KEY_VOLUMEUP"; + interrupts = <0 0 0>; + interrupt-parent = <&gpa2>; + linux,code = <115>; + gpios = <&gpa2 0 0xf>; + }; + }; + + hsi2c@13660000 { + status = "okay"; + samsung,hs-mode; + clock-frequency = <2500000>; + + s2mps15_pmic@66 { + compatible = "samsung,s2mps15-pmic"; + reg = <0x66>; + interrupts = <2 0 0>; + interrupt-parent = <&gpa0>; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_irq &pm_wrsti>; + gpios = <&gpv7 4 0>, <&gpb0 4 0x2>, <&gpj1 2 0x1>; + smpl_warn_en = <0>; /* 1 : enable , 0 : disable*/ + g3d_en = <0>; /* 1 : enable , 0 : disable */ + dvs_en = <0>; /* 1 : enable , 0 : disable */ + buck_dvs_on; + /* RTC: wtsr/smpl */ + wtsr_en = <1>; /* enable */ + smpl_en = <1>; /* enable */ + wtsr_timer_val = <3>; /* 1000ms */ + smpl_timer_val = <4>; /* 500ms */ + check_jigon = <0>; /* do not check jigon */ + /* RTC: If it's first boot, reset rtc to 1/1/2014 12:00:00(Wed) */ + init_time,sec = <0>; + init_time,min = <0>; + init_time,hour = <12>; + init_time,mday = <1>; + init_time,mon = <0>; + init_time,year = <114>; + init_time,wday = <3>; + + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck7_reg: BUCK7 { + regulator-name = "vdd_mem"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck10_reg: BUCK10 { + regulator-name = "vdd_lldo2"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + ldo1_reg: LDO1 { + regulator-name = "vdd_ldo1"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <900000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + regulator-always-on; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-always-on; + }; + + ldo3_reg: LDO3 { + regulator-name = "vdd_ldo3"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1980000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + regulator-always-on; + }; + + ldo4_reg: LDO4 { + regulator-name = "vdd_ldo4"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1110000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-always-on; + }; + + ldo5_reg: LDO5 { + regulator-name = "vdd_ldo5"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1980000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo6_reg: LDO6 { + regulator-name = "vdd_ldo6"; + regulator-min-microvolt = <2250000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo7_reg: LDO7 { + regulator-name = "vdd_ldo7"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1150000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo9_reg: LDO9 { + regulator-name = "vdd_ldo9"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo10_reg: LDO10 { + regulator-name = "vdd_ldo10"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo11_reg: LDO11 { + regulator-name = "vdd_ldo11"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo12_reg: LDO12 { + regulator-name = "vdd_ldo12"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo13_reg: LDO13 { + regulator-name = "vdd_ldo13"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo14_reg: LDO14 { + regulator-name = "vdd_ldo14"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "vdd_ldo15"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <3>; + }; + + ldo16_reg: LDO16 { + regulator-name = "vdd_ldo16"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <3>; + }; + + ldo17_reg: LDO17 { + regulator-name = "vmmc"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo18_reg: LDO18 { + regulator-name = "vdd_ldo18"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo19_reg: LDO19 { + regulator-name = "vdd_ldo19"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo20_reg: LDO20 { + regulator-name = "vdd_ldo20"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo21_reg: LDO21 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo22_reg: LDO22 { + regulator-name = "CAM_SEN_CORE_1.2V_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo23_reg: LDO23 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo24_reg: LDO24 { + regulator-name = "vdd_ldo24"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo25_reg: LDO25 { + regulator-name = "vdd_ldo25"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo26_reg: LDO26 { + regulator-name = "vdd_ldo26"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1470000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo27_reg: LDO27 { + regulator-name = "vdd_ldo27"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + }; + }; + }; + + dsim_0: dsim@0x13900000 { + lcd_info = <&s6e3ha0>; + /* lcd reset, power */ + gpios = <&gpf3 1 0x1>; + }; + + s6e3ha0: s6e3ha0_wqhd { + mode = <2>; /* 0: video mode, 1: DP command mode, 2: MIPI command mode */ + resolution = <1440 2560>; + size = <70 121>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <20 1 1>; + timing,dsi-hs-clk = <1100>; + timing,dsi-escape-clk = <20>; + mic = <1>; /* 0: mic disable, 1: mic enable */ + mic_ver = <2>; /* 0: mic v1.1, 1: v1.2, 2: v2.0 */ + type_of_ddi = <0>; /* 0: Samsung Mobile, 1: MAGNA, 2: Normal(Etc) */ + }; + + pinctrl@10580000 { + + dwc3_b_sess: dwc3-b-sess { + samsung,pins = "gpa1-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + + dwc3_id: dwc3-id { + samsung,pins = "gpa1-1"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + }; + + dwc3_vbus: fixedregulator@0 { + compatible = "regulator-fixed"; + regulator-name = "VUSB_VBUS_5V"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + gpio = <&gpf4 1 1>; + enable-active-high; + }; + + usb@15400000 { + dwc3-vbus-supply = <&dwc3_vbus>; + samsung,bsess-gpio = <&gpa1 0 0xf>; + samsung,id-gpio = <&gpa1 1 0xf>; + pinctrl-names = "default"; + pinctrl-0 = <&dwc3_b_sess &dwc3_id>; + status = "okay"; + + dwc3 { + maximum-speed = "super-speed"; + dr_mode = "otg"; + }; + }; + + hsi2c@136A0000 { + status = "okay"; + clock-frequency = <100000>; + /* hdmi edid dirver */ + edid@50 { + compatible = "samsung,exynos5-edid_driver"; + reg = <0x50>; + }; + + /* hdmi hdcp dirver */ + hdcp@3A { + compatible = "samsung,exynos5-hdcp_driver"; + reg = <0x3A>; + }; + }; + + hdmi@13970000 { + /* all bit clock supports: 1, not support: 0 */ + audio_master_clk = <1>; + gpios = <&gpa3 0 0xf>, <&gpf4 5 0x1>, <&gpf4 6 0x1>; + }; + + fimc_is_sensor0: fimc_is_sensor@14020000 { + scenario = <0>; + gpio_reset = <&gpc0 1 0x1>; + id = <0>; + mclk_ch = <0>; + csi_ch = <0>; + flite_ch = <0>; + i2c_ch = <0x0200>; + i2c_addr = <0x5A5A>; + flash_first_gpio = <2>; + flash_second_gpio = <3>; + is_bns = <1>; + status = "okay"; + }; + + fimc_is_sensor1: fimc_is_sensor@14030000 { + scenario = <0>; + gpio_reset = <&gpc0 4 0x1>; + gpio_standby = <&gpc0 0 0x1>; + id = <1>; + mclk_ch = <2>; + csi_ch = <1>; + flite_ch = <1>; + i2c_ch = <1>; + i2c_addr = <0x20>; + is_bns = <0>; + status = "okay"; + }; + + fimc_is@14200000 { + fimc_is_dvfs { + default_int = <590000>; /* L0 */ + default_cam = <590000>; /* L0 */ + default_mif = <828000>; /* L0 */ + default_i2c = <0>; + + front_preview_int = <590000>; /* L1 */ + front_preview_cam = <590000>; /* L7 */ + front_preview_mif = <828000>; /* L0 */ + front_preview_i2c = <0>; + + front_capture_int = <590000>; /* L1 */ + front_capture_cam = <590000>; /* L7 */ + front_capture_mif = <828000>; /* L0 */ + front_capture_i2c = <0>; + + front_camcording_int = <590000>; /* L1 */ + front_camcording_cam = <590000>; /* L7 */ + front_camcording_mif = <828000>; /* L0 */ + front_camcording_i2c = <0>; + + front_vt1_int = <590000>; /* L1 */ + front_vt1_cam = <590000>; /* L7 */ + front_vt1_mif = <828000>; /* L0 */ + front_vt1_i2c = <0>; + + front_vt2_int = <590000>; /* L1 */ + front_vt2_cam = <590000>; /* L7 */ + front_vt2_mif = <828000>; /* L0 */ + front_vt2_i2c = <0>; + + rear_preview_fhd_int = <590000>; /* L1 */ + rear_preview_fhd_cam = <590000>; /* L6 */ + rear_preview_fhd_mif = <828000>; /* L1 */ + rear_preview_fhd_i2c = <0>; + + rear_preview_whd_int = <590000>; /* L1 */ + rear_preview_whd_cam = <590000>; /* L6 */ + rear_preview_whd_mif = <828000>; /* L0 */ + rear_preview_whd_i2c = <0>; + + rear_preview_uhd_int = <590000>; /* L0_A */ + rear_preview_uhd_cam = <590000>; /* L2 */ + rear_preview_uhd_mif = <828000>; /* L0 */ + rear_preview_uhd_i2c = <0>; + + rear_capture_int = <590000>; /* L0 */ + rear_capture_cam = <590000>; /* L1 */ + rear_capture_mif = <828000>; /* L0 */ + rear_capture_i2c = <0>; + + rear_camcording_fhd_int = <590000>; /* L1 */ + rear_camcording_fhd_cam = <590000>; /* L4 */ + rear_camcording_fhd_mif = <828000>; /* L1 */ + rear_camcording_fhd_i2c = <0>; + + rear_camcording_uhd_int = <590000>; /* L0_A */ + rear_camcording_uhd_cam = <590000>; /* L2 */ + rear_camcording_uhd_mif = <828000>; /* L0 */ + rear_camcording_uhd_i2c = <0>; + + dual_preview_int = <590000>; /* L1 */ + dual_preview_cam = <590000>; /* L5 */ + dual_preview_mif = <828000>; /* L0 */ + dual_preview_i2c = <0>; + + dual_capture_int = <590000>; /* L0 */ + dual_capture_cam = <590000>; /* L0 */ + dual_capture_mif = <828000>; /* L0 */ + dual_capture_i2c = <0>; + + dual_camcording_int = <590000>; /* L1 */ + dual_camcording_cam = <590000>; /* L3 */ + dual_camcording_mif = <828000>; /* L0 */ + dual_camcording_i2c = <0>; + + high_speed_fps_int = <590000>; /* L0 */ + high_speed_fps_cam = <590000>; /* L1 */ + high_speed_fps_mif = <828000>; /* L0 */ + high_speed_fps_i2c = <0>; + + dis_enable_int = <590000>; /* L0 */ + dis_enable_cam = <590000>; /* L0 */ + dis_enable_mif = <828000>; /* L0 */ + dis_enable_i2c = <0>; + + max_int = <590000>; /* L0 */ + max_cam = <590000>; /* L0 */ + max_mif = <828000>; /* L0 */ + max_i2c = <0>; + }; + }; + + spi_0: spi@14d20000 { + status = "okay"; + audio_codec: wm5110@0 { + compatible = "wlf,wm5110"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa0>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_ldoena>; + + wlf,reset = <&gpf2 1 0>; + wlf,ldoena = <&gpf2 2 0>; + wlf,init-mic-delay = <30>; + wlf,micd-detect-debounce = <300>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,micd-ranges = < + 139 226 + 295 115 + 752 114 + 1257 217 + >; + + wlf,micd-configs = < + 0x0 1 0 + >; + + wlf,micbias1 = <2800 0 1 0 0>; + wlf,micbias2 = <1800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xA101 + 0xA101 + 0xA101 + 0xA101 + 0x8101 + >; + + wlf,gpsw = <0x3>; + wlf,use-jd-gpio; + wlf,jd-gpio-nopull; + wlf,fixed-hpdet-imp = <16>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + + wlf,max-channels-clocked = <2 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <2 1 3 0>; + /* 1st cell:IN1 2rd cell:IN2 3nd cell:IN3 4th cell:IN4 */ + wlf,inmode = <0 0 0 0>; + + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@1100 { + reg = <0x1100>; + firmware { + EDAC { + wlf,wmfw-file = "edac"; + wlf,bin-file = "edac"; + }; + TRACE { + wlf,wmfw-file = "trace"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@1200 { + reg = <0x1200>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + }; + }; + }; + adsp@1300 { + reg = <0x1300>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@1400 { + reg = <0x1400>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + }; + + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa0-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + }; + codec_irq_idle: codec-irq-idle { + samsung,pins = "gpa0-5"; + samsung,pin-function = <0x0>; + samsung,pin-pud = <3>; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf2-1"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + codec_ldoena: codec-ldoena { + samsung,pins ="gpf2-2"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <1>; + }; + }; + + i2s0: i2s@11440000 { + status = "okay"; + }; + + i2s1: i2s@14D60000 { + status = "okay"; + }; + + audio_codec_dummy: dummy-codec { + compatible = "samsung,dummy-codec"; + status = "okay"; + }; + + i2s_dummy: dummy-i2s { + compatible = "samsung,dummy-i2s"; + status = "okay"; + }; + + sound { + compatible = "samsung,espresso_wm5110"; + pinctrl-names = "default", "idle"; + pinctrl-0 = <&codec_irq>; + pinctrl-1 = <&codec_irq_idle>; + samsung,audio-cpu = <&i2s0 /* primary */ + &i2s0>; /* secondary */ + samsung,audio-cpu-hdmi = <&i2s1>; /* hdmi */ + samsung,audio-codec = <&audio_codec + &audio_codec + &audio_codec_dummy>; + status = "okay"; + }; + + amba { + adma: adma@11420000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x11420000 0x1000>; + interrupts = <0 97 0>; + clocks = <&clock 400>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <16>; + #dma-mcode-addr = <0x03046000>; + samsung,lpass-subip; + status = "ok"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-pinctrl_evt0.dtsi b/arch/arm64/boot/dts/exynos7420-pinctrl_evt0.dtsi new file mode 100644 index 000000000..27841fbbd --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-pinctrl_evt0.dtsi @@ -0,0 +1,806 @@ +/* + * Samsung's Exynos5430 SoC pin-mux and pin-config device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * Samsung's Exynos5430 SoC pin-mux and pin-config options are listed as device + * tree nodes are listed in this file. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + pinctrl@10580000 { + gpa0: gpa0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + interrupt-parent = <&gic>; + interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, + <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>; + }; + + gpa1: gpa1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <3>; + interrupt-parent = <&gic>; + interrupts = <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>, + <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>; + }; + + gpa2: gpa2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpa3: gpa3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + hdmi_hdmi_hpd: hdmi_hdmi_hpd { + samsung,pins = "gpa3-0"; + samsung,pin-function = <3>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + hdmi_ext_hpd: hdmi_ext_hpd { + samsung,pins = "gpa3-0"; + samsung,pin-function = <15>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + hdmi_cec: hdmi_cec { + samsung,pins = "gpa3-1"; + samsung,pin-function = <3>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@114B0000 { + gpz0: gpz0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpz1: gpz1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + i2s0_bus: i2s0-bus { + samsung,pins = "gpz0-0", "gpz0-1", "gpz0-2", "gpz0-3", + "gpz0-4", "gpz0-5", "gpz0-6"; + samsung,pin-function = <2>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + i2s0_bus_idle: i2s0-bus-idle { + samsung,pins = "gpz0-0", "gpz0-1", "gpz0-2", "gpz0-3", + "gpz0-4", "gpz0-5", "gpz0-6"; + samsung,pin-function = <0>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + pcm0_bus: pcm0-bus { + samsung,pins = "gpz1-0", "gpz1-1", "gpz1-2", "gpz1-3"; + samsung,pin-function = <3>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + uart_aud_bus: uart-aud-bus { + samsung,pins = "gpz1-3", "gpz1-2", "gpz1-1", "gpz1-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + }; + + uart_aud_bus_idle: uart-aud-bus-idle { + samsung,pins = "gpz1-3"; + samsung,pin-function = <1>; + samsung,pin-val = <1>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn = <1>; + samsung,pin-pud-pdn = <3>; + }; + + uart_aud_bus_lpm: uart-aud-bus-lpm { + samsung,pins = "gpz1-3"; + samsung,pin-function = <1>; + samsung,pin-val = <1>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn = <1>; + samsung,pin-pud-pdn = <3>; + }; + }; + + pinctrl@13470000 { + gpb0: gpb0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc0: gpc0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc1: gpc1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc2: gpc2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpc3: gpc3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd0: gpd0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd1: gpd1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd2: gpd2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd4: gpd4 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd5: gpd5 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd6: gpd6 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd7: gpd7 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpd8: gpd8 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpg0: gpg0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpg3: gpg3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + hs_i2c10_bus: hs-i2c10-bus { + samsung,pins = "gpb0-1", "gpb0-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c11_bus: hs-i2c11-bus { + samsung,pins = "gpb0-3", "gpb0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c2_bus: hs-i2c2-bus { + samsung,pins = "gpd0-3", "gpd0-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c3_bus: hs-i2c3-bus { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c0_bus: hs-i2c0-bus { + samsung,pins = "gpd2-1", "gpd2-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c1_bus: hs-i2c1-bus { + samsung,pins = "gpd2-3", "gpd2-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c9_bus: hs-i2c9-bus { + samsung,pins = "gpd2-7", "gpd2-6"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c8_bus: hs-i2c8-bus { + samsung,pins = "gpd5-3", "gpd5-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + + spi2_bus: spi2-bus { + samsung,pins = "gpd5-0", "gpd5-2", "gpd5-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi2_cs: spi2-cs { + samsung,pins = "gpd5-1"; + samsung,pin-function = <1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi1_bus: spi1-bus { + samsung,pins = "gpd6-2", "gpd6-4", "gpd6-5"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi1_cs: spi1-cs { + samsung,pins = "gpd6-3"; + samsung,pin-function = <1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi0_bus: spi0-bus { + samsung,pins = "gpd8-0", "gpd6-0", "gpd6-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + spi0_cs: spi0-cs { + samsung,pins = "gpd8-1"; + samsung,pin-function = <1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + disp_teson: disp_teson { + samsung,pins = "gpg0-1"; + samsung,pin-function = <2>; + }; + + disp_tesoff: disp_tesoff { + samsung,pins = "gpg0-1"; + samsung,pin-function = <0>; + }; + + hs_i2c4_bus: hs-i2c4-bus { + samsung,pins = "gpg3-1", "gpg3-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + hs_i2c5_bus: hs-i2c5-bus { + samsung,pins = "gpg3-3", "gpg3-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + fimc_is_uart: fimc-is-uart { + samsung,pins = "gpc1-1", "gpc0-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch0_i2c: fimc-is-ch0_i2c { + samsung,pins = "gpc2-1", "gpc2-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch0_mclk: fimc-is-ch0_mclk { + samsung,pins = "gpd7-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch1_i2c: fimc-is-ch1-i2c { + samsung,pins = "gpc2-3", "gpc2-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch1_mclk: fimc-is-ch1-mclk { + samsung,pins = "gpd7-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch2_i2c: fimc-is-ch2-i2c { + samsung,pins = "gpc2-5", "gpc2-4"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_ch2_mclk: fimc-is-ch2-mclk { + samsung,pins = "gpd7-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + fimc_is_flash: fimc-is-flash { + samsung,pins = "gpc0-3", "gpc0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + i2s1_bus: i2s1-bus { + samsung,pins = "gpd4-0", "gpd4-1", "gpd4-2", + "gpd4-3", "gpd4-4"; + samsung,pin-function = <2>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + pcm1_bus: pcm1-bus { + samsung,pins = "gpd4-0", "gpd4-1", "gpd4-2", + "gpd4-3", "gpd4-4"; + samsung,pin-function = <3>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + + spdif_bus: spdif-bus { + samsung,pins = "gpd4-3", "gpd4-4"; + samsung,pin-function = <4>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@14870000 { + etc1: etc1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf0: gpf0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf1: gpf1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf2: gpf2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf3: gpf3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf4: gpf4 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpf5: gpf5 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpg1: gpg1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpg2: gpg2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gph1: gph1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpv6: gpv6 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + }; + + pinctrl@14CD0000 { + gpj0: gpj0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + hs_i2c6_bus: hs-i2c6-bus { + samsung,pins = "gpj0-1", "gpj0-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@14CE0000 { + gpj1: gpj1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + hs_i2c7_bus: hs-i2c7-bus { + samsung,pins = "gpj1-1", "gpj1-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@14C90000 { + gpg4: gpg4 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + spi3_bus: spi3-bus { + samsung,pins = "gpg4-3", "gpg4-2", "gpg4-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + + }; + + spi3_cs: spi3-cs { + samsung,pins = "gpg4-1"; + samsung,pin-function = <1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + + }; + }; + + pinctrl@14CA0000 { + gpv7: gpv7 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + spi4_bus: spi4-bus { + samsung,pins = "gpv7-3", "gpv7-2", "gpv7-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + + }; + + spi4_cs: spi4-cs { + samsung,pins = "gpv7-1"; + samsung,pin-function = <1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + + }; + }; + + pinctrl@10E60000 { + gpr4: gpr4 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + sd2_clk: sd2-clk { + samsung,pins = "gpr4-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd2_cmd: sd2-cmd { + samsung,pins = "gpr4-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd2_cd: sd2-cd { + samsung,pins = "gpr4-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd2_bus1: sd2-bus-width1 { + samsung,pins = "gpr4-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd2_bus4: sd2-bus-width4 { + samsung,pins = "gpr4-4", "gpr4-5", "gpr4-6"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + }; + + pinctrl@15690000 { + gpr0: gpr0 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpr1: gpr1 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpr2: gpr2 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + gpr3: gpr3 { + gpio-controller; + #gpio-cells = <2>; + + interrupt-controller; + #interrupt-cells = <2>; + }; + + sd0_clk: sd0-clk { + samsung,pins = "gpr0-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd0_cmd: sd0-cmd { + samsung,pins = "gpr0-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd0_rdqs: sd0-rdqs { + samsung,pins = "gpr0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <1>; + samsung,pin-drv = <4>; + }; + + sd0_qrdy: sd0-qrdy { + samsung,pins = "gpr0-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <1>; + samsung,pin-drv = <4>; + }; + + sd0_bus1: sd0-bus-width1 { + samsung,pins = "gpr1-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd0_bus4: sd0-bus-width4 { + samsung,pins = "gpr1-1", "gpr1-2", "gpr1-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd0_bus8: sd0-bus-width8 { + samsung,pins = "gpr1-4", "gpr1-5", "gpr1-6", "gpr1-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd1_clk: sd1-clk { + samsung,pins = "gpr2-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <4>; + }; + + sd1_cmd: sd1-cmd { + samsung,pins = "gpr2-1"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd1_bus1: sd1-bus-width1 { + samsung,pins = "gpr3-0"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd1_bus4: sd1-bus-width4 { + samsung,pins = "gpr3-1", "gpr3-2", "gpr3-3"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + sd1_bus8: sd1-bus-width8 { + samsung,pins = "gpr3-4", "gpr3-5", "gpr3-6", "gpr3-7"; + samsung,pin-function = <2>; + samsung,pin-pud = <3>; + samsung,pin-drv = <4>; + }; + + }; + +}; diff --git a/arch/arm64/boot/dts/exynos7420-universal7420-ufs_rev00.dts b/arch/arm64/boot/dts/exynos7420-universal7420-ufs_rev00.dts new file mode 100644 index 000000000..82acbe83c --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-universal7420-ufs_rev00.dts @@ -0,0 +1,1644 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420.dtsi" +#include "exynos7420-universal7420_rev00_battery.dtsi" + +/ { + model = "Samsung UNIVERSAL7420 board based on EXYNOS7420"; + compatible = "samsung,exynos7420", "samsung,UNIVERSAL7420"; + + memory@40000000 { + device_type = "memory"; + reg = <0x40000000 0xC0000000>; + }; + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + common { + compatible = "exynos5433-ion,common"; + size = <0x600000>; + alignment = <0x1000>; + id = <0>; + }; + + video { + compatible = "exynos5433-ion,video"; + secure; + reg = <0xE2A00000 0xE400000>; + id = <11>; + compat-id = <4 5 6 7>; + }; + + video_ext { + compatible = "exynos5433-ion,video_ext"; + secure; + reg = <0xF0E00000 0x600000>; + id = <1>; + }; + + mfc_fw { + compatible = "exynos5433-ion,mfc_fw"; + secure; + reg = <0xE2800000 0x200000>; + id = <8>; + }; + + mfc_nfw { + compatible = "exynos5433-ion,mfc_nfw"; + reg = <0xE2600000 0x110000>; + id = <12>; + }; + + secdma { + compatible = "exynos5433-ion,secdma"; + size = <0x40000>; + alignment = <0x40000>; + id = <13>; + }; + + mipi_lli_reserved: mipi_lli { + compatible = "mipi-lli-shmem"; + #memory-region-cells = <0>; + size = <0x400000>; + alignment = <0x400000>; + }; + + iram_vector { + compatible = "mali,iram-vector"; + reg = <0xF2A00000 0x200000>; + }; + + sss_debug { + compatible = "secure,sss-debug"; + reg = <0xF2C00000 0x100000>; + }; + }; + + aliases { + spi0 = &spi_0; + spi1 = &spi_1; + spi2 = &spi_2; + spi3 = &spi_3; + spi4 = &spi_4; + spi5 = &spi_5; + spi6 = &spi_6; + spi7 = &spi_7; + }; + + chosen { + bootargs = "console=ttySAC1,115200n8 ess_setup=0x46000000"; + linux,initrd-start = <0x42000000>; + linux,initrd-end = <0x420FFFFF>; + }; + + fixed-rate-clocks { + oscclk { + compatible = "samsung,exynos7420-oscclk"; + clock-frequency = <24000000>; + }; + }; + + ion { + compatible = "samsung,exynos5430-ion"; + }; + + serial_1: uart@14C20000 { + /* Enable UART channel for debug port */ + status = "okay"; + }; + + memory_controller: mc@10800000 { + compatible = "samsung,exynos7420-mc"; + reg = <0x10800000 0x400000>; + #address-cells = <1>; + #size-cells = <1>; + }; + + dramtest { + compatible = "samsung,dramtest"; + }; + + dwmmc0@15740000 { + status = "okay"; + num-slots = <1>; + broken-cd; + use-smu; + fixed_volt; + biu-clock-gate; + clock-gate; + enable-cclk-on-suspend; + only_once_tune; + use-fine-tuning; + bypass-for-allpass; + supports-highspeed; + supports-hs200-mode; + supports-ddr200-mode; + enable-cache-control; + use-enable-shift; + qos_int_level = <468000>; + desc-size = <3>; + fifo-depth = <0x40>; + card-detect-delay = <200>; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <3 0 2 0>; + samsung,dw-mshc-ddr-timing = <3 0 3 2>; + samsung,dw-mshc-hs200-timing = <3 0 3 1>; + samsung,dw-mshc-ddr200-timing = <1 0 2 2>; + samsung,dw-mshc-ddr200-delay-line = <118>; + clk_pin = "gpr0-0"; + clk_addr = "15690000.pinctrl"; + clk_val = <0x4>; + clk_str_num = <6>; + num-ref-clks = <8>; + ciu_clkin = <25 50 50 100 200 100 200 400>; + pinctrl-names = "default"; + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>; + gpios = <&gph1 4 0>; + slot@0 { + reg = <0>; + bus-width = <8>; + }; + }; + + dwmmc2@15560000 { + status = "okay"; + num-slots = <1>; + supports-highspeed; + enable-cclk-on-suspend; + cd-type = <0>; + bypass-smu; + biu-clock-gate; + clock-gate; + use-fine-tuning; + desc-size = <3>; + fifo-depth = <0x40>; + card-detect-delay = <200>; + qos_int_level = <468000>; + bypass-for-allpass; + fix-fmp-size-mismatch; + not-allow-single-dma; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <3 0 3 2>; + samsung,dw-mshc-ddr-timing = <3 0 2 1>; + clk_pin = "gpr4-0"; + clk_addr = "10E60000.pinctrl"; + clk_val = <0x2>; + clk_str_num = <6>; + num-ref-clks = <8>; + ciu_clkin = <25 50 50 100 200 100 200 400>; + pinctrl-names = "default"; + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4 &dwmmc2_cd_ext_irq>; + gpio-controller; + #gpio-cells = <2>; + cd-gpio = <&gpa2 4 0xf>; + + slot@0 { + reg = <0>; + bus-width = <4>; + disable-wp; + }; + }; + + pinctrl@10580000 { + dwmmc2_cd_ext_irq: dwmmc2_cd_ext_irq { + samsung,pins = "gpa2-4"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + + pmic_irq: pmic-irq { + samsung,pins = "gpa3-7"; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + chg_irq: chg-irq { + samsung,pins = "gpa1-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + }; + + cp_status: cp_status { + samsung,pins = "gpa1-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@14870000 { + g3d_dvs: g3d-dvs { + samsung,pins = "gpg1-1"; + samsung,pin-function = <0x2>; + }; + + /* Warm reset information from AP */ + pm_wrsti: pm-wrsti { + samsung,pins = "gpf3-0"; + samsung,pin-con-pdn = <3>; + }; + + /* smpl_warn */ + smpl_warn: smpl-warn { + samsung,pins = "gpg1-0"; + samsung,pin-function = <0xf>; + }; + + cp_on: cp_on { + samsung,pins = "gpf5-0"; + samsung,pin-function = <0x1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + samsung,pin-val = <0>; + }; + + cp_reset: cp_reset { + samsung,pins = "gpf1-1"; + samsung,pin-function = <0x1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + samsung,pin-val = <0>; + }; + + cfg_wlanen: cfg-wlanen { + samsung,pins = "gpf4-6"; + samsung,pin-function = <1>; + samsung,pin-drv = <3>; + samsung,pin-con-pdn = <3>; + }; + }; + + pinctrl@10E60000 { + cp_off: cp_off { + samsung,pins = "gpr3-6"; + samsung,pin-function = <0x1>; + samsung,pin-pud = <3>; + samsung,pin-drv = <3>; + samsung,pin-val = <0>; + }; + + }; + hsi2c@13650000{ + max77843@66 { + status = "disabled"; + }; + + max77833@66 { + compatible = "maxim,max77833"; + reg = <0x66>; + pinctrl-names = "default"; + pinctrl-0 = <&chg_irq>; + max77833,irq-gpio = <&gpa1 4 1>; + max77833,wakeup; + + regulators { + safeout1: ESAFEOUT1 { + regulator-compatible = "safeout1"; + regulator-name = "safeout1_range"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <4900000>; + regulator-boot-on; + }; + + safeout2: ESAFEOUT2 { + regulator-compatible = "safeout2"; + regulator-name = "safeout2_range"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <4900000>; + }; + }; + }; + }; + + hsi2c@13650000{ + status = "okay"; + + max77833@66 { + status = "okay"; + }; + }; + + usb_notifier { + compatible = "samsung,usb-notifier"; + }; + + muic { + status = "disabled"; + muic,support-list = "Jig USB On","Jig USB On + VB","Jig UART Off", + "Jig UART Off + VB","Jig UART On", + "TA","USB"; + muic,afcmode-tx = /bits/ 8 <0x46>; + muic,qc-hv = /bits/ 8 <0x9>; + }; + + + hsi2c@13660000 { + status = "okay"; + samsung,hs-mode; + clock-frequency = <2500000>; + samsung,use-apm; + + s2mps15_pmic@66 { + compatible = "samsung,s2mps15-pmic"; + reg = <0x66>; + interrupts = <7 0 0>; + interrupt-parent = <&gpa3>; + pinctrl-names = "default"; + pinctrl-0 = <&pmic_irq &pm_wrsti &g3d_dvs>; + gpios = <&gpg1 0 0>, <&gpb0 4 0x2>, <&gpg1 1 0x1>; + smpl_warn_en = <1>; /* 1 : enable , 0 : disable*/ + /* range of smpl_warn_vth */ + /* PMIC1 */ + /* 2100 : 2.3V, 2300 : 2.3V, 2500 : 2.5V, 2700 : 2.7V 2900 : 2.9V */ + /* 3100 : 3.0V, 3300 : 3.0V, 3500 : 3.0V */ + /* PMIC2 */ + /* 2100 : 2.1V, 2300 : 2.3V, 2500 : 2.5V, 2700 : 2.7V 2900 : 2.9V */ + /* 3100 : 3.1V, 3300 : 3.3V, 3500 : 3.5V */ + smpl_warn_vth = <2900>; + smpl_warn_hys = <0x00>; /* LOwBat_Hys[4:3] 00(100mV)~11(400mV) */ + adc-on; + buck_dvs_on; + g3d_en = <1>; /* 1 : enable , 0 : disable */ + dvs_en = <1>; /* 1 : enable , 0 : disable */ + buck6en_pin = "gpb0-4"; + buck6en_addr = "13470000.pinctrl"; + /* RTC: wtsr/smpl */ + wtsr_en = <1>; /* enable */ + smpl_en = <1>; /* enable */ + wtsr_timer_val = <3>; /* 1000ms */ + smpl_timer_val = <4>; /* 500ms */ + check_jigon = <0>; /* do not check jigon */ + /* RTC: If it's first boot, reset rtc to 1/1/2014 12:00:00(Wed) */ + init_time,sec = <0>; + init_time,min = <0>; + init_time,hour = <12>; + init_time,mday = <1>; + init_time,mon = <0>; + init_time,year = <114>; + init_time,wday = <3>; + + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck10_reg: BUCK10 { + regulator-name = "vdd_lldo2"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <3000000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + ldo1_reg: LDO1 { + regulator-name = "vdd_ldo1"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <900000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + regulator-always-on; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + ldo3_reg: LDO3 { + regulator-name = "vdd_ldo3"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1980000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + regulator-always-on; + }; + + ldo4_reg: LDO4 { + regulator-name = "vdd_ldo4"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1110000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-always-on; + }; + + ldo5_reg: LDO5 { + regulator-name = "vdd_ldo5"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <1980000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo6_reg: LDO6 { + regulator-name = "vdd_ldo6"; + regulator-min-microvolt = <2250000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo7_reg: LDO7 { + regulator-name = "vdd_ldo7"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1150000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo9_reg: LDO9 { + regulator-name = "vdd_ldo9"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo10_reg: LDO10 { + regulator-name = "vdd_ldo10"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo11_reg: LDO11 { + regulator-name = "vdd_ldo11"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo12_reg: LDO12 { + regulator-name = "vdd_ldo12"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo13_reg: LDO13 { + regulator-name = "vdd_ldo13"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo14_reg: LDO14 { + regulator-name = "vdd_ldo14"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "vdd_ldo15"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <3>; + }; + + ldo16_reg: LDO16 { + regulator-name = "vdd_ldo16"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <3>; + }; + + ldo17_reg: LDO17 { + regulator-name = "vdd_ldo17"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo18_reg: LDO18 { + regulator-name = "vdd_ldo18"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo19_reg: LDO19 { + regulator-name = "vdd_ldo19"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo20_reg: LDO20 { + regulator-name = "vdd_ldo20"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-always-on; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo21_reg: LDO21 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo22_reg: LDO22 { + regulator-name = "CAM_SEN_CORE_1.2V_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo23_reg: LDO23 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo24_reg: LDO24 { + regulator-name = "vdd_ldo24"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo25_reg: LDO25 { + regulator-name = "vmmc"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3375000>; + regulator-boot-on; + regulator-initial-mode = <1>; + }; + + ldo26_reg: LDO26 { + regulator-name = "vdd_ldo26"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1470000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo27_reg: LDO27 { + regulator-name = "vdd_ldo27"; + regulator-min-microvolt = <1500000>; + regulator-max-microvolt = <2275000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <1>; + }; + }; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + + s2mpb01_pmic@59 { + compatible = "s2mpb01,s2mpb01-regulator"; + reg = <0x59>; + + regulators { + _buck1_reg: BUCK1 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <850000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: LDO1 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo2_reg: LDO2 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo3_reg: LDO3 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo4_reg: LDO4 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo5_reg: LDO5 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo6_reg: LDO6 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: LDO7 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: LDO8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: LDO9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: LDO10 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo11_reg: LDO11 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo12_reg: LDO12 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo13_reg: LDO13 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo14_reg: LDO14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: LDO15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + }; + }; + }; + + pinctrl@10580000 { + gpa2_pull_up: gpa2_pull_up { + samsung,pins = "gpa2-2"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + samsung,pin-drv = <0>; + }; + attn_irq: attn-irq { + samsung,pins = "gpa1-6"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + attn_input: attn-input { + samsung,pins = "gpa1-6"; + samsung,pin-function = <0>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&gpa2_pull_up>; + button@1 { + label = "gpio-keys: KEY_POWER"; + interrupts = <2 0 0>; + interrupt-parent = <&gpa2>; + linux,code = <116>; + gpios = <&gpa2 2 0xf>; + gpio-key,wakeup = <1>; + }; + button@2 { + label = "gpio-keys: KEY_VOLUMEDOWN"; + interrupts = <3 0 0>; + interrupt-parent = <&gpa0>; + linux,code = <114>; + gpios = <&gpa0 3 0xf>; + }; + button@3 { + label = "gpio-keys: KEY_VOLUMEUP"; + interrupts = <2 0 0>; + interrupt-parent = <&gpa0>; + linux,code = <115>; + gpios = <&gpa0 2 0xf>; + }; + }; + + pinctrl@14CE0000 { + i2c_pdn_off: i2c-pdn_off { + samsung,pins = "gpj1-1", "gpj1-0"; + samsung,pin-con-pdn = <2>; + samsung,pin-pud-pdn = <1>; + }; + }; + + hsi2c@14E10000 { + status = "okay"; + touchscreen@20 { + compatible = "stm,fts_touch"; + reg = <0x49>; + pinctrl-names = "on_state", "off_state"; + pinctrl-0 = <&attn_irq>; + pinctrl-1 = <&attn_input &i2c_pdn_off>; + stm,irq_gpio = <&gpa1 6 0>; + stm,irq_type = <8200>; + stm,max_coords = <1599 2559>; /* x y */ + stm,regulator_dvdd = "tsp_io"; + stm,regulator_avdd = "tsp_avdd"; + stm,firmware_name = "tsp_stm/stm_tb_integ.fw"; + }; + }; + + + usb@15400000 { + status = "okay"; + + dwc3 { + maximum-speed = "super-speed"; + dr_mode = "otg"; + }; + }; + + ipa_pdata { + compatible = "samsung,exynos-ipa"; + + control_temp = <90>; + temp_threshold = <30>; + enabled = <1>; + tdp = <3500>; + boost = <1>; + ros_power = <500>; + little_weight = <1024>; + big_weight = <256>; + gpu_weight = <256>; + little_max_power = <1000>; + big_max_power = <6552>; + gpu_max_power = <3110>; + hotplug_out_threshold = <10>; + hotplug_in_threshold = <0>; + enable_ctlr = <1>; + ctlr.mult = <2>; + ctlr.k_i = <1>; + ctlr.k_d = <0>; + ctlr.feed_forward = <1>; + ctlr.integral_reset_value = <0>; + ctlr.integral_cutoff = <0>; + ctlr.integral_reset_threshold = <10>; + }; + + decon_0: decon_fb { + /* EINT for TE */ + gpios = <&gpg0 0 0xf>; + te_eint { + reg = <0x13470A34 0x4>, <0x13470934 0x4>; + }; + }; + + dsim_0: dsim@0x13900000 { + lcd_info = <&s6e3hf2_wqxga>; + /* lcd reset, power */ + gpios = <&gpr3 0 0x1>, <&gpf3 2 0x1>, <&gpf4 3 0x1>; + }; + + s6e3hf2_wqxga: s6e3hf2_wqxga_panel { + mode = <2>; /* 0: video mode, 1: DP command mode, 2: MIPI command mode */ + resolution = <1600 2560>; + size = <70 121>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1100>; + timing,dsi-escape-clk = <20>; + mic = <1>; /* 0: mic disable, 1: mic enable */ + mic_ver = <2>; /* 0: mic v1.1, 1: v1.2, 2: v2.0 */ + type_of_ddi = <0>; /* 0: Samsung Mobile, 1: MAGNA, 2: Normal(Etc) */ + }; + + s6e3hf2_wqhd: s6e3hf2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <70 121>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1100>; + timing,dsi-escape-clk = <20>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + hdmi@13970000 { + /* all bit clock supports: 1, not support: 0 */ + audio_master_clk = <1>; + gpios = <&gpa3 0 0xf>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <3>; + }; + codec_irq_idle: codec-irq-idle { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0x0>; + samsung,pin-pud = <3>; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + codec_ldoena: codec-ldoena { + samsung,pins ="gpf5-7"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <1>; + }; + }; + + i2s0: i2s@11440000 { + /*samsung,supports-esa-dma;*/ + /*samsung,supports-sec-compr;*/ + status = "okay"; + }; + + i2s1: i2s@14D60000 { + status = "okay"; + }; + + audio_codec_dummy: dummy-codec { + compatible = "samsung,dummy-codec"; + status = "okay"; + }; + + i2s_dummy: dummy-i2s { + compatible = "samsung,dummy-i2s"; + status = "okay"; + }; + + sound { + compatible = "samsung,universal-dummy"; + pinctrl-names = "default", "idle"; + pinctrl-0 = <&codec_irq>; + pinctrl-1 = <&codec_irq_idle>; + samsung,audio-cpu = <&i2s0 /* primary */ + &i2s0>; /* secondary */ + samsung,audio-cpu-hdmi = <&i2s1>; /* hdmi */ + samsung,audio-codec = <&audio_codec_dummy + &audio_codec_dummy + &audio_codec_dummy>; + status = "okay"; + }; + + amba { + adma: adma@11420000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x11420000 0x1000>; + interrupts = <0 97 0>; + clocks = <&clock 400>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <16>; + #dma-mcode-addr = <0x03047000>; + samsung,lpass-subip; + status = "ok"; + }; + }; + + spi_6: spi@14390000 { + /*clocks = <&clock 2626>, <&clock 4083>;*/ /* Workaround for SPI read in A5 */ + /* clock-names = "spi", "spi_busclk0";*/ /* Must be removed later */ + #address-cells = <1>; + #size-cells = <0>; + + num-cs = <1>; + + fimc_is_spi_0@0 { + compatible = "samsung,fimc_is_spi0"; + spi-max-frequency = <50000000>; + reg = <0x0>; + fimc_is_spi_pinname = "13470000.pinctrl"; + fimc_is_spi_clk = "gpc3-0"; + fimc_is_spi_ssn = "gpc3-1"; + fimc_is_spi_miso = "gpc3-2"; + fimc_is_spi_mosi = "gpc3-3"; + + controller-data { + cs-gpio = <&gpc3 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_7: spi@143A0000 { + /*clocks = <&clock 2626>, <&clock 4083>;*/ /* Workaround for SPI read in A5 */ + /* clock-names = "spi", "spi_busclk0";*/ /* Must be removed later */ + #address-cells = <1>; + #size-cells = <0>; + + num-cs = <1>; + + fimc_is_spi_0@0 { + compatible = "samsung,fimc_is_spi1"; + spi-max-frequency = <50000000>; + reg = <0x0>; + fimc_is_spi_pinname = "13470000.pinctrl"; + fimc_is_spi_clk = "gpc3-4"; + fimc_is_spi_ssn = "gpc3-5"; + fimc_is_spi_miso = "gpc3-6"; + fimc_is_spi_mosi = "gpc3-7"; + /*pinctrl-names = "default"; + pinctrl-0 = <&fimc_is_comp_int>;*/ + + controller-data { + cs-gpio = <&gpc3 5 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + i2c@1c { + compatible = "i2c-gpio"; + gpios = <&gpf5 3 0 &gpf5 2 0>; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&fimc_is_vision>; + status = "disabled"; + fimc-is-vision@20 { + compatible = "samsung,exynos5-fimc-is-sensor-6d1"; + reg = <0x35>; + }; + }; + + /* Companion driver */ + fimc_is_companion: fimc_is_companion@14020000 { + compatible = "samsung,exynos5-fimc-is-companion"; + samsung,power-domain = <&pd_cam1>; + clock-names = + /* SENSOR1 MCLK */ + "sclk_isp_sensor1", /* 17 */ + "dout_sclk_isp_sensor1", /* 21 */ + "mout_sclk_isp_sensor1", /* 24 */ + + /* SPI-ISP */ + "gate_isp_spi1", /* 2625 */ + "gate_isp_spi0", /* 2626 */ + "dout_sclk_isp_spi0", /* 2030 */ + "dout_sclk_isp_spi1", /* 2031 */ + "mout_user_mux_sclk_isp_spi0", /* 3296 */ + "mout_user_mux_sclk_isp_spi1", /* 3297 */ + + "dout_clkdiv_pclk_cam1_busperi_167", /* 3317 */ + "dout_clkdiv_pclk_cam1_busperi_84", /* 3318 */ + "mout_user_mux_aclk_cam1_busperi_334", /* 3292 */ + "mout_user_mux_aclk_cam1_bnscsis_133", /* 3293 */ + + /* CMU TOP */ + "dout_aclk_cam1_333", /* 4047 */ + + /* USER_MUX_SEL */ + "aclk_cam1_333", /* 342 */ + "mout_aclk_cam1_333_user"; /* 3225 */ + clocks = + /* SENSOR1 MCLK */ + <&clock 17>, + <&clock 21>, + <&clock 24>, + + /* SPI-ISP */ + <&clock 2625>, + <&clock 2626>, + <&clock 2030>, + <&clock 2031>, + <&clock 3296>, + <&clock 3297>, + + <&clock 3317>, + <&clock 3318>, + <&clock 3292>, + <&clock 3293>, + + /* CMU TOP */ + <&clock 4047>, + + /* USER_MUX_SEL */ + <&clock 342>, + <&clock 3225>; + scenario = <0>; /* Normal, Vision, OIS etc */ + id = <0>; /* bns_id */ + mclk_ch = <1>; + status = "okay"; + }; + + fimc_is_sensor_2t2: fimc-is_sensor_2t2@5A { + compatible = "samsung,exynos5-fimc-is-sensor-2t2"; + + position = <0>; /* Rear:0. Front:1 */ + id = <0>; /* bns_id */ + mclk_ch = <0>; + sensor_i2c_ch = <0>; /* I2C 0 */ + sensor_i2c_addr = <0x5A>; + + gpio_reset = <&gpc0 5 0x1>; /* sensor reset */ + gpio_comp_reset = <&gpc0 7 0x1>; /* companion reset */ + status = "okay"; + + af { + product_name = <7>; /* AK7345 */ + i2c_addr = <0x5A>; + i2c_ch = <2>; /* I2C 2 */ + }; + + flash { + product_name = <5>; /* KTD2692 */ + flash_first_gpio = <2>; + flash_second_gpio = <3>; + }; + + companion { + product_name = <2>; /* 73C2 */ + spi_channel = <1>; + i2c_addr = <0x7A>; + i2c_ch = <0>; /* I2C 0*/ + }; + + ois { + product_name = <1>; /* IDG2030 */ + i2c_addr = <0x48>; + i2c_ch = <2>; /* I2C 2 */ + }; + }; + + hsi2c@136A0000 { + status = "okay"; + clock-frequency = <400000>; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&fimc_is_hsi2c_off>; + pinctrl-1 = <&fimc_is_ois_hsi2c_on>; + pinctrl-2 = <&fimc_is_hsi2c_off>; + ois@24{ + compatible = "rumba,ois"; + reg = <0x24>; + fimc_is_ois_pinname = "13470000.pinctrl"; + fimc_is_ois_sda = "gpc2-4"; + fimc_is_ois_scl = "gpc2-5"; + }; + + af@0c{ + compatible = "samsung,af"; + reg = <0x0c>; + fimc_is_af_pinname = "13470000.pinctrl"; + fimc_is_af_sda = "gpc2-4"; + fimc_is_af_scl = "gpc2-5"; + }; + }; + + fimc_is_sensor_4e6_c2: fimc-is_sensor_4e6_c2@6A { + compatible = "samsung,exynos5-fimc-is-sensor-4e6-c2"; + + position = <1>; /* Rear:0. Front:1 */ + id = <0>; /* bns_id */ + mclk_ch = <2>; + sensor_i2c_ch = <1>; + sensor_i2c_addr = <0x6A>; + + gpio_reset = <&gpc0 4 0x1>; + gpio_standby = <&gpc0 6 0x1>; + gpio_comp_reset = <&gpc0 7 0x1>; /* companion reset */ + status = "okay"; + + companion { + product_name = <2>; /* 73C2 */ + spi_channel = <1>; + i2c_addr = <0x7A>; + i2c_ch = <0>; /* I2C 0*/ + }; + }; + + fimc_is_sensor_4e6: fimc-is_sensor_4e6@6A { + compatible = "samsung,exynos5-fimc-is-sensor-4e6"; + + position = <1>; /* Rear:0. Front:1 */ + id = <1>; /* bns_id */ + mclk_ch = <2>; + sensor_i2c_ch = <1>; + sensor_i2c_addr = <0x6A>; + + gpio_reset = <&gpc0 4 0x1>; + gpio_standby = <&gpc0 6 0x1>; + status = "okay"; + }; + + fimc_is_sensor0: fimc_is_sensor@14020000 { + scenario = <0>; /* Normal, Vision, OIS etc */ + id = <0>; /* bns_id */ + csi_ch = <0>; + flite_ch = <0>; + is_bns = <1>; + status = "okay"; + }; + + fimc_is_sensor1: fimc_is_sensor@14030000 { + scenario = <0>; /* Normal, Vision, OIS etc */ + id = <1>; /* bns_id */ + csi_ch = <1>; + flite_ch = <1>; + is_bns = <0>; + status = "okay"; + }; + + fimc_is_sensor2: fimc_is_sensor@14110000 { + scenario = <0>; /* Normal, Vision, OIS etc */ + id = <2>; /* bns_id */ + csi_ch = <2>; + flite_ch = <2>; + is_bns = <1>; + status = "okay"; + }; + + fimc_is_sensor3: fimc_is_sensor@14040000 { + scenario = <0>; /* Normal, Vision, OIS etc */ + id = <3>; /* bns_id */ + csi_ch = <3>; + flite_ch = <3>; + is_bns = <0>; + status = "okay"; + }; + + fimc_is@14200000 { + rear_sensor_id = <18>; + front_sensor_id = <21>; + use_module_check; + skip_cal_loading; + use_ois_hsi2c; + + pinctrl-names = "default", "pin0", "pin1", "pin2", "pin3", "pin4", "pin5", "pin6"; + pinctrl-0 = <&fimc_is_mclk0_in &fimc_is_mclk1_in &fimc_is_mclk2_in>; + pinctrl-1 = <&fimc_is_mclk1_fn>; /* companion */ + pinctrl-2 = <&fimc_is_i2c0 &fimc_is_i2c2 &fimc_is_mclk0_fn &fimc_is_mclk1_fn>; /* rear on */ + pinctrl-3 = <&fimc_is_i2c1 &fimc_is_mclk2_fn>; /* front on */ + pinctrl-4 = <&fimc_is_mclk0_in &fimc_is_mclk1_in &fimc_is_mclk2_in>; /* rear off */ + pinctrl-5 = <&fimc_is_i2c0 &fimc_is_mclk1_fn &fimc_is_i2c1 &fimc_is_mclk2_fn>; /* front c2 on */ + pinctrl-6 = <&fimc_is_mclk1_in &fimc_is_mclk2_in>; /* front c2 off */ + pinctrl-7 = <&fimc_is_mclk2_in>; /* front off */ + + #define DVFS_INT_L0 560000 + #define DVFS_INT_L1 550000 + #define DVFS_INT_L2 540000 + #define DVFS_INT_L3 530000 + #define DVFS_INT_L4 520000 + #define DVFS_INT_L5 510000 + + #define DVFS_CAM_L0 550000 + #define DVFS_CAM_L1 540000 + #define DVFS_CAM_L2 530000 + #define DVFS_CAM_L3 520000 + #define DVFS_CAM_L4 510000 + #define DVFS_CAM_L5 500000 + + #define DVFS_MIF_L0 1552000 + #define DVFS_MIF_L1 1456000 + #define DVFS_MIF_L2 1264000 + #define DVFS_MIF_L3 1068000 + #define DVFS_MIF_L4 828000 + #define DVFS_MIF_L5 632000 + + fimc_is_dvfs { + default_int = ; + default_cam = ; + default_mif = ; + default_i2c = <0>; + + front_preview_int = ; + front_preview_cam = ; + front_preview_mif = ; + front_preview_i2c = <0>; + + front_capture_int = ; + front_capture_cam = ; + front_capture_mif = ; + front_capture_i2c = <0>; + + front_video_int = ; + front_video_cam = ; + front_video_mif = ; + front_video_i2c = <0>; + + front_video_whd_int = ; + front_video_whd_cam = ; + front_video_whd_mif = ; + front_video_whd_i2c = <0>; + + front_video_capture_int = ; + front_video_capture_cam = ; + front_video_capture_mif = ; + front_video_capture_i2c = <0>; + + front_video_whd_capture_int = ; + front_video_whd_capture_cam = ; + front_video_whd_capture_mif = ; + front_video_whd_capture_i2c = <0>; + + front_vt1_int = ; + front_vt1_cam = ; + front_vt1_mif = ; + front_vt1_i2c = <0>; + + front_vt2_int = ; + front_vt2_cam = ; + front_vt2_mif = ; + front_vt2_i2c = <0>; + + front_companion_preview_int = ; + front_companion_preview_cam = ; + front_companion_preview_mif = ; + front_companion_preview_i2c = <0>; + + front_companion_capture_int = ; + front_companion_capture_cam = ; + front_companion_capture_mif = ; + front_companion_capture_i2c = <0>; + + front_companion_video_int = ; + front_companion_video_cam = ; + front_companion_video_mif = ; + front_companion_video_i2c = <0>; + + front_companion_video_whd_int = ; + front_companion_video_whd_cam = ; + front_companion_video_whd_mif = ; + front_companion_video_whd_i2c = <0>; + + front_companion_video_capture_int = ; + front_companion_video_capture_cam = ; + front_companion_video_capture_mif = ; + front_companion_video_capture_i2c = <0>; + + front_companion_video_whd_capture_int = ; + front_companion_video_whd_capture_cam = ; + front_companion_video_whd_capture_mif = ; + front_companion_video_whd_capture_i2c = <0>; + + rear_preview_fhd_int = ; + rear_preview_fhd_cam = ; + rear_preview_fhd_mif = ; + rear_preview_fhd_i2c = <0>; + + rear_preview_whd_int = ; + rear_preview_whd_cam = ; + rear_preview_whd_mif = ; + rear_preview_whd_i2c = <0>; + + rear_preview_uhd_int = ; + rear_preview_uhd_cam = ; + rear_preview_uhd_mif = ; + rear_preview_uhd_i2c = <0>; + + rear_capture_int = ; + rear_capture_cam = ; + rear_capture_mif = ; + rear_capture_i2c = <0>; + + rear_video_fhd_int = ; + rear_video_fhd_cam = ; + rear_video_fhd_mif = ; + rear_video_fhd_i2c = <0>; + + rear_video_uhd_int = ; + rear_video_uhd_cam = ; + rear_video_uhd_mif = ; + rear_video_uhd_i2c = <0>; + + rear_video_fhd_capture_int = ; + rear_video_fhd_capture_cam = ; + rear_video_fhd_capture_mif = ; + rear_video_fhd_capture_i2c = <0>; + + rear_video_uhd_capture_int = ; + rear_video_uhd_capture_cam = ; + rear_video_uhd_capture_mif = ; + rear_video_uhd_capture_i2c = <0>; + + dual_preview_int = ; + dual_preview_cam = ; + dual_preview_mif = ; + dual_preview_i2c = <0>; + + dual_capture_int = ; + dual_capture_cam = ; + dual_capture_mif = ; + dual_capture_i2c = <0>; + + dual_video_int = ; + dual_video_cam = ; + dual_video_mif = ; + dual_video_i2c = <0>; + + dual_video_capture_int = ; + dual_video_capture_cam = ; + dual_video_capture_mif = ; + dual_video_capture_i2c = <0>; + + preview_high_speed_fps_int = ; + preview_high_speed_fps_cam = ; + preview_high_speed_fps_mif = ; + preview_high_speed_fps_i2c = <0>; + + video_high_speed_fps_int = ; + video_high_speed_fps_cam = ; + video_high_speed_fps_mif = ; + video_high_speed_fps_i2c = <0>; + + max_int = ; + max_cam = ; + max_mif = ; + max_i2c = <0>; + }; + }; + + pinctrl@13470000 { + fimc_is_ois: fimc-is-ois { + samsung,pins = "gpc2-5", "gpc2-4"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + fimc_is_ois_hsi2c_on: fimc-is-ois-hsi2c-on { + samsung,pins = "gpb0-3", "gpb0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + fimc_is_hsi2c_off: fimc-is-hsi2c-off { + samsung,pins = "gpb0-3", "gpb0-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <3>; + }; + }; + + pcie@157B0000 { + pcie,wlan-gpio = <&gpf4 6 0x1 /* WLAN_EN */ >; + pcie,bt-gpio = <&gpf4 1 0x1 /* BT_EN */ >; + status = "okay"; + }; + + spi_2: spi@14d40000 { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + spidev@0 { + #address-celss = <1>; + #size-cells = <1>; + compatible = "mipi_lli_boot_spi,second"; + reg = <0x0>; + spi-max-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&cp_status>, <&cp_on>, <&cp_off>, <&cp_reset>; + gpios = <&gpa1 0 0xf>, <&gpf5 0 0x1>, <&gpr3 6 0x0>, <&gpf1 1 0x1>; + controller-data { + samsung,spi-feedback-delay = <0>; + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + mipi-lli@10F24000 { + status = "okay"; + memory-region = <&mipi_lli_reserved>; + modem-name = "ss333"; + modems { + ss300 { + /* disable scrambler */ + scrambler = <0>; + /* do not control automode by AP */ + automode = <0>; + }; + + ss303 { + /* disable scrambler */ + scrambler = <0>; + /* do not control automode by AP */ + automode = <0>; + }; + + ss333 { + /* disable scrambler */ + scrambler = <0>; + /* do not control automode by AP */ + automode = <0>; + }; + + xmm7260 { + /* disable scrambler */ + scrambler = <0>; + /* do not control automode by AP */ + automode = <0>; + }; + }; + + mphy { + modem-name = "ss333"; + modems { + ss300 { + /* initial-gear is HS-G1 */ + init-gear = <2 1 1>; + /* use shared reference clock for MPHY */ + shd-refclk = <1>; + }; + + ss303 { + /* initial-gear is HS-G1 */ + init-gear = <2 1 1>; + /* use shared reference clock for MPHY */ + shd-refclk = <1>; + }; + + ss333 { + /* initial-gear is HS-G2 */ + init-gear = <2 2 1>; + /* use shared reference clock for MPHY */ + shd-refclk = <1>; + }; + + xmm7260 { + /* initial-gear is HS-G1 */ + init-gear = <2 1 1>; + /* use shared reference clock for MPHY */ + shd-refclk = <1>; + }; + }; + }; + }; + + ufs@0x15570000 { + status = "okay"; + ufs,pmd-attr-mode = "FAST"; + ufs,pmd-attr-lane = /bits/ 8 <2>; + ufs,pmd-attr-gear = /bits/ 8 <2>; + ufs,pmd-attr-hs-series = "HS_rate_b"; + ufs-opts-skip-connection-estab; + ufs-rx-adv-fine-gran-sup_en = <1>; + ufs-rx-adv-fine-gran-step = <3>; + ufs-rx-adv-min-activate-time-cap = <10>; + ufs-pa-granularity = <6>; + ufs-pa-tacctivate = <3>; + ufs-pa-hibern8time = <20>; + startup-delay-us = <2000>; + endup-delay-us = <2000>; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-universal7420_rev00_battery.dtsi b/arch/arm64/boot/dts/exynos7420-universal7420_rev00_battery.dtsi new file mode 100755 index 000000000..d0e403dcf --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-universal7420_rev00_battery.dtsi @@ -0,0 +1,182 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + battery { + status = "okay"; + compatible = "samsung,sec-battery"; + battery,vendor = "SDI SDI"; + battery,charger_name = "max77833-charger"; + battery,fuelgauge_name = "max77833-fuelgauge"; + battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */ + /* .temp_cohot = -1000; */ + /* .temp_cocold = -4325; */ + + battery,chip_vendor = "LSI"; + battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */ + + battery,polling_time = <10 30 30 30 3600>; + battery,chg_temp_check = <1>; + + + + battery,temp_table_adc = <294 304 314 325 335 345 357 369 382 391 + 406 420 434 449 463 477 494 511 527 544 + 561 580 599 619 638 657 679 700 722 743 + 765 791 816 842 867 893 922 951 979 1008 + 1037 1070 1103 1136 1168 1201 1236 1272 1308 1344 + 1382 1408 1452 1495 1539 1583 1628 1670 1713 1757 + 1803 1843 1885 1937 1984 2031 2080 2120 2171 2218 + 2262 2309 2352 2404 2452 2497 2542 2593 2631 2680 + 2717 2765 2810 2856 2902 2948 2990 3031 3073 3114 + 3132 3156 3188 3219 3251 3282 3314 3343 3373 3402 + 3461 3485 3509 3534 3558 3582 3602 3622 3642 3662 3682>; + battery,temp_table_data = <900 890 880 870 860 850 840 830 820 810 + 800 790 780 770 760 750 740 730 720 710 + 700 690 680 670 660 650 640 630 620 610 + 600 590 580 570 560 550 540 530 520 510 + 500 490 480 470 460 450 440 430 420 410 + 400 390 380 370 360 350 340 330 320 310 + 300 290 280 270 260 250 240 230 220 210 + 200 190 180 170 160 150 140 130 120 110 + 100 90 80 70 60 50 40 30 20 10 + 0 (-10) (-20) (-30) (-40) (-50) (-60) (-70) (-80) (-90) + (-100) (-110) (-120) (-130) (-140) (-150) (-160) (-170) (-180) (-190) (-200)>; + + battery,chg_temp_table_adc = <215 224 234 243 253 262 271 281 290 300 + 309 322 335 348 361 374 389 404 418 433 + 448 465 482 499 516 533 553 573 594 614 + 634 658 682 705 729 753 780 807 833 860 + 887 918 948 979 1009 1040 1076 1112 1147 1183 + 1219 1257 1295 1332 1370 1408 1448 1489 1529 1570 + 1610 1653 1696 1739 1782 1825 1869 1913 1957 2001 + 2045 2090 2134 2179 2223 2268 2310 2352 2395 2437 + 2479 2520 2561 2601 2642 2683 2720 2757 2793 2830 + 2867 2903 2939 2975 3011 3047 3077 3106 3136 3165 + 3195 3221 3247 3274 3300 3326 3348 3370 3392 3414 3436>; + battery,chg_temp_table_data = <900 890 880 870 860 850 840 830 820 810 + 800 790 780 770 760 750 740 730 720 710 + 700 690 680 670 660 650 640 630 620 610 + 600 590 580 570 560 550 540 530 520 510 + 500 490 480 470 460 450 440 430 420 410 + 400 390 380 370 360 350 340 330 320 310 + 300 290 280 270 260 250 240 230 220 210 + 200 190 180 170 160 150 140 130 120 110 + 100 90 80 70 60 50 40 30 20 10 + 0 (-10) (-20) (-30) (-40) (-50) (-60) (-70) (-80) (-90) + (-100) (-110) (-120) (-130) (-140) (-150) (-160) (-170) (-180) (-190) (-200)>; + + battery,input_current_limit = <1100 0 0 1100 460 900 1000 460 1000 0 820 1900 1800 0 0 400 700 1300 300 1000 1500 0 1667 1000 1667 80 1800 1667 1400>; + battery,fast_charging_current = <2100 0 0 2100 460 1200 1000 460 1200 0 1000 1600 2100 0 0 400 700 1300 300 1000 1500 0 3150 1000 3150 80 1800 1000 1400>; + battery,full_check_current_1st = <200 0 0 200 200 200 200 200 200 0 200 200 200 0 0 200 200 200 200 200 200 0 200 200 200 0 200 200 200>; + battery,full_check_current_2nd = <2400 0 2400 2400 2400 2400 2400 2400 0 2400 2400 2400 0 0 2400 2400 2400 2400 2400 2400 0 2400 2400 2400 2400 2400 2400 2400>; + + battery,adc_check_count = <5>; + + battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */ + battery,cable_source_type = <1>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */ + battery,event_waiting_time = <600>; + battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */ + battery,monitor_initial_count = <0>; + + battery,battery_check_type = <5>; /* SEC_BATTERY_CHECK_CHARGER */ + battery,check_count = <0>; + battery,check_adc_max = <1440>; + battery,check_adc_min = <0>; + + battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */ + + battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */ + + battery,temp_check_type = <2>; /* _BATTERY_TEMP_CHECK_TEMP */ + battery,temp_check_count = <1>; + battery,temp_highlimit_threshold_event = <800>; + battery,temp_highlimit_recovery_event = <750>; + battery,temp_high_threshold_event = <700>; + battery,temp_high_recovery_event = <460>; + battery,temp_low_threshold_event = <(-30)>; + battery,temp_low_recovery_event = <0>; + battery,temp_highlimit_threshold_normal = <800>; + battery,temp_highlimit_recovery_normal = <750>; + battery,temp_high_threshold_normal = <600>; + battery,temp_high_recovery_normal = <460>; + battery,temp_low_threshold_normal = <(-50)>; + battery,temp_low_recovery_normal = <0>; + battery,temp_highlimit_threshold_lpm = <800>; + battery,temp_highlimit_recovery_lpm = <750>; + battery,temp_high_threshold_lpm = <600>; + battery,temp_high_recovery_lpm = <460>; + battery,temp_low_threshold_lpm = <(-50)>; + battery,temp_low_recovery_lpm = <0>; + battery,full_check_type = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_type_2nd = <3>; /* SEC_BATTERY_FULLCHARGED_TIME */ + battery,full_check_count = <1>; + battery,chg_gpio_full_check = <0>; + battery,chg_polarity_full_check = <1>; + + battery,chg_high_temp_1st = <460>; + battery,chg_high_temp_2nd = <460>; + battery,chg_high_temp_recovery = <200>; + battery,chg_charging_limit_current = <1467>; + battery,chg_charging_limit_current_2nd = <1433>; + + /* SEC_BATTERY_FULL_CONDITION_SOC | + SEC_BATTERY_FULL_CONDITION_NOTIMEFULL | + SEC_BATTERY_FULL_CONDITION_VCELL */ + battery,full_condition_type = <13>; + battery,full_condition_soc = <94>; + battery,full_condition_vcell = <4250>; + + battery,recharge_check_count = <2>; + battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */ + battery,recharge_condition_soc = <98>; + battery,recharge_condition_vcell = <4300>; + + battery,charging_total_time = <21600>; + battery,recharging_total_time = <5400>; + battery,charging_reset_time = <0>; + + io-channels = <&exynos_adc 1>, <&exynos_adc 2>; + io-channel-names = "adc-temp", "chg-adc-temp"; + #io-channel-cells = <2>; + io-channel-ranges; + }; + + max77833-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,qrtable20 = <0x0900>; + fuelgauge,qrtable30 = <0x0780>; + fuelgauge,rcomp0 = <0x63>; + fuelgauge,rcomp_charging = <0x63>; + fuelgauge,temp_cohot = <(-1000)>; + fuelgauge,temp_cocold = <(-4325)>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x19C8>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + + }; + max77833-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4350>; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_battery_02.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_battery_02.dtsi new file mode 100755 index 000000000..3bde4478e --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_battery_02.dtsi @@ -0,0 +1,360 @@ +/* + * SAMSUNG UNIVERSAL5433 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + i2c@6c{ + compatible = "i2c-gpio"; + gpios = <&gpf1 2 0 /* sda */ + &gpf1 3 0 /* scl */ + >; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + bq51221-charger@6c { + compatible = "ti,bq51221-charger"; + reg = <0x6c>; + }; + }; + + pinctrl@10580000 { + wpc_int: wpc-int { + samsung,pins = "gpa2-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + chg_irq: chg-irq { + samsung,pins = "gpa1-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wciokb_irq: wciokb-irq { + samsung,pins = "gpa1-7"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + }; + + pinctrl@14870000 { + wchg_ctl: wchg-ctl { + samsung,pins = "gpf5-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + }; + + wpc_sda: wpc-sda { + samsung,pins = "gpf1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wpc_scl: wpc-scl { + samsung,pins = "gpf1-3"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + battery { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&wciokb_irq &wpc_sda &wpc_scl>; + + compatible = "samsung,sec-battery"; + battery,vendor = "SDI SDI"; + battery,charger_name = "max77843-charger"; + battery,fuelgauge_name = "max77843-fuelgauge"; + battery,wirelss_charger_name = "bq51221-charger"; + battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */ + /* .temp_cohot = -1000; */ + /* .temp_cocold = -4325; */ + + battery,chip_vendor = "LSI"; + battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */ + + battery,chg_temp_check = <1>; + battery,wpc_temp_check = <1>; + + battery,polling_time = <10 30 30 30 3600>; + + battery,temp_table_adc = <261 307 363 413 563 655 714 754 805 882 1025 1192 1265 1377 1578 + 1798 2032 2268 2493 2720 2959 3155 3266 3340 3495 3627 3727>; + battery,temp_table_data = <900 850 800 750 700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,chg_temp_table_adc = <542 638 665 733 782 855 1000 1168 1237 1341 1530 + 1736 1949 2170 2378 2583 2801 2975 3081 3149 3284 3413 3504>; + battery,chg_temp_table_data = <700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,input_current_limit = <1800 0 0 1800 460 900 1000 460 1000 0 820 820 820 1900 1800 0 0 400 700 1300 300 1000 1500 0 1667 1000 1667 80 1800 1667 1400 1000 1000>; + battery,fast_charging_current = <2100 0 0 2100 460 1200 1000 460 1200 0 1200 1200 1200 1600 2100 0 0 400 700 1300 300 1000 1500 0 2550 1000 2550 80 1800 1000 1400 0 1000>; + battery,full_check_current_1st = <275 0 0 275 275 275 275 275 275 0 275 275 275 275 275 0 0 275 275 275 275 275 275 0 275 275 275 0 275 275 275 0 275>; + battery,full_check_current_2nd = <125 0 0 125 125 125 125 125 125 0 125 125 125 125 125 0 0 125 125 125 125 125 125 0 125 125 125 0 125 125 125 0 125>; + + battery,wireless_cc_cv = <86>; + battery,inbat_voltage = <1>; + + battery,inbat_voltage_table_adc = <2905 2873 2848 2819 2787 2762 2731 2677 2655 2619 + 2591 2565 2534 2504 2475 2445 2420 2401 2364 2343>; + battery,inbat_voltage_table_data = <438 435 430 425 420 415 410 400 395 390 + 385 380 375 370 365 360 355 350 345 340>; + + battery,adc_check_count = <5>; + + battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */ + battery,cable_source_type = <1>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */ + battery,event_waiting_time = <600>; + battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */ + battery,monitor_initial_count = <0>; + + battery,battery_check_type = <0>; + battery,check_count = <0>; + battery,check_adc_max = <1440>; + battery,check_adc_min = <0>; + + battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */ + + battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */ + + battery,temp_check_type = <2>; /* _BATTERY_TEMP_CHECK_TEMP */ + battery,temp_check_count = <1>; + battery,temp_highlimit_threshold_event = <800>; + battery,temp_highlimit_recovery_event = <750>; + battery,temp_high_threshold_event = <700>; + battery,temp_high_recovery_event = <460>; + battery,temp_low_threshold_event = <(-30)>; + battery,temp_low_recovery_event = <0>; + battery,temp_highlimit_threshold_normal = <800>; + battery,temp_highlimit_recovery_normal = <750>; + battery,temp_high_threshold_normal = <600>; + battery,temp_high_recovery_normal = <460>; + battery,temp_low_threshold_normal = <(-50)>; + battery,temp_low_recovery_normal = <0>; + battery,temp_highlimit_threshold_lpm = <800>; + battery,temp_highlimit_recovery_lpm = <750>; + battery,temp_high_threshold_lpm = <600>; + battery,temp_high_recovery_lpm = <460>; + battery,temp_low_threshold_lpm = <(-50)>; + battery,temp_low_recovery_lpm = <0>; + battery,full_check_type = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_type_2nd = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_count = <1>; + battery,chg_gpio_full_check = <0>; + battery,chg_polarity_full_check = <1>; + + battery,chg_high_temp_1st = <530>; + battery,chg_high_temp_2nd = <530>; + battery,chg_high_temp_recovery = <525>; + battery,chg_charging_limit_current = <1300>; + battery,chg_charging_limit_current_2nd = <1300>; + battery,chg_skip_check_capacity = <10>; + battery,chg_skip_check_time = <600>; + + battery,wpc_high_temp = <400>; + battery,wpc_high_temp_recovery = <390>; + battery,wpc_charging_limit_current = <450>; + + /* SEC_BATTERY_FULL_CONDITION_SOC | + SEC_BATTERY_FULL_CONDITION_NOTIMEFULL | + SEC_BATTERY_FULL_CONDITION_VCELL */ + battery,full_condition_type = <13>; + battery,full_condition_soc = <93>; + battery,full_condition_vcell = <4275>; + + battery,recharge_check_count = <2>; + battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */ + battery,recharge_condition_soc = <98>; + battery,recharge_condition_vcell = <4325>; + + battery,charging_total_time = <21600>; + battery,recharging_total_time = <5400>; + battery,charging_reset_time = <0>; + + battery,chg_float_voltage = <4350>; + + battery,swelling_high_temp_block = <500>; + battery,swelling_high_temp_recov = <450>; + battery,swelling_low_temp_block = <50>; + battery,swelling_low_temp_recov = <100>; + battery,swelling_chg_current = <1300>; + battery,swelling_drop_float_voltage = <4200>; + battery,swelling_high_rechg_voltage = <4150>; + battery,swelling_low_rechg_voltage = <4050>; + battery,swelling_block_time = <600>; + + io-channels = <&exynos_adc 1>, <&exynos_adc 3>, <&exynos_adc 6>; + io-channel-names = "adc-temp", "chg-adc-temp", "in-bat-adc"; + #io-channel-cells = <3>; + io-channel-ranges; + }; + + max77833-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,qrtable20 = <0x0900>; + fuelgauge,qrtable30 = <0x0780>; + fuelgauge,rcomp0 = <0x63>; + fuelgauge,rcomp_charging = <0x63>; + fuelgauge,temp_cohot = <(-1000)>; + fuelgauge,temp_cocold = <(-4325)>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x19C8>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + + }; + max77833-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4400>; + }; + + max77843-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,using_temp_compensation; + fuelgauge,using_hw_vempty; + fuelgauge,v_empty = <0xA558>; + fuelgauge,v_empty_origin = <0x7D54>; + fuelgauge,qrtable20 = <0x1603>; + fuelgauge,qrtable30 = <0x1005>; + fuelgauge,low_temp_limit = <100>; + fuelgauge,low_temp_recovery = <120>; + fuelgauge,temp_cohot = <0x1B45>; + fuelgauge,temp_cocold = <0x194D>; + fuelgauge,rcomp0 = <0x35>; + fuelgauge,rcomp_charging = <0x35>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x1438>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + fuelgauge,cv_data = <2565 680 2580 + 2483 688 2549 + 2405 696 2519 + 2333 704 2489 + 2263 711 2458 + 2196 718 2428 + 2137 725 2398 + 2077 732 2367 + 2016 738 2337 + 1964 745 2306 + 1894 751 2276 + 1835 757 2246 + 1783 763 2215 + 1727 769 2185 + 1674 774 2155 + 1621 780 2124 + 1571 785 2094 + 1525 790 2064 + 1480 795 2033 + 1437 800 2003 + 1391 804 1973 + 1353 809 1942 + 1311 814 1912 + 1272 818 1882 + 1235 822 1851 + 1198 826 1821 + 1161 830 1791 + 1124 834 1760 + 1092 838 1730 + 1059 841 1700 + 1027 845 1669 + 996 848 1639 + 969 852 1608 + 940 855 1578 + 909 858 1548 + 885 861 1517 + 863 864 1487 + 840 867 1457 + 817 870 1426 + 794 872 1396 + 771 875 1366 + 749 878 1335 + 725 880 1305 + 707 883 1275 + 696 885 1244 + 674 887 1214 + 658 890 1184 + 640 892 1153 + 618 894 1123 + 608 896 1093 + 604 898 1062 + 584 900 1032 + 567 903 1002 + 553 909 971 + 539 913 941 + 524 918 910 + 515 921 880 + 507 924 850 + 494 929 820 + 476 934 789 + 469 937 759 + 459 939 729 + 449 943 698 + 438 946 668 + 431 949 638 + 419 952 607 + 408 957 577 + 402 958 546 + 389 962 516 + 385 964 486 + 377 966 455 + 371 968 425 + 359 972 395 + 353 975 364 + 347 976 334 + 337 979 304 + 331 981 273 + 327 983 243 + 323 985 213 + 319 986 182 + 306 989 152 + 303 992 122 + 298 993 91 + 293 996 61 + 290 997 31 + 0 1000 0 >; + }; + max77843-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4350>; + }; + +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_battery_05.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_battery_05.dtsi new file mode 100755 index 000000000..10ecad82c --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_battery_05.dtsi @@ -0,0 +1,370 @@ +/* + * SAMSUNG UNIVERSAL5433 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + i2c@6c{ + compatible = "i2c-gpio"; + gpios = <&gpf1 2 0 /* sda */ + &gpf1 3 0 /* scl */ + >; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + bq51221-charger@6c { + compatible = "ti,bq51221-charger"; + reg = <0x6c>; + }; + }; + + pinctrl@10580000 { + wpc_int: wpc-int { + samsung,pins = "gpa2-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + chg_irq: chg-irq { + samsung,pins = "gpa1-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wciokb_irq: wciokb-irq { + samsung,pins = "gpa1-7"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + }; + + pinctrl@14870000 { + factory_discharging: factory-discharging { + samsung,pins = "gpf5-2"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + }; + + wpc_sda: wpc-sda { + samsung,pins = "gpf1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wpc_scl: wpc-scl { + samsung,pins = "gpf1-3"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + battery { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&wciokb_irq &factory_discharging &wpc_sda &wpc_scl>; + + battery,factory_discharging = <&gpf5 2 0>; + + compatible = "samsung,sec-battery"; + battery,vendor = "SDI SDI"; + battery,charger_name = "max77843-charger"; + battery,fuelgauge_name = "max77843-fuelgauge"; + battery,wirelss_charger_name = "bq51221-charger"; + battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */ + /* .temp_cohot = -1000; */ + /* .temp_cocold = -4325; */ + + battery,chip_vendor = "LSI"; + battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */ + + battery,chg_temp_check = <1>; + battery,wpc_temp_check = <1>; + + battery,polling_time = <10 30 30 30 3600>; + + battery,temp_table_adc = <261 307 363 413 563 655 714 754 805 882 1025 1192 1265 1377 1578 + 1798 2032 2268 2493 2720 2959 3155 3266 3340 3495 3627 3727>; + battery,temp_table_data = <900 850 800 750 700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,chg_temp_table_adc = <542 638 665 733 782 855 1000 1168 1237 1341 1530 + 1736 1949 2170 2378 2583 2801 2975 3081 3149 3284 3413 3504>; + battery,chg_temp_table_data = <700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,input_current_limit = <1800 0 0 1800 460 900 1000 460 1000 0 820 820 820 1900 1800 0 0 400 700 1300 300 1000 1500 0 1667 1000 1667 80 1800 1667 1400 1000 1000>; + battery,fast_charging_current = <2100 0 0 2100 460 1200 1000 460 1200 0 1200 1200 1200 1600 2100 0 0 400 700 1300 300 1000 1500 0 2550 1000 2550 80 1800 1000 1400 0 1000>; + battery,full_check_current_1st = <275 0 0 275 275 275 275 275 275 0 275 275 275 275 275 0 0 275 275 275 275 275 275 0 275 275 275 0 275 275 275 0 275>; + battery,full_check_current_2nd = <125 0 0 125 125 125 125 125 125 0 125 125 125 125 125 0 0 125 125 125 125 125 125 0 125 125 125 0 125 125 125 0 125>; + + battery,wireless_cc_cv = <86>; + battery,inbat_voltage = <1>; + + battery,inbat_voltage_table_adc = <2905 2873 2848 2819 2787 2762 2731 2677 2655 2619 + 2591 2565 2534 2504 2475 2445 2420 2401 2364 2343>; + battery,inbat_voltage_table_data = <438 435 430 425 420 415 410 400 395 390 + 385 380 375 370 365 360 355 350 345 340>; + + battery,adc_check_count = <5>; + + battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */ + battery,cable_source_type = <1>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */ + battery,event_waiting_time = <600>; + battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */ + battery,monitor_initial_count = <0>; + + battery,battery_check_type = <0>; + battery,check_count = <0>; + battery,check_adc_max = <1440>; + battery,check_adc_min = <0>; + + battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */ + + battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */ + + battery,temp_check_type = <2>; /* _BATTERY_TEMP_CHECK_TEMP */ + battery,temp_check_count = <1>; + battery,temp_highlimit_threshold_event = <800>; + battery,temp_highlimit_recovery_event = <750>; + battery,temp_high_threshold_event = <700>; + battery,temp_high_recovery_event = <460>; + battery,temp_low_threshold_event = <(-30)>; + battery,temp_low_recovery_event = <0>; + battery,temp_highlimit_threshold_normal = <800>; + battery,temp_highlimit_recovery_normal = <750>; + battery,temp_high_threshold_normal = <600>; + battery,temp_high_recovery_normal = <460>; + battery,temp_low_threshold_normal = <(-50)>; + battery,temp_low_recovery_normal = <0>; + battery,temp_highlimit_threshold_lpm = <800>; + battery,temp_highlimit_recovery_lpm = <750>; + battery,temp_high_threshold_lpm = <600>; + battery,temp_high_recovery_lpm = <460>; + battery,temp_low_threshold_lpm = <(-50)>; + battery,temp_low_recovery_lpm = <0>; + battery,full_check_type = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_type_2nd = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_count = <1>; + battery,chg_gpio_full_check = <0>; + battery,chg_polarity_full_check = <1>; + + battery,chg_high_temp_1st = <530>; + battery,chg_high_temp_2nd = <530>; + battery,chg_high_temp_recovery = <525>; + battery,chg_charging_limit_current = <1300>; + battery,chg_charging_limit_current_2nd = <1300>; + battery,chg_skip_check_capacity = <10>; + battery,chg_skip_check_time = <600>; + + battery,wpc_high_temp = <400>; + battery,wpc_high_temp_recovery = <390>; + battery,wpc_charging_limit_current = <450>; + + /* SEC_BATTERY_FULL_CONDITION_SOC | + SEC_BATTERY_FULL_CONDITION_NOTIMEFULL | + SEC_BATTERY_FULL_CONDITION_VCELL */ + battery,full_condition_type = <13>; + battery,full_condition_soc = <93>; + battery,full_condition_vcell = <4275>; + + battery,recharge_check_count = <2>; + battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */ + battery,recharge_condition_soc = <98>; + battery,recharge_condition_vcell = <4325>; + + battery,charging_total_time = <21600>; + battery,recharging_total_time = <5400>; + battery,charging_reset_time = <0>; + + battery,chg_float_voltage = <4350>; + + battery,self_discharging_en; + battery,force_discharging_limit = <650>; + battery,force_discharging_recov = <550>; + battery,self_discharging_voltage_limit = <4250>; + battery,discharging_adc_max = <2600>; + battery,discharging_adc_min = <1700>; + battery,discharging_ntc_limit = <2750>; + + battery,swelling_high_temp_block = <500>; + battery,swelling_high_temp_recov = <450>; + battery,swelling_low_temp_block = <50>; + battery,swelling_low_temp_recov = <100>; + battery,swelling_chg_current = <1300>; + battery,swelling_drop_float_voltage = <4200>; + battery,swelling_high_rechg_voltage = <4150>; + battery,swelling_low_rechg_voltage = <4050>; + battery,swelling_block_time = <600>; + + io-channels = <&exynos_adc 1>, <&exynos_adc 3>, <&exynos_adc 6>, <&exynos_adc 5>, <&exynos_adc 7>; + io-channel-names = "adc-temp", "chg-adc-temp", "in-bat-adc", "discharging-check-adc", "ntc-check-adc"; + #io-channel-cells = <5>; + io-channel-ranges; + }; + + max77833-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,qrtable20 = <0x0900>; + fuelgauge,qrtable30 = <0x0780>; + fuelgauge,rcomp0 = <0x63>; + fuelgauge,rcomp_charging = <0x63>; + fuelgauge,temp_cohot = <(-1000)>; + fuelgauge,temp_cocold = <(-4325)>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x19C8>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + + }; + max77833-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4400>; + }; + + max77843-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,using_temp_compensation; + fuelgauge,using_hw_vempty; + fuelgauge,v_empty = <0xA558>; + fuelgauge,v_empty_origin = <0x7D54>; + fuelgauge,qrtable20 = <0x1603>; + fuelgauge,qrtable30 = <0x1005>; + fuelgauge,low_temp_limit = <100>; + fuelgauge,low_temp_recovery = <120>; + fuelgauge,temp_cohot = <0x1B45>; + fuelgauge,temp_cocold = <0x194D>; + fuelgauge,rcomp0 = <0x35>; + fuelgauge,rcomp_charging = <0x35>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x1438>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + fuelgauge,cv_data = <2565 680 2580 + 2483 688 2549 + 2405 696 2519 + 2333 704 2489 + 2263 711 2458 + 2196 718 2428 + 2137 725 2398 + 2077 732 2367 + 2016 738 2337 + 1964 745 2306 + 1894 751 2276 + 1835 757 2246 + 1783 763 2215 + 1727 769 2185 + 1674 774 2155 + 1621 780 2124 + 1571 785 2094 + 1525 790 2064 + 1480 795 2033 + 1437 800 2003 + 1391 804 1973 + 1353 809 1942 + 1311 814 1912 + 1272 818 1882 + 1235 822 1851 + 1198 826 1821 + 1161 830 1791 + 1124 834 1760 + 1092 838 1730 + 1059 841 1700 + 1027 845 1669 + 996 848 1639 + 969 852 1608 + 940 855 1578 + 909 858 1548 + 885 861 1517 + 863 864 1487 + 840 867 1457 + 817 870 1426 + 794 872 1396 + 771 875 1366 + 749 878 1335 + 725 880 1305 + 707 883 1275 + 696 885 1244 + 674 887 1214 + 658 890 1184 + 640 892 1153 + 618 894 1123 + 608 896 1093 + 604 898 1062 + 584 900 1032 + 567 903 1002 + 553 909 971 + 539 913 941 + 524 918 910 + 515 921 880 + 507 924 850 + 494 929 820 + 476 934 789 + 469 937 759 + 459 939 729 + 449 943 698 + 438 946 668 + 431 949 638 + 419 952 607 + 408 957 577 + 402 958 546 + 389 962 516 + 385 964 486 + 377 966 455 + 371 968 425 + 359 972 395 + 353 975 364 + 347 976 334 + 337 979 304 + 331 981 273 + 327 983 243 + 323 985 213 + 319 986 182 + 306 989 152 + 303 992 122 + 298 993 91 + 293 996 61 + 290 997 31 + 0 1000 0 >; + }; + max77843-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4350>; + }; + +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_08.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_08.dtsi new file mode 100755 index 000000000..586ddd411 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_08.dtsi @@ -0,0 +1,385 @@ +/* + * SAMSUNG UNIVERSAL5433 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + hsi2c@13670000 { /* hsi2c5 */ + status = "okay"; + + bq51221-charger@6c { + compatible = "ti,bq51221-charger"; + reg = <0x6c>; + status = "okay"; + }; + }; + + pinctrl@10580000 { + wpc_int: wpc-int { + samsung,pins = "gpa2-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + chg_irq: chg-irq { + samsung,pins = "gpa1-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wciokb_irq: wciokb-irq { + samsung,pins = "gpa1-7"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + }; + + pinctrl@14870000 { + factory_discharging: factory-discharging { + samsung,pins = "gpf5-2"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + }; + + }; + + battery { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&wciokb_irq &factory_discharging>; + + battery,factory_discharging = <&gpf5 2 0>; + + compatible = "samsung,sec-battery"; + battery,vendor = "SDI SDI"; + battery,charger_name = "max77843-charger"; + battery,fuelgauge_name = "max77843-fuelgauge"; + battery,wirelss_charger_name = "bq51221-charger"; + battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */ + /* .temp_cohot = -1000; */ + /* .temp_cocold = -4325; */ + + battery,chip_vendor = "LSI"; + battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */ + + battery,chg_temp_check = <1>; + battery,wpc_temp_check = <1>; + + battery,polling_time = <10 30 30 30 3600>; + + battery,temp_table_adc = <261 307 363 413 563 655 714 754 805 882 1025 1192 1265 1377 1578 + 1798 2032 2268 2493 2720 2959 3155 3266 3340 3495 3627 3727>; + battery,temp_table_data = <900 850 800 750 700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,chg_temp_table_adc = <542 638 665 733 782 855 1000 1168 1237 1341 1530 + 1736 1949 2170 2378 2583 2801 2975 3081 3149 3284 3413 3504>; + battery,chg_temp_table_data = <700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,input_current_limit = <1800 0 0 1800 460 900 1000 460 1000 0 820 820 820 1900 1800 0 0 400 700 1300 300 1000 1500 0 1667 1000 1667 80 1800 1667 1400 1000 1000>; + battery,fast_charging_current = <2100 0 0 2100 460 1200 1000 460 1200 0 1200 1200 1200 1600 2100 0 0 400 700 1300 300 1000 1500 0 2550 1000 2550 80 1800 1000 1400 0 1000>; + battery,full_check_current_1st = <275 0 0 275 275 275 275 275 275 0 275 275 275 275 275 0 0 275 275 275 275 275 275 0 275 275 275 0 275 275 275 0 275>; + battery,full_check_current_2nd = <125 0 0 125 125 125 125 125 125 0 125 125 125 125 125 0 0 125 125 125 125 125 125 0 125 125 125 0 125 125 125 0 125>; + + battery,wireless_cc_cv = <86>; + battery,inbat_voltage = <1>; + + battery,inbat_voltage_table_adc = <2838 2811 2796 2763 2737 2708 2681 2638 2597 2568 + 2549 2524 2506 2483 2434 2403 2365 2337 2316 2287 2271>; + battery,inbat_voltage_table_data = <438 435 430 425 420 415 410 405 400 395 + 390 385 380 375 370 365 360 355 350 345 340>; + + battery,adc_check_count = <5>; + + battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */ + battery,cable_source_type = <1>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */ + battery,event_waiting_time = <600>; + battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */ + battery,monitor_initial_count = <0>; + + battery,battery_check_type = <0>; + battery,check_count = <0>; + battery,check_adc_max = <1440>; + battery,check_adc_min = <0>; + + battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */ + + battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */ + + battery,temp_check_type = <2>; /* _BATTERY_TEMP_CHECK_TEMP */ + battery,temp_check_count = <1>; + battery,temp_highlimit_threshold_event = <800>; + battery,temp_highlimit_recovery_event = <750>; + battery,temp_high_threshold_event = <700>; + battery,temp_high_recovery_event = <460>; + battery,temp_low_threshold_event = <(-30)>; + battery,temp_low_recovery_event = <0>; + battery,temp_highlimit_threshold_normal = <800>; + battery,temp_highlimit_recovery_normal = <750>; + battery,temp_high_threshold_normal = <600>; + battery,temp_high_recovery_normal = <460>; + battery,temp_low_threshold_normal = <(-50)>; + battery,temp_low_recovery_normal = <0>; + battery,temp_highlimit_threshold_lpm = <800>; + battery,temp_highlimit_recovery_lpm = <750>; + battery,temp_high_threshold_lpm = <600>; + battery,temp_high_recovery_lpm = <460>; + battery,temp_low_threshold_lpm = <(-50)>; + battery,temp_low_recovery_lpm = <0>; + battery,full_check_type = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_type_2nd = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_count = <1>; + battery,chg_gpio_full_check = <0>; + battery,chg_polarity_full_check = <1>; + + battery,chg_high_temp_1st = <530>; + battery,chg_high_temp_2nd = <530>; + battery,chg_high_temp_recovery = <525>; + battery,chg_charging_limit_current = <1300>; + battery,chg_charging_limit_current_2nd = <1300>; + battery,chg_skip_check_capacity = <10>; + battery,chg_skip_check_time = <600>; + + battery,wpc_high_temp = <400>; + battery,wpc_high_temp_recovery = <390>; + battery,wpc_charging_limit_current = <450>; + + battery,wpc_delayed_current_en; + battery,wpc_delayed_current = <860>; + battery,wpc_delayed_current_time = <420>; + + /* SEC_BATTERY_FULL_CONDITION_SOC | + SEC_BATTERY_FULL_CONDITION_NOTIMEFULL | + SEC_BATTERY_FULL_CONDITION_VCELL */ + battery,full_condition_type = <13>; + battery,full_condition_soc = <93>; + battery,full_condition_vcell = <4275>; + + battery,recharge_check_count = <2>; + battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */ + battery,recharge_condition_soc = <98>; + battery,recharge_condition_vcell = <4325>; + + battery,charging_total_time = <21600>; + battery,recharging_total_time = <5400>; + battery,charging_reset_time = <0>; + + battery,chg_float_voltage = <4350>; + + battery,self_discharging_en; + battery,force_discharging_limit = <650>; + battery,force_discharging_recov = <550>; + battery,self_discharging_voltage_limit = <4250>; + battery,discharging_adc_max = <2600>; + battery,discharging_adc_min = <1700>; + battery,discharging_ntc_limit = <2750>; + + battery,swelling_high_temp_block = <500>; + battery,swelling_high_temp_recov = <450>; + battery,swelling_low_temp_block = <50>; + battery,swelling_low_temp_recov = <100>; + battery,swelling_chg_current = <1300>; + battery,swelling_drop_float_voltage = <4200>; + battery,swelling_high_rechg_voltage = <4150>; + battery,swelling_low_rechg_voltage = <4050>; + battery,swelling_block_time = <600>; + + io-channels = <&exynos_adc 1>, <&exynos_adc 3>, <&exynos_adc 6>, <&exynos_adc 5>, <&exynos_adc 7>; + io-channel-names = "adc-temp", "chg-adc-temp", "in-bat-adc", "discharging-check-adc", "ntc-check-adc"; + #io-channel-cells = <5>; + io-channel-ranges; + + /***********************************************************/ + /* VE_SW for Battery Self Discharging(to prevent swelling) */ + /* Enable TYPE : sdchg_ic, sdchg_ap, sdchg_cs, sdchg_ldo, ... */ + /* The following line, "sdchg_type", is annotaed to support the dualization for Zero project. + In case of other projects, "sdchg_type" should be designated to decide the way of self-discharging. + In general cases, the default type is "sdchg_ic",which means self-discharging IC on PCB, + unless "sdchg_type" is not designated.*/ + /* + sdchg_type = "sdchg_ic"; + */ + sdchg_ap { + compatible = "samsung,sdchg_ap"; + sdchg,temperature_start = <600>; + sdchg,temperature_end = <550>; + sdchg,soc_start = <96>; + sdchg,soc_end = <92>; + sdchg,voltage_start = <4230>; /* 4250 - 20(Volt. Comp. factor) = 4230 */ + /* sdchg,voltage_end = <4200>; -> from battery,swelling_drop_float_voltage */ + }; + sdchg_cs { + compatible = "samsung,sdchg_cs"; + sdchg,temperature_start = <600>; + sdchg,temperature_end = <550>; + sdchg,soc_start = <96>; + sdchg,soc_end = <92>; + sdchg,voltage_start = <4230>; /* 4250 - 20(Volt. Comp. factor) = 4230 */ + /* sdchg,voltage_end = <4200>; -> from battery,swelling_drop_float_voltage */ + }; + /***********************************************************/ + }; + + max77833-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,qrtable20 = <0x0900>; + fuelgauge,qrtable30 = <0x0780>; + fuelgauge,rcomp0 = <0x63>; + fuelgauge,rcomp_charging = <0x63>; + fuelgauge,temp_cohot = <(-1000)>; + fuelgauge,temp_cocold = <(-4325)>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x19C8>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + + }; + max77833-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4400>; + }; + + max77843-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,using_temp_compensation; + fuelgauge,using_hw_vempty; + fuelgauge,v_empty = <0xA558>; + fuelgauge,v_empty_origin = <0x7D54>; + fuelgauge,qrtable20 = <0x1603>; + fuelgauge,qrtable30 = <0x1005>; + fuelgauge,low_temp_limit = <100>; + fuelgauge,low_temp_recovery = <120>; + fuelgauge,temp_cohot = <0x1B45>; + fuelgauge,temp_cocold = <0x194D>; + fuelgauge,rcomp0 = <0x35>; + fuelgauge,rcomp_charging = <0x35>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x1438>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + fuelgauge,cv_data = <2565 680 2580 + 2483 688 2549 + 2405 696 2519 + 2333 704 2489 + 2263 711 2458 + 2196 718 2428 + 2137 725 2398 + 2077 732 2367 + 2016 738 2337 + 1964 745 2306 + 1894 751 2276 + 1835 757 2246 + 1783 763 2215 + 1727 769 2185 + 1674 774 2155 + 1621 780 2124 + 1571 785 2094 + 1525 790 2064 + 1480 795 2033 + 1437 800 2003 + 1391 804 1973 + 1353 809 1942 + 1311 814 1912 + 1272 818 1882 + 1235 822 1851 + 1198 826 1821 + 1161 830 1791 + 1124 834 1760 + 1092 838 1730 + 1059 841 1700 + 1027 845 1669 + 996 848 1639 + 969 852 1608 + 940 855 1578 + 909 858 1548 + 885 861 1517 + 863 864 1487 + 840 867 1457 + 817 870 1426 + 794 872 1396 + 771 875 1366 + 749 878 1335 + 725 880 1305 + 707 883 1275 + 696 885 1244 + 674 887 1214 + 658 890 1184 + 640 892 1153 + 618 894 1123 + 608 896 1093 + 604 898 1062 + 584 900 1032 + 567 903 1002 + 553 909 971 + 539 913 941 + 524 918 910 + 515 921 880 + 507 924 850 + 494 929 820 + 476 934 789 + 469 937 759 + 459 939 729 + 449 943 698 + 438 946 668 + 431 949 638 + 419 952 607 + 408 957 577 + 402 958 546 + 389 962 516 + 385 964 486 + 377 966 455 + 371 968 425 + 359 972 395 + 353 975 364 + 347 976 334 + 337 979 304 + 331 981 273 + 327 983 243 + 323 985 213 + 319 986 182 + 306 989 152 + 303 992 122 + 298 993 91 + 293 996 61 + 290 997 31 + 0 1000 0 >; + }; + max77843-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4350>; + }; + +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_09.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_09.dtsi new file mode 100755 index 000000000..586ddd411 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_battery_09.dtsi @@ -0,0 +1,385 @@ +/* + * SAMSUNG UNIVERSAL5433 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/ { + hsi2c@13670000 { /* hsi2c5 */ + status = "okay"; + + bq51221-charger@6c { + compatible = "ti,bq51221-charger"; + reg = <0x6c>; + status = "okay"; + }; + }; + + pinctrl@10580000 { + wpc_int: wpc-int { + samsung,pins = "gpa2-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + chg_irq: chg-irq { + samsung,pins = "gpa1-4"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + wciokb_irq: wciokb-irq { + samsung,pins = "gpa1-7"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + + }; + + pinctrl@14870000 { + factory_discharging: factory-discharging { + samsung,pins = "gpf5-2"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + }; + + }; + + battery { + status = "okay"; + + pinctrl-names = "default"; + pinctrl-0 = <&wciokb_irq &factory_discharging>; + + battery,factory_discharging = <&gpf5 2 0>; + + compatible = "samsung,sec-battery"; + battery,vendor = "SDI SDI"; + battery,charger_name = "max77843-charger"; + battery,fuelgauge_name = "max77843-fuelgauge"; + battery,wirelss_charger_name = "bq51221-charger"; + battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */ + /* .temp_cohot = -1000; */ + /* .temp_cocold = -4325; */ + + battery,chip_vendor = "LSI"; + battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */ + + battery,chg_temp_check = <1>; + battery,wpc_temp_check = <1>; + + battery,polling_time = <10 30 30 30 3600>; + + battery,temp_table_adc = <261 307 363 413 563 655 714 754 805 882 1025 1192 1265 1377 1578 + 1798 2032 2268 2493 2720 2959 3155 3266 3340 3495 3627 3727>; + battery,temp_table_data = <900 850 800 750 700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,chg_temp_table_adc = <542 638 665 733 782 855 1000 1168 1237 1341 1530 + 1736 1949 2170 2378 2583 2801 2975 3081 3149 3284 3413 3504>; + battery,chg_temp_table_data = <700 650 630 600 580 550 500 450 430 400 350 + 300 250 200 150 100 50 0 (-30) (-50) (-100) (-150) (-200)>; + + battery,input_current_limit = <1800 0 0 1800 460 900 1000 460 1000 0 820 820 820 1900 1800 0 0 400 700 1300 300 1000 1500 0 1667 1000 1667 80 1800 1667 1400 1000 1000>; + battery,fast_charging_current = <2100 0 0 2100 460 1200 1000 460 1200 0 1200 1200 1200 1600 2100 0 0 400 700 1300 300 1000 1500 0 2550 1000 2550 80 1800 1000 1400 0 1000>; + battery,full_check_current_1st = <275 0 0 275 275 275 275 275 275 0 275 275 275 275 275 0 0 275 275 275 275 275 275 0 275 275 275 0 275 275 275 0 275>; + battery,full_check_current_2nd = <125 0 0 125 125 125 125 125 125 0 125 125 125 125 125 0 0 125 125 125 125 125 125 0 125 125 125 0 125 125 125 0 125>; + + battery,wireless_cc_cv = <86>; + battery,inbat_voltage = <1>; + + battery,inbat_voltage_table_adc = <2838 2811 2796 2763 2737 2708 2681 2638 2597 2568 + 2549 2524 2506 2483 2434 2403 2365 2337 2316 2287 2271>; + battery,inbat_voltage_table_data = <438 435 430 425 420 415 410 405 400 395 + 390 385 380 375 370 365 360 355 350 345 340>; + + battery,adc_check_count = <5>; + + battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */ + battery,cable_source_type = <1>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */ + battery,event_waiting_time = <600>; + battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */ + battery,monitor_initial_count = <0>; + + battery,battery_check_type = <0>; + battery,check_count = <0>; + battery,check_adc_max = <1440>; + battery,check_adc_min = <0>; + + battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */ + + battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */ + + battery,temp_check_type = <2>; /* _BATTERY_TEMP_CHECK_TEMP */ + battery,temp_check_count = <1>; + battery,temp_highlimit_threshold_event = <800>; + battery,temp_highlimit_recovery_event = <750>; + battery,temp_high_threshold_event = <700>; + battery,temp_high_recovery_event = <460>; + battery,temp_low_threshold_event = <(-30)>; + battery,temp_low_recovery_event = <0>; + battery,temp_highlimit_threshold_normal = <800>; + battery,temp_highlimit_recovery_normal = <750>; + battery,temp_high_threshold_normal = <600>; + battery,temp_high_recovery_normal = <460>; + battery,temp_low_threshold_normal = <(-50)>; + battery,temp_low_recovery_normal = <0>; + battery,temp_highlimit_threshold_lpm = <800>; + battery,temp_highlimit_recovery_lpm = <750>; + battery,temp_high_threshold_lpm = <600>; + battery,temp_high_recovery_lpm = <460>; + battery,temp_low_threshold_lpm = <(-50)>; + battery,temp_low_recovery_lpm = <0>; + battery,full_check_type = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_type_2nd = <7>; /* SEC_BATTERY_FULLCHARGED_CHGPSY */ + battery,full_check_count = <1>; + battery,chg_gpio_full_check = <0>; + battery,chg_polarity_full_check = <1>; + + battery,chg_high_temp_1st = <530>; + battery,chg_high_temp_2nd = <530>; + battery,chg_high_temp_recovery = <525>; + battery,chg_charging_limit_current = <1300>; + battery,chg_charging_limit_current_2nd = <1300>; + battery,chg_skip_check_capacity = <10>; + battery,chg_skip_check_time = <600>; + + battery,wpc_high_temp = <400>; + battery,wpc_high_temp_recovery = <390>; + battery,wpc_charging_limit_current = <450>; + + battery,wpc_delayed_current_en; + battery,wpc_delayed_current = <860>; + battery,wpc_delayed_current_time = <420>; + + /* SEC_BATTERY_FULL_CONDITION_SOC | + SEC_BATTERY_FULL_CONDITION_NOTIMEFULL | + SEC_BATTERY_FULL_CONDITION_VCELL */ + battery,full_condition_type = <13>; + battery,full_condition_soc = <93>; + battery,full_condition_vcell = <4275>; + + battery,recharge_check_count = <2>; + battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */ + battery,recharge_condition_soc = <98>; + battery,recharge_condition_vcell = <4325>; + + battery,charging_total_time = <21600>; + battery,recharging_total_time = <5400>; + battery,charging_reset_time = <0>; + + battery,chg_float_voltage = <4350>; + + battery,self_discharging_en; + battery,force_discharging_limit = <650>; + battery,force_discharging_recov = <550>; + battery,self_discharging_voltage_limit = <4250>; + battery,discharging_adc_max = <2600>; + battery,discharging_adc_min = <1700>; + battery,discharging_ntc_limit = <2750>; + + battery,swelling_high_temp_block = <500>; + battery,swelling_high_temp_recov = <450>; + battery,swelling_low_temp_block = <50>; + battery,swelling_low_temp_recov = <100>; + battery,swelling_chg_current = <1300>; + battery,swelling_drop_float_voltage = <4200>; + battery,swelling_high_rechg_voltage = <4150>; + battery,swelling_low_rechg_voltage = <4050>; + battery,swelling_block_time = <600>; + + io-channels = <&exynos_adc 1>, <&exynos_adc 3>, <&exynos_adc 6>, <&exynos_adc 5>, <&exynos_adc 7>; + io-channel-names = "adc-temp", "chg-adc-temp", "in-bat-adc", "discharging-check-adc", "ntc-check-adc"; + #io-channel-cells = <5>; + io-channel-ranges; + + /***********************************************************/ + /* VE_SW for Battery Self Discharging(to prevent swelling) */ + /* Enable TYPE : sdchg_ic, sdchg_ap, sdchg_cs, sdchg_ldo, ... */ + /* The following line, "sdchg_type", is annotaed to support the dualization for Zero project. + In case of other projects, "sdchg_type" should be designated to decide the way of self-discharging. + In general cases, the default type is "sdchg_ic",which means self-discharging IC on PCB, + unless "sdchg_type" is not designated.*/ + /* + sdchg_type = "sdchg_ic"; + */ + sdchg_ap { + compatible = "samsung,sdchg_ap"; + sdchg,temperature_start = <600>; + sdchg,temperature_end = <550>; + sdchg,soc_start = <96>; + sdchg,soc_end = <92>; + sdchg,voltage_start = <4230>; /* 4250 - 20(Volt. Comp. factor) = 4230 */ + /* sdchg,voltage_end = <4200>; -> from battery,swelling_drop_float_voltage */ + }; + sdchg_cs { + compatible = "samsung,sdchg_cs"; + sdchg,temperature_start = <600>; + sdchg,temperature_end = <550>; + sdchg,soc_start = <96>; + sdchg,soc_end = <92>; + sdchg,voltage_start = <4230>; /* 4250 - 20(Volt. Comp. factor) = 4230 */ + /* sdchg,voltage_end = <4200>; -> from battery,swelling_drop_float_voltage */ + }; + /***********************************************************/ + }; + + max77833-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,qrtable20 = <0x0900>; + fuelgauge,qrtable30 = <0x0780>; + fuelgauge,rcomp0 = <0x63>; + fuelgauge,rcomp_charging = <0x63>; + fuelgauge,temp_cohot = <(-1000)>; + fuelgauge,temp_cocold = <(-4325)>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x19C8>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + + }; + max77833-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4400>; + }; + + max77843-fuelgauge { + status = "disable"; + fuelgauge,fuel_alert_soc = <1>; + fuelgauge,capacity_max = <1000>; + fuelgauge,capacity_max_margin = <100>; + fuelgauge,capacity_min = <0>; + fuelgauge,capacity_calculation_type = <28>; + fuelgauge,repeated_fuelalert; + fuelgauge,using_temp_compensation; + fuelgauge,using_hw_vempty; + fuelgauge,v_empty = <0xA558>; + fuelgauge,v_empty_origin = <0x7D54>; + fuelgauge,qrtable20 = <0x1603>; + fuelgauge,qrtable30 = <0x1005>; + fuelgauge,low_temp_limit = <100>; + fuelgauge,low_temp_recovery = <120>; + fuelgauge,temp_cohot = <0x1B45>; + fuelgauge,temp_cocold = <0x194D>; + fuelgauge,rcomp0 = <0x35>; + fuelgauge,rcomp_charging = <0x35>; + fuelgauge,is_using_model_data; + fuelgauge,type_str = "SDI"; + fuelgauge,capacity = <0x1438>; + fuelgauge,low_battery_comp_voltage = <3600>; + fuelgauge,low_battery_table = <(-5000) 0 0 (-1250) 0 3320 (-750) 97 3451 (-100) 96 3461 0 0 3456>; + fuelgauge,cv_data = <2565 680 2580 + 2483 688 2549 + 2405 696 2519 + 2333 704 2489 + 2263 711 2458 + 2196 718 2428 + 2137 725 2398 + 2077 732 2367 + 2016 738 2337 + 1964 745 2306 + 1894 751 2276 + 1835 757 2246 + 1783 763 2215 + 1727 769 2185 + 1674 774 2155 + 1621 780 2124 + 1571 785 2094 + 1525 790 2064 + 1480 795 2033 + 1437 800 2003 + 1391 804 1973 + 1353 809 1942 + 1311 814 1912 + 1272 818 1882 + 1235 822 1851 + 1198 826 1821 + 1161 830 1791 + 1124 834 1760 + 1092 838 1730 + 1059 841 1700 + 1027 845 1669 + 996 848 1639 + 969 852 1608 + 940 855 1578 + 909 858 1548 + 885 861 1517 + 863 864 1487 + 840 867 1457 + 817 870 1426 + 794 872 1396 + 771 875 1366 + 749 878 1335 + 725 880 1305 + 707 883 1275 + 696 885 1244 + 674 887 1214 + 658 890 1184 + 640 892 1153 + 618 894 1123 + 608 896 1093 + 604 898 1062 + 584 900 1032 + 567 903 1002 + 553 909 971 + 539 913 941 + 524 918 910 + 515 921 880 + 507 924 850 + 494 929 820 + 476 934 789 + 469 937 759 + 459 939 729 + 449 943 698 + 438 946 668 + 431 949 638 + 419 952 607 + 408 957 577 + 402 958 546 + 389 962 516 + 385 964 486 + 377 966 455 + 371 968 425 + 359 972 395 + 353 975 364 + 347 976 334 + 337 979 304 + 331 981 273 + 327 983 243 + 323 985 213 + 319 986 182 + 306 989 152 + 303 992 122 + 298 993 91 + 293 996 61 + 290 997 31 + 0 1000 0 >; + }; + max77843-charger { + status = "disable"; + battery,chg_gpio_en = <0>; + battery,chg_polarity_en = <0>; + battery,chg_gpio_status = <0>; + battery,chg_polarity_status = <0>; + battery,chg_float_voltage = <4350>; + }; + +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_00.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_00.dts new file mode 100644 index 000000000..d8e8e2df4 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_00.dts @@ -0,0 +1,734 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery.dtsi" +#include "exynos7420-zeroflte_gpio_00.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zerolte_mst.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev00 board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <0>; + model_info-hw_rev_end = <0>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r00", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm5110@0 { + compatible = "wlf,wm5110"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_ldoena &audio_ctrl &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,ldoena = <&gpf5 7 0>; + wlf,init-mic-delay = <30>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <59>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 1 0 + >; + + wlf,micbias1 = <2800 0 1 0 0>; + wlf,micbias2 = <1800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xA101 + 0xA101 + 0xA101 + 0xA101 + 0x8101 + >; + + wlf,gpsw = <0x3>; + wlf,use-jd-gpio; + wlf,jd-gpio-nopull; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <2 1 3 0>; + /* 1st cell:IN1 2rd cell:IN2 3nd cell:IN3 4th cell:IN4 */ + wlf,inmode = <2 0 2 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@1100 { + reg = <0x1100>; + firmware { + EDAC { + wlf,wmfw-file = "edac"; + wlf,bin-file = "edac"; + }; + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@1200 { + reg = <0x1200>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1300 { + reg = <0x1300>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@1400 { + reg = <0x1400>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10227 (-404) 215 (-666) 8429 (-61) 853 (-1154) 11138>; /* Only for YAS532 */ + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + sound { + samsung,audio-routing = + "HDMIL", "AIF1RX1", + "HDMIR", "AIF1RX2", + "HDMI", "HDMIL", + "HDMI", "HDMIR", + "HP", "HPOUT1L", + "HP", "HPOUT1R", + "SPK", "HPOUT2L", + "SPK", "HPOUT2R", + "VPS", "HPOUT2L", + "VPS", "HPOUT2R", + "RCV", "HPOUT3L", + "RCV", "HPOUT3R", + "IN1R", "Main Mic", + "Main Mic", "MICBIAS2", + "Headset Mic", "MICBIAS1", + "IN2R", "Headset Mic", + "Sub Mic", "MICBIAS3", + "IN3L", "Sub Mic", + "Third Mic", "MICBIAS2", + "Third Mic", "MICBIAS3", + "IN3R", "Third Mic", + "VI SENSING", "MICVDD", + "IN4R", "VI SENSING", + "IN4L", "VI SENSING"; + + mixer-paths = "mixer_paths_florida.xml"; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + mic_bias_gpio = <&gpf1 0 0>; + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98504_ctrl: max98504-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98504_i2c: max98504-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + fimc_is_flash_host: fimc-is-flash-host { + samsung,pins = "gpc0-2"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + fimc_is_flash_is: fimc-is-flash-is { + samsung,pins = "gpc0-2"; + samsung,pin-function = <2>; + samsung,pin-pud = <1>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@14870000 { + audio_ctrl: audio-ctl { + samsung,pins ="gpf1-0"; + samsung,pin-con-pdn =<3>; + }; + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + codec_ldoena: codec-ldoena { + samsung,pins ="gpf5-7"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <1>; + }; + }; + + pinctrl@15690000 { + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98504@31 { + compatible = "max98504"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98504_i2c &max98504_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + max98504,rx_mode = <1>; + max98504,tx_mode = <1>; + max98504,cfg_data = <0 0 0 0 0 3 0 2 0 0>; + }; + }; + + hsi2c@13650000{ + max77833@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "VF_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VCC_1.8V_MHL"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + regulator-initial-mode = <1>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + regulator-always-on; + regulator-initial-mode = <3>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VSIL_1.0V"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + lcd_info = <&s6e3ha0_wqhd>; + }; + + s6e3ha0_wqhd: s6e3ha0_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <20>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + fimc_is@14200000 { + pinctrl-names = "default", "release"; + pinctrl-0 = <&fimc_is_mclk0_out &fimc_is_mclk1_out &fimc_is_mclk2_out>; + pinctrl-1 = <>; + }; + + fimc_is_sensor_imx240: fimc-is_sensor_imx240@34 { + pinctrl-names = "pin0", "pin1", "pin2"; + pinctrl-0 = <>; + pinctrl-1 = <&fimc_is_mclk0_out &fimc_is_mclk1_out &fimc_is_i2c0 &fimc_is_i2c2>; + pinctrl-2 = <&fimc_is_mclk0_fn &fimc_is_mclk1_fn &fimc_is_i2c0 &fimc_is_i2c2>; + + flash { + product_name = <5>; /* KTD2692 */ + flash_first_gpio = <2>; + flash_second_gpio = <3>; + }; + }; + + fimc_is_sensor_2p2: fimc-is_sensor_2p2@5A { + pinctrl-names = "pin0", "pin1", "pin2"; + pinctrl-0 = <>; + pinctrl-1 = <&fimc_is_mclk0_out &fimc_is_mclk1_out &fimc_is_i2c0 &fimc_is_i2c2>; + pinctrl-2 = <&fimc_is_mclk0_fn &fimc_is_mclk1_fn &fimc_is_i2c0 &fimc_is_i2c2>; + + flash { + product_name = <5>; /* KTD2692 */ + flash_first_gpio = <2>; + flash_second_gpio = <3>; + }; + }; + + fimc_is_sensor_4e6_c2: fimc-is_sensor_4e6_c2@6A { + pinctrl-names = "pin0", "pin1", "pin2"; + pinctrl-0 = <>; + pinctrl-1 = <&fimc_is_mclk1_out &fimc_is_mclk2_out &fimc_is_i2c0 &fimc_is_i2c1>; + pinctrl-2 = <&fimc_is_mclk1_fn &fimc_is_mclk2_fn &fimc_is_i2c0 &fimc_is_i2c1>; + }; + + leds_ktd2692 { + compatible = "ktd2692"; + flash_control = <&gpc0 2 0x1>; + status = "okay"; + pinctrl-names ="default","host","is"; + pinctrl-0 = <&fimc_is_flash_is>; + pinctrl-1 = <&fimc_is_flash_host>; + pinctrl-2 = <&fimc_is_flash_is>; + }; + + simslot_count { + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_01.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_01.dts new file mode 100644 index 000000000..3a2542535 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_01.dts @@ -0,0 +1,888 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery.dtsi" +#include "exynos7420-zeroflte_gpio_01.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zerolte_mst.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev01 board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <3>; + model_info-hw_rev_end = <3>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r01", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm1840@0 { + compatible = "wlf,wm1840"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_ldoena &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,ldoena = <&gpf5 7 0>; + wlf,init-mic-delay = <30>; + wlf,use-jd-gpio; + wlf,micd-clamp-mode = <0x8>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-moisture-debounce = <40>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <59>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 2 0 + >; + + wlf,micbias1 = <1800 0 1 0 0>; + wlf,micbias2 = <2800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + wlf,micbias4 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xffffffff 0xffffffff /* GPIO1 */ + 0xffffffff 0xffffffff /* GPIO2 */ + 0xffffffff 0xffffffff /* GPIO3 */ + 0xffffffff 0xffffffff /* GPIO4 */ + 0xffffffff 0xffffffff /* GPIO5 */ + 0xffffffff 0xffffffff /* GPIO6 */ + 0xffffffff 0xffffffff /* GPIO7 */ + 0xffffffff 0xffffffff /* GPIO8 */ + 0xffffffff 0xffffffff /* MIF1SCLK / GPIO9 */ + 0xffffffff 0xffffffff /* MIF1SDA / GPIO10 */ + 0xffffffff 0xffffffff /* MIF2SCLK / GPIO11 */ + 0xffffffff 0xffffffff /* MIF2SDA / GPIO12 */ + 0xffffffff 0xffffffff /* MIF3SCLK / GPIO13 */ + 0xffffffff 0xffffffff /* MIF3SDA / GPIO14 */ + 0x00002000 0x00006000 /* AIF1TXDAT / GPIO15 */ + 0x00002000 0x00006000 /* AIF1BCLK / GPIO16 */ + 0x00002000 0x00006000 /* AIF1RXDAT / GPIO17 */ + 0x00002000 0x00006000 /* AIF1LRCLK / GPIO18 */ + 0x00002000 0x00006000 /* AIF2TXDAT / GPIO19 */ + 0x00002000 0x00006000 /* AIF2BCLK / GPIO20 */ + 0x00002000 0x00006000 /* AIF2RXDAT / GPIO21 */ + 0x00002000 0x00006000 /* AIF2LRCLK / GPIO22 */ + 0x00002000 0x00006000 /* AIF3TXDAT / GPIO23 */ + 0x00002000 0x00006000 /* AIF3BCLK / GPIO24 */ + 0x00002000 0x00006000 /* AIF3RXDAT / GPIO25 */ + 0x00002000 0x00006000 /* AIF3LRCLK / GPIO26 */ + 0x00002000 0x00006000 /* AIF4TXDAT / GPIO27 */ + 0x00002000 0x00006000 /* AIF4BCLK / GPIO28 */ + 0x00002000 0x00006000 /* AIF4RXDAT / GPIO29 */ + 0x00002000 0x00006000 /* AIF4LRCLK / GPIO30 */ + 0x00002000 0x0000e000 /* DMICCLK4 / GPIO31 */ + 0x00002000 0x0000e000 /* DMICDAT4 / GPIO32 */ + 0xffffffff 0xffffffff /* DMICCLK5 / GPIO33 */ + 0xffffffff 0xffffffff /* DMICDAT5 / GPIO34 */ + 0xffffffff 0xffffffff /* DMICCLK6 / GPIO35 */ + 0xffffffff 0xffffffff /* DMICDAT6 / GPIO36 */ + 0xffffffff 0xffffffff /* SPKCLK1 / GPIO37 */ + 0xffffffff 0xffffffff /* SPKCLK2 / GPIO38 */ + 0xffffffff 0xffffffff /* SPKDAT1 / GPIO39 */ + 0xffffffff 0xffffffff /* SPKDAT2 / GPIO40 */ + >; + + wlf,gpsw = <0x3>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <1 2 1 0 0 0>; + /* 1st cell:IN1L 2rd cell:IN1R 3nd cell:IN2L 4th cell:IN2R... 12th cell:IN6R */ + wlf,inmode = <2 2 0 0 2 2 2 2 0 0 0 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + DCVDD-supply = <&ldo26_reg>; + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + DBVDD4-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@0FFE00 { + reg = <0x0FFE00>; + firmware { + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@17FE00 { + reg = <0x17FE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1FFE00 { + reg = <0x1FFE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + }; + }; + adsp@27FE00 { + reg = <0x27FE00>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + adsp@37FE00 { + reg = <0x37FE00>; + firmware { + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@2FFE00 { + reg = <0x2FFE00>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10227 (-404) 215 (-666) 8429 (-61) 853 (-1154) 11138>; /* Only for YAS532 */ + ssp-hw-rev = <3>; + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + spi_3: spi@14d50000 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default","ese-pwoff","clk-fix","clk-recover","ese-disable"; + pinctrl-0 = <&spi3_bus>; + pinctrl-1 = <&spi3_ese_pwoff>; + pinctrl-2 = <&spi3_clk_fix>; + pinctrl-3 = <&spi3_clk_recover>; + pinctrl-4 = <&spi3_ese_disable>; + samsung,ese-oberthur; + + ese_spi@0 { + compatible = "ese_p3"; + reg = <0>; + spi-max-frequency = <10000000>; + + gpio-controller; + #gpio-cells = <2>; + + p3-mosipin = <21>; + p3-misopin = <22>; + p3-cspin = <23>; + p3-clkpin = <24>; + p3-cs-gpio = <&gpg4 1 0>; + p3-vdd-1p8= "VDD_1.8V_ESE"; + + controller-data { + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98505_ctrl: max98505-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98505_i2c: max98505-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + codec_ldoena: codec-ldoena { + samsung,pins ="gpf5-7"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <1>; + }; + }; + + pinctrl@15690000 { + sub_pmic_irq: sub-pmic-irq { + samsung,pins ="gpr2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98505@31 { + compatible = "maxim,max98505"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98505_i2c &max98505_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + maxim,platform_type = <0>; + maxim,spk_vol = <0x14>; + maxim,sysclk = <12288000>; + }; + }; + + hsi2c@13650000{ + max77843@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VDD20_1P8_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VDD_1.2V_CODEC"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; + }; + }; + + hsi2c@13670000 { + max77838@60 { + status = "disabled"; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + /delete-node/ s2mpb01_pmic@59; + + s2mpb02@59 { + compatible = "samsung,s2mpb02"; + reg = <0x59>; + + s2mpb02,irq-gpio = <&gpr2 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&sub_pmic_irq>; + + regulators { + _buck1_reg: s2mpb02-buck1 { + regulator-name = "VDD_1P6_DDR"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + }; + + _buck2_reg: s2mpb02-buck2 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: s2mpb02-ldo1 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo2_reg: s2mpb02-ldo2 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo3_reg: s2mpb02-ldo3 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo4_reg: s2mpb02-ldo4 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo5_reg: s2mpb02-ldo5 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo6_reg: s2mpb02-ldo6 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: s2mpb02-ldo7 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: s2mpb02-ldo8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: s2mpb02-ldo9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: s2mpb02-ldo10 { + regulator-name = "VCC_DISPLAY_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo11_reg: s2mpb02-ldo11 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2950000>; + }; + + _ldo12_reg: s2mpb02-ldo12 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo13_reg: s2mpb02-ldo13 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo14_reg: s2mpb02-ldo14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: s2mpb02-ldo15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo16_reg: s2mpb02-ldo16 { + regulator-name = "VCC_3.0V_LCD"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo17_reg: s2mpb02-ldo17 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + }; + + torch { + status = "okay"; + leds1 { + ledname = "leds-sec1"; + /* S2MPB02_FLASH_LED_1 */ + id = <0>; + /* S2MPB02_FLASH_CURRENT */ + brightness = <0xF>; + /* S2MPB02_FLASH_TIMEOUT */ + timeout = <0x3>; + }; + + leds2 { + ledname = "torch-sec1"; + /* S2MPB02_TORCH_LED_1 */ + id = <1>; + /* S2MPB02_TORCH_CURRENT */ + brightness = <0x9>; + /* S2MPB02_TORCH_TIMEOUT */ + timeout = <0xF>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + sub_det: sub-det { + samsung,pins = "gpa3-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq","sub_det"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + pinctrl-2 = <&sub_det>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,sub-det = <&gpa3 0 0>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + regulator_16V = "VDD_1P6_DDR"; + lcd_info = <&s6e3ha2_wqhd>; + }; + + s6e3ha2_wqhd: s6e3ha2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <16>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + + simslot_count { + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_02.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_02.dts new file mode 100644 index 000000000..f109c9095 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_02.dts @@ -0,0 +1,887 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery_02.dtsi" +#include "exynos7420-zeroflte_gpio_02.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zerolte_mst.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev02 board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <5>; + model_info-hw_rev_end = <5>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r02", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm1840@0 { + compatible = "wlf,wm1840"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,init-mic-delay = <30>; + wlf,use-jd-gpio; + wlf,micd-clamp-mode = <0x8>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-moisture-debounce = <40>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <33>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 2 0 + >; + + wlf,micbias1 = <1800 0 1 0 0>; + wlf,micbias2 = <2800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + wlf,micbias4 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xffffffff 0xffffffff /* GPIO1 */ + 0xffffffff 0xffffffff /* GPIO2 */ + 0xffffffff 0xffffffff /* GPIO3 */ + 0xffffffff 0xffffffff /* GPIO4 */ + 0xffffffff 0xffffffff /* GPIO5 */ + 0xffffffff 0xffffffff /* GPIO6 */ + 0xffffffff 0xffffffff /* GPIO7 */ + 0xffffffff 0xffffffff /* GPIO8 */ + 0xffffffff 0xffffffff /* MIF1SCLK / GPIO9 */ + 0xffffffff 0xffffffff /* MIF1SDA / GPIO10 */ + 0xffffffff 0xffffffff /* MIF2SCLK / GPIO11 */ + 0xffffffff 0xffffffff /* MIF2SDA / GPIO12 */ + 0xffffffff 0xffffffff /* MIF3SCLK / GPIO13 */ + 0xffffffff 0xffffffff /* MIF3SDA / GPIO14 */ + 0x00002000 0x00006000 /* AIF1TXDAT / GPIO15 */ + 0x00002000 0x00006000 /* AIF1BCLK / GPIO16 */ + 0x00002000 0x00006000 /* AIF1RXDAT / GPIO17 */ + 0x00002000 0x00006000 /* AIF1LRCLK / GPIO18 */ + 0x00002000 0x00006000 /* AIF2TXDAT / GPIO19 */ + 0x00002000 0x00006000 /* AIF2BCLK / GPIO20 */ + 0x00002000 0x00006000 /* AIF2RXDAT / GPIO21 */ + 0x00002000 0x00006000 /* AIF2LRCLK / GPIO22 */ + 0x00002000 0x00006000 /* AIF3TXDAT / GPIO23 */ + 0x00002000 0x00006000 /* AIF3BCLK / GPIO24 */ + 0x00002000 0x00006000 /* AIF3RXDAT / GPIO25 */ + 0x00002000 0x00006000 /* AIF3LRCLK / GPIO26 */ + 0x00002000 0x00006000 /* AIF4TXDAT / GPIO27 */ + 0x00002000 0x00006000 /* AIF4BCLK / GPIO28 */ + 0x00002000 0x00006000 /* AIF4RXDAT / GPIO29 */ + 0x00002000 0x00006000 /* AIF4LRCLK / GPIO30 */ + 0x00002000 0x0000e000 /* DMICCLK4 / GPIO31 */ + 0x00002000 0x0000e000 /* DMICDAT4 / GPIO32 */ + 0xffffffff 0xffffffff /* DMICCLK5 / GPIO33 */ + 0xffffffff 0xffffffff /* DMICDAT5 / GPIO34 */ + 0xffffffff 0xffffffff /* DMICCLK6 / GPIO35 */ + 0xffffffff 0xffffffff /* DMICDAT6 / GPIO36 */ + 0xffffffff 0xffffffff /* SPKCLK1 / GPIO37 */ + 0xffffffff 0xffffffff /* SPKCLK2 / GPIO38 */ + 0xffffffff 0xffffffff /* SPKDAT1 / GPIO39 */ + 0xffffffff 0xffffffff /* SPKDAT2 / GPIO40 */ + >; + + wlf,gpsw = <0x3>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <1 2 1 0 0 0>; + /* 1st cell:IN1L 2rd cell:IN1R 3nd cell:IN2L 4th cell:IN2R... 12th cell:IN6R */ + wlf,inmode = <2 2 0 0 2 2 2 2 0 0 0 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + DCVDD-supply = <&ldo26_reg>; + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + DBVDD4-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@0FFE00 { + reg = <0x0FFE00>; + firmware { + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@17FE00 { + reg = <0x17FE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1FFE00 { + reg = <0x1FFE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + }; + }; + adsp@27FE00 { + reg = <0x27FE00>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + adsp@37FE00 { + reg = <0x37FE00>; + firmware { + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@2FFE00 { + reg = <0x2FFE00>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10227 (-404) 215 (-666) 8429 (-61) 853 (-1154) 11138>; /* Only for YAS532 */ + ssp-hw-rev = <3>; + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + spi_3: spi@14d50000 { + spiclk-pindev-name = "14c90000.pinctrl"; + spiclk-pin-name = "gpg4-0"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default","ese-pwoff","clk-fix","clk-recover","ese-disable"; + pinctrl-0 = <&spi3_bus>; + pinctrl-1 = <&spi3_ese_pwoff>; + pinctrl-2 = <&spi3_clk_fix>; + pinctrl-3 = <&spi3_clk_recover>; + pinctrl-4 = <&spi3_ese_disable>; + samsung,ese-oberthur; + + ese_spi@0 { + compatible = "ese_p3"; + reg = <0>; + spi-max-frequency = <10000000>; + + gpio-controller; + #gpio-cells = <2>; + + p3-mosipin = <21>; + p3-misopin = <22>; + p3-cspin = <23>; + p3-clkpin = <24>; + p3-cs-gpio = <&gpg4 1 0>; + p3-vdd-1p8= "VDD_1.8V_ESE"; + + controller-data { + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98505_ctrl: max98505-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98505_i2c: max98505-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + }; + + pinctrl@15690000 { + sub_pmic_irq: sub-pmic-irq { + samsung,pins ="gpr2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98505@31 { + compatible = "maxim,max98505"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98505_i2c &max98505_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + maxim,platform_type = <0>; + maxim,spk_vol = <0x14>; + maxim,sysclk = <12288000>; + }; + }; + + hsi2c@13650000{ + max77843@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VDD20_1P8_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VDD_1.2V_CODEC"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; + }; + }; + + hsi2c@13670000 { + max77838@60 { + status = "disabled"; + }; + }; + + hsi2c@14E00000 { + sec-nfc@27 { + sec-nfc,i2c_1p8 = "VDD20_1P8_AP"; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + /delete-node/ s2mpb01_pmic@59; + + s2mpb02@59 { + compatible = "samsung,s2mpb02"; + reg = <0x59>; + + s2mpb02,irq-gpio = <&gpr2 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&sub_pmic_irq>; + + regulators { + _buck1_reg: s2mpb02-buck1 { + regulator-name = "VDD_1P6_DDR"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + }; + + _buck2_reg: s2mpb02-buck2 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: s2mpb02-ldo1 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo2_reg: s2mpb02-ldo2 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo3_reg: s2mpb02-ldo3 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo4_reg: s2mpb02-ldo4 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo5_reg: s2mpb02-ldo5 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo6_reg: s2mpb02-ldo6 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: s2mpb02-ldo7 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: s2mpb02-ldo8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: s2mpb02-ldo9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: s2mpb02-ldo10 { + regulator-name = "VCC_DISPLAY_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo11_reg: s2mpb02-ldo11 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2950000>; + }; + + _ldo12_reg: s2mpb02-ldo12 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo13_reg: s2mpb02-ldo13 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo14_reg: s2mpb02-ldo14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: s2mpb02-ldo15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo16_reg: s2mpb02-ldo16 { + regulator-name = "VCC_3.0V_LCD"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo17_reg: s2mpb02-ldo17 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + }; + + torch { + status = "okay"; + leds1 { + ledname = "leds-sec1"; + /* S2MPB02_FLASH_LED_1 */ + id = <0>; + /* S2MPB02_FLASH_CURRENT */ + brightness = <0xF>; + /* S2MPB02_FLASH_TIMEOUT */ + timeout = <0x3>; + }; + + leds2 { + ledname = "torch-sec1"; + /* S2MPB02_TORCH_LED_1 */ + id = <1>; + /* S2MPB02_TORCH_CURRENT */ + brightness = <0x9>; + /* S2MPB02_TORCH_TIMEOUT */ + timeout = <0xF>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + sub_det: sub-det { + samsung,pins = "gpa3-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq","sub_det"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + pinctrl-2 = <&sub_det>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,sub-det = <&gpa3 0 0>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + regulator_16V = "VDD_1P6_DDR"; + lcd_info = <&s6e3ha2_wqhd>; + }; + + s6e3ha2_wqhd: s6e3ha2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <16>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + simslot_count { + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_03.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_03.dts new file mode 100644 index 000000000..bd23bc614 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_03.dts @@ -0,0 +1,897 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery_02.dtsi" +#include "exynos7420-zeroflte_gpio_03.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zerolte_mst.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev03,rev04(0110) board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <6>; + model_info-hw_rev_end = <6>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r03", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm1840@0 { + compatible = "wlf,wm1840"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,init-mic-delay = <30>; + wlf,use-jd-gpio; + wlf,micd-clamp-mode = <0x8>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-moisture-debounce = <40>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <33>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 2 0 + >; + + wlf,micbias1 = <1800 0 1 0 0>; + wlf,micbias2 = <2800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + wlf,micbias4 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xffffffff 0xffffffff /* GPIO1 */ + 0xffffffff 0xffffffff /* GPIO2 */ + 0xffffffff 0xffffffff /* GPIO3 */ + 0xffffffff 0xffffffff /* GPIO4 */ + 0xffffffff 0xffffffff /* GPIO5 */ + 0xffffffff 0xffffffff /* GPIO6 */ + 0xffffffff 0xffffffff /* GPIO7 */ + 0xffffffff 0xffffffff /* GPIO8 */ + 0xffffffff 0xffffffff /* MIF1SCLK / GPIO9 */ + 0xffffffff 0xffffffff /* MIF1SDA / GPIO10 */ + 0xffffffff 0xffffffff /* MIF2SCLK / GPIO11 */ + 0xffffffff 0xffffffff /* MIF2SDA / GPIO12 */ + 0xffffffff 0xffffffff /* MIF3SCLK / GPIO13 */ + 0xffffffff 0xffffffff /* MIF3SDA / GPIO14 */ + 0x00002000 0x00006000 /* AIF1TXDAT / GPIO15 */ + 0x00002000 0x00006000 /* AIF1BCLK / GPIO16 */ + 0x00002000 0x00006000 /* AIF1RXDAT / GPIO17 */ + 0x00002000 0x00006000 /* AIF1LRCLK / GPIO18 */ + 0x00002000 0x00006000 /* AIF2TXDAT / GPIO19 */ + 0x00002000 0x00006000 /* AIF2BCLK / GPIO20 */ + 0x00002000 0x00006000 /* AIF2RXDAT / GPIO21 */ + 0x00002000 0x00006000 /* AIF2LRCLK / GPIO22 */ + 0x00002000 0x00006000 /* AIF3TXDAT / GPIO23 */ + 0x00002000 0x00006000 /* AIF3BCLK / GPIO24 */ + 0x00002000 0x00006000 /* AIF3RXDAT / GPIO25 */ + 0x00002000 0x00006000 /* AIF3LRCLK / GPIO26 */ + 0x00002000 0x00006000 /* AIF4TXDAT / GPIO27 */ + 0x00002000 0x00006000 /* AIF4BCLK / GPIO28 */ + 0x00002000 0x00006000 /* AIF4RXDAT / GPIO29 */ + 0x00002000 0x00006000 /* AIF4LRCLK / GPIO30 */ + 0x00002000 0x0000e000 /* DMICCLK4 / GPIO31 */ + 0x00002000 0x0000e000 /* DMICDAT4 / GPIO32 */ + 0xffffffff 0xffffffff /* DMICCLK5 / GPIO33 */ + 0xffffffff 0xffffffff /* DMICDAT5 / GPIO34 */ + 0xffffffff 0xffffffff /* DMICCLK6 / GPIO35 */ + 0xffffffff 0xffffffff /* DMICDAT6 / GPIO36 */ + 0xffffffff 0xffffffff /* SPKCLK1 / GPIO37 */ + 0xffffffff 0xffffffff /* SPKCLK2 / GPIO38 */ + 0xffffffff 0xffffffff /* SPKDAT1 / GPIO39 */ + 0xffffffff 0xffffffff /* SPKDAT2 / GPIO40 */ + >; + + wlf,gpsw = <0x3>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <1 2 1 0 0 0>; + /* 1st cell:IN1L 2rd cell:IN1R 3nd cell:IN2L 4th cell:IN2R... 12th cell:IN6R */ + wlf,inmode = <2 2 0 0 2 2 2 2 0 0 0 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + DCVDD-supply = <&ldo26_reg>; + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + DBVDD4-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@0FFE00 { + reg = <0x0FFE00>; + firmware { + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@17FE00 { + reg = <0x17FE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1FFE00 { + reg = <0x1FFE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + }; + }; + adsp@27FE00 { + reg = <0x27FE00>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + adsp@37FE00 { + reg = <0x37FE00>; + firmware { + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@2FFE00 { + reg = <0x2FFE00>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10227 (-404) 215 (-666) 8429 (-61) 853 (-1154) 11138>; /* Only for YAS532 */ + ssp-hw-rev = <3>; + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + spi_3: spi@14d50000 { + spiclk-pindev-name = "14c90000.pinctrl"; + spiclk-pin-name = "gpg4-0"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default","ese-pwoff","clk-fix","clk-recover","ese-disable"; + pinctrl-0 = <&spi3_bus>; + pinctrl-1 = <&spi3_ese_pwoff>; + pinctrl-2 = <&spi3_clk_fix>; + pinctrl-3 = <&spi3_clk_recover>; + pinctrl-4 = <&spi3_ese_disable>; + samsung,ese-oberthur; + + ese_spi@0 { + compatible = "ese_p3"; + reg = <0>; + spi-max-frequency = <10000000>; + + gpio-controller; + #gpio-cells = <2>; + + p3-mosipin = <21>; + p3-misopin = <22>; + p3-cspin = <23>; + p3-clkpin = <24>; + p3-cs-gpio = <&gpg4 1 0>; + p3-vdd-1p8= "VDD_1.8V_ESE"; + + controller-data { + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98505_ctrl: max98505-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98505_i2c: max98505-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + }; + + pinctrl@15690000 { + sub_pmic_irq: sub-pmic-irq { + samsung,pins ="gpr2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98505@31 { + compatible = "maxim,max98505"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98505_i2c &max98505_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + maxim,platform_type = <0>; + maxim,spk_vol = <0x14>; + maxim,sysclk = <12288000>; + }; + }; + + hsi2c@13650000{ + max77843@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VDD20_1P8_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VDD_1.2V_CODEC"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; + }; + }; + + hsi2c@13670000 { + max77838@60 { + status = "disabled"; + }; + }; + + hsi2c@14E00000 { + sec-nfc@27 { + sec-nfc,i2c_1p8 = "VDD20_1P8_AP"; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + /delete-node/ s2mpb01_pmic@59; + + s2mpb02@59 { + compatible = "samsung,s2mpb02"; + reg = <0x59>; + + s2mpb02,irq-gpio = <&gpr2 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&sub_pmic_irq>; + + regulators { + _buck1_reg: s2mpb02-buck1 { + regulator-name = "VDD_1P6_DDR"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + }; + + _buck2_reg: s2mpb02-buck2 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: s2mpb02-ldo1 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo2_reg: s2mpb02-ldo2 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo3_reg: s2mpb02-ldo3 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo4_reg: s2mpb02-ldo4 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo5_reg: s2mpb02-ldo5 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo6_reg: s2mpb02-ldo6 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: s2mpb02-ldo7 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: s2mpb02-ldo8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: s2mpb02-ldo9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: s2mpb02-ldo10 { + regulator-name = "VCC_DISPLAY_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo11_reg: s2mpb02-ldo11 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2950000>; + }; + + _ldo12_reg: s2mpb02-ldo12 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo13_reg: s2mpb02-ldo13 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo14_reg: s2mpb02-ldo14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: s2mpb02-ldo15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo16_reg: s2mpb02-ldo16 { + regulator-name = "VCC_3.0V_LCD"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo17_reg: s2mpb02-ldo17 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + }; + + torch { + status = "okay"; + leds1 { + ledname = "leds-sec1"; + /* S2MPB02_FLASH_LED_1 */ + id = <0>; + /* S2MPB02_FLASH_CURRENT */ + brightness = <0xF>; + /* S2MPB02_FLASH_TIMEOUT */ + timeout = <0x3>; + }; + + leds2 { + ledname = "torch-sec1"; + /* S2MPB02_TORCH_LED_1 */ + id = <1>; + /* S2MPB02_TORCH_CURRENT */ + brightness = <0x9>; + /* S2MPB02_TORCH_TIMEOUT */ + timeout = <0xF>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + sub_det: sub-det { + samsung,pins = "gpa3-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + pcie_clkreq_l: pcie_clkreq_l { + samsung,pins = "gpa3-5"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pcie1@157B0000 { + pinctrl-0 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset_clear &cfg_wlanen &wlan_host_wake &pcie_eint>; + pinctrl-1 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset &cfg_wlanen &wlan_host_wake &pcie_eint>; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq","sub_det"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + pinctrl-2 = <&sub_det>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,sub-det = <&gpa3 0 0>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + regulator_16V = "VDD_1P6_DDR"; + lcd_info = <&s6e3ha2_wqhd>; + }; + + s6e3ha2_wqhd: s6e3ha2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <16>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + simslot_count { + status = "disabled"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_04.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_04.dts new file mode 100644 index 000000000..3467aa2d2 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_04.dts @@ -0,0 +1,897 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery_02.dtsi" +#include "exynos7420-zeroflte_gpio_04.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zerolte_mst.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev04(0111) board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <7>; + model_info-hw_rev_end = <7>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r04", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm1840@0 { + compatible = "wlf,wm1840"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,init-mic-delay = <30>; + wlf,use-jd-gpio; + wlf,micd-clamp-mode = <0x8>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-moisture-debounce = <40>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <33>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 2 0 + >; + + wlf,micbias1 = <1800 0 1 0 0>; + wlf,micbias2 = <2800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + wlf,micbias4 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xffffffff 0xffffffff /* GPIO1 */ + 0xffffffff 0xffffffff /* GPIO2 */ + 0xffffffff 0xffffffff /* GPIO3 */ + 0xffffffff 0xffffffff /* GPIO4 */ + 0xffffffff 0xffffffff /* GPIO5 */ + 0xffffffff 0xffffffff /* GPIO6 */ + 0xffffffff 0xffffffff /* GPIO7 */ + 0xffffffff 0xffffffff /* GPIO8 */ + 0xffffffff 0xffffffff /* MIF1SCLK / GPIO9 */ + 0xffffffff 0xffffffff /* MIF1SDA / GPIO10 */ + 0xffffffff 0xffffffff /* MIF2SCLK / GPIO11 */ + 0xffffffff 0xffffffff /* MIF2SDA / GPIO12 */ + 0xffffffff 0xffffffff /* MIF3SCLK / GPIO13 */ + 0xffffffff 0xffffffff /* MIF3SDA / GPIO14 */ + 0x00002000 0x00006000 /* AIF1TXDAT / GPIO15 */ + 0x00002000 0x00006000 /* AIF1BCLK / GPIO16 */ + 0x00002000 0x00006000 /* AIF1RXDAT / GPIO17 */ + 0x00002000 0x00006000 /* AIF1LRCLK / GPIO18 */ + 0x00002000 0x00006000 /* AIF2TXDAT / GPIO19 */ + 0x00002000 0x00006000 /* AIF2BCLK / GPIO20 */ + 0x00002000 0x00006000 /* AIF2RXDAT / GPIO21 */ + 0x00002000 0x00006000 /* AIF2LRCLK / GPIO22 */ + 0x00002000 0x00006000 /* AIF3TXDAT / GPIO23 */ + 0x00002000 0x00006000 /* AIF3BCLK / GPIO24 */ + 0x00002000 0x00006000 /* AIF3RXDAT / GPIO25 */ + 0x00002000 0x00006000 /* AIF3LRCLK / GPIO26 */ + 0x00002000 0x00006000 /* AIF4TXDAT / GPIO27 */ + 0x00002000 0x00006000 /* AIF4BCLK / GPIO28 */ + 0x00002000 0x00006000 /* AIF4RXDAT / GPIO29 */ + 0x00002000 0x00006000 /* AIF4LRCLK / GPIO30 */ + 0x00002000 0x0000e000 /* DMICCLK4 / GPIO31 */ + 0x00002000 0x0000e000 /* DMICDAT4 / GPIO32 */ + 0xffffffff 0xffffffff /* DMICCLK5 / GPIO33 */ + 0xffffffff 0xffffffff /* DMICDAT5 / GPIO34 */ + 0xffffffff 0xffffffff /* DMICCLK6 / GPIO35 */ + 0xffffffff 0xffffffff /* DMICDAT6 / GPIO36 */ + 0xffffffff 0xffffffff /* SPKCLK1 / GPIO37 */ + 0xffffffff 0xffffffff /* SPKCLK2 / GPIO38 */ + 0xffffffff 0xffffffff /* SPKDAT1 / GPIO39 */ + 0xffffffff 0xffffffff /* SPKDAT2 / GPIO40 */ + >; + + wlf,gpsw = <0x3>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <1 2 1 0 0 0>; + /* 1st cell:IN1L 2rd cell:IN1R 3nd cell:IN2L 4th cell:IN2R... 12th cell:IN6R */ + wlf,inmode = <2 2 0 0 2 2 2 2 0 0 0 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + DCVDD-supply = <&ldo26_reg>; + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + DBVDD4-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@0FFE00 { + reg = <0x0FFE00>; + firmware { + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@17FE00 { + reg = <0x17FE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1FFE00 { + reg = <0x1FFE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + }; + }; + adsp@27FE00 { + reg = <0x27FE00>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + adsp@37FE00 { + reg = <0x37FE00>; + firmware { + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@2FFE00 { + reg = <0x2FFE00>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10227 (-404) 215 (-666) 8429 (-61) 853 (-1154) 11138>; /* Only for YAS532 */ + ssp-hw-rev = <3>; + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + spi_3: spi@14d50000 { + spiclk-pindev-name = "14c90000.pinctrl"; + spiclk-pin-name = "gpg4-0"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default","ese-pwoff","clk-fix","clk-recover","ese-disable"; + pinctrl-0 = <&spi3_bus>; + pinctrl-1 = <&spi3_ese_pwoff>; + pinctrl-2 = <&spi3_clk_fix>; + pinctrl-3 = <&spi3_clk_recover>; + pinctrl-4 = <&spi3_ese_disable>; + samsung,ese-oberthur; + + ese_spi@0 { + compatible = "ese_p3"; + reg = <0>; + spi-max-frequency = <10000000>; + + gpio-controller; + #gpio-cells = <2>; + + p3-mosipin = <21>; + p3-misopin = <22>; + p3-cspin = <23>; + p3-clkpin = <24>; + p3-cs-gpio = <&gpg4 1 0>; + p3-vdd-1p8= "VDD_1.8V_ESE"; + + controller-data { + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98505_ctrl: max98505-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98505_i2c: max98505-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + }; + + pinctrl@15690000 { + sub_pmic_irq: sub-pmic-irq { + samsung,pins ="gpr2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98505@31 { + compatible = "maxim,max98505"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98505_i2c &max98505_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + maxim,platform_type = <0>; + maxim,spk_vol = <0x14>; + maxim,sysclk = <12288000>; + }; + }; + + hsi2c@13650000{ + max77843@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VDD20_1P8_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VDD_1.2V_CODEC"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; + }; + }; + + hsi2c@13670000 { + max77838@60 { + status = "disabled"; + }; + }; + + hsi2c@14E00000 { + sec-nfc@27 { + sec-nfc,i2c_1p8 = "VDD20_1P8_AP"; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + /delete-node/ s2mpb01_pmic@59; + + s2mpb02@59 { + compatible = "samsung,s2mpb02"; + reg = <0x59>; + + s2mpb02,irq-gpio = <&gpr2 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&sub_pmic_irq>; + + regulators { + _buck1_reg: s2mpb02-buck1 { + regulator-name = "VDD_1P6_DDR"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + }; + + _buck2_reg: s2mpb02-buck2 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: s2mpb02-ldo1 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo2_reg: s2mpb02-ldo2 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo3_reg: s2mpb02-ldo3 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo4_reg: s2mpb02-ldo4 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo5_reg: s2mpb02-ldo5 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo6_reg: s2mpb02-ldo6 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: s2mpb02-ldo7 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: s2mpb02-ldo8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: s2mpb02-ldo9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: s2mpb02-ldo10 { + regulator-name = "VCC_DISPLAY_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo11_reg: s2mpb02-ldo11 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2950000>; + }; + + _ldo12_reg: s2mpb02-ldo12 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo13_reg: s2mpb02-ldo13 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo14_reg: s2mpb02-ldo14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: s2mpb02-ldo15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo16_reg: s2mpb02-ldo16 { + regulator-name = "VCC_3.0V_LCD"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo17_reg: s2mpb02-ldo17 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + }; + + torch { + status = "okay"; + leds1 { + ledname = "leds-sec1"; + /* S2MPB02_FLASH_LED_1 */ + id = <0>; + /* S2MPB02_FLASH_CURRENT */ + brightness = <0xF>; + /* S2MPB02_FLASH_TIMEOUT */ + timeout = <0x3>; + }; + + leds2 { + ledname = "torch-sec1"; + /* S2MPB02_TORCH_LED_1 */ + id = <1>; + /* S2MPB02_TORCH_CURRENT */ + brightness = <0x9>; + /* S2MPB02_TORCH_TIMEOUT */ + timeout = <0xF>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + sub_det: sub-det { + samsung,pins = "gpa3-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + pcie_clkreq_l: pcie_clkreq_l { + samsung,pins = "gpa3-5"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pcie1@157B0000 { + pinctrl-0 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset_clear &cfg_wlanen &wlan_host_wake &pcie_eint>; + pinctrl-1 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset &cfg_wlanen &wlan_host_wake &pcie_eint>; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq","sub_det"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + pinctrl-2 = <&sub_det>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,sub-det = <&gpa3 0 0>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + regulator_16V = "VDD_1P6_DDR"; + lcd_info = <&s6e3ha2_wqhd>; + }; + + s6e3ha2_wqhd: s6e3ha2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <16>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + simslot_count { + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_05.dts b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_05.dts new file mode 100644 index 000000000..1350d44fd --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_eur_open_05.dts @@ -0,0 +1,898 @@ +/* + * SAMSUNG UNIVERSAL7420 board device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/dts-v1/; +#include "exynos7420-zero_common.dtsi" +#include "exynos7420-zeroflte_battery_05.dtsi" +#include "exynos7420-zeroflte_gpio_05.dtsi" +#include "exynos7420-zerolte_modem-shannon_ds.dtsi" +#include "exynos7420-zerolte_fingerprint-sensor_00.dtsi" +#include "exynos7420-zeroflte_motor.dtsi" +#include "exynos7420-zeroflte_svcled.dtsi" +#include "exynos7420-zerolte_mst.dtsi" + +/ { + model = "Samsung ZERO-F LTE EUR rev05 board based on Exynos7420(EVT1), mPOP"; + model_info-chip = <7420>; + model_info-platform = "android"; + model_info-subtype = "samsung"; + model_info-hw_rev = <8>; + model_info-hw_rev_end = <9>; + compatible = "samsung,ZERO-F LTE EUR EVT1 mPOP,r05", "samsung,exynos7420"; + + spi_0: spi@14d20000 { + /delete-property/ dma-mode; + /delete-property/ dmas; + /delete-property/ dma-names; + + num-cs = <1>; + status = "okay"; + + audio_codec: wm1840@0 { + compatible = "wlf,wm1840"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupts = <5 0 0>; + interrupt-parent = <&gpa2>; + + gpio-controller; + #gpio-cells = <2>; + + pinctrl-names ="default"; + pinctrl-0 = <&codec_reset &codec_irq>; + + wlf,reset = <&gpf4 0 0>; + wlf,init-mic-delay = <30>; + wlf,use-jd-gpio; + wlf,micd-clamp-mode = <0x8>; + wlf,micd-detect-debounce = <300>; + wlf,micd-pol-gpio = <0>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-timeout = <1000>; + wlf,micd-force-micbias; + wlf,hpdet-moisture-imp = <2000>; + wlf,hpdet-moisture-debounce = <40>; + wlf,hpdet-channel = <1>; + wlf,hpdet-ext-res = <33>; + wlf,hpdet-short-circuit-imp = <3>; + wlf,micd-ranges = < + 116 226 + 173 582 + 321 115 + 752 114 + 1257 217 + >; + wlf,hs-mic = <3>; + wlf,micd-configs = < + 0x0 2 0 + >; + + wlf,micbias1 = <1800 0 1 0 0>; + wlf,micbias2 = <2800 0 1 0 0>; + wlf,micbias3 = <1800 0 1 0 0>; + wlf,micbias4 = <1800 0 1 0 0>; + + wlf,gpio-defaults = < + 0xffffffff 0xffffffff /* GPIO1 */ + 0xffffffff 0xffffffff /* GPIO2 */ + 0xffffffff 0xffffffff /* GPIO3 */ + 0xffffffff 0xffffffff /* GPIO4 */ + 0xffffffff 0xffffffff /* GPIO5 */ + 0xffffffff 0xffffffff /* GPIO6 */ + 0xffffffff 0xffffffff /* GPIO7 */ + 0xffffffff 0xffffffff /* GPIO8 */ + 0xffffffff 0xffffffff /* MIF1SCLK / GPIO9 */ + 0xffffffff 0xffffffff /* MIF1SDA / GPIO10 */ + 0xffffffff 0xffffffff /* MIF2SCLK / GPIO11 */ + 0xffffffff 0xffffffff /* MIF2SDA / GPIO12 */ + 0xffffffff 0xffffffff /* MIF3SCLK / GPIO13 */ + 0xffffffff 0xffffffff /* MIF3SDA / GPIO14 */ + 0x00002000 0x00006000 /* AIF1TXDAT / GPIO15 */ + 0x00002000 0x00006000 /* AIF1BCLK / GPIO16 */ + 0x00002000 0x00006000 /* AIF1RXDAT / GPIO17 */ + 0x00002000 0x00006000 /* AIF1LRCLK / GPIO18 */ + 0x00002000 0x00006000 /* AIF2TXDAT / GPIO19 */ + 0x00002000 0x00006000 /* AIF2BCLK / GPIO20 */ + 0x00002000 0x00006000 /* AIF2RXDAT / GPIO21 */ + 0x00002000 0x00006000 /* AIF2LRCLK / GPIO22 */ + 0x00002000 0x00006000 /* AIF3TXDAT / GPIO23 */ + 0x00002000 0x00006000 /* AIF3BCLK / GPIO24 */ + 0x00002000 0x00006000 /* AIF3RXDAT / GPIO25 */ + 0x00002000 0x00006000 /* AIF3LRCLK / GPIO26 */ + 0x00002000 0x00006000 /* AIF4TXDAT / GPIO27 */ + 0x00002000 0x00006000 /* AIF4BCLK / GPIO28 */ + 0x00002000 0x00006000 /* AIF4RXDAT / GPIO29 */ + 0x00002000 0x00006000 /* AIF4LRCLK / GPIO30 */ + 0x00002000 0x0000e000 /* DMICCLK4 / GPIO31 */ + 0x00002000 0x0000e000 /* DMICDAT4 / GPIO32 */ + 0xffffffff 0xffffffff /* DMICCLK5 / GPIO33 */ + 0xffffffff 0xffffffff /* DMICDAT5 / GPIO34 */ + 0xffffffff 0xffffffff /* DMICCLK6 / GPIO35 */ + 0xffffffff 0xffffffff /* DMICDAT6 / GPIO36 */ + 0xffffffff 0xffffffff /* SPKCLK1 / GPIO37 */ + 0xffffffff 0xffffffff /* SPKCLK2 / GPIO38 */ + 0xffffffff 0xffffffff /* SPKDAT1 / GPIO39 */ + 0xffffffff 0xffffffff /* SPKDAT2 / GPIO40 */ + >; + + wlf,gpsw = <0x3>; + wlf,micd-software-compare; + wlf,micd-open-circuit-declare = <1>; + wlf,jd-wake-time = <5000>; + + wlf,max-channels-clocked = <2 0 0 0>; + /* 0:MICVDD 1:MICBIAS1 2:MICBIAS2 3:MICBIAS3 */ + wlf,dmic-ref = <1 2 1 0 0 0>; + /* 1st cell:IN1L 2rd cell:IN1R 3nd cell:IN2L 4th cell:IN2R... 12th cell:IN6R */ + wlf,inmode = <2 2 0 0 2 2 2 2 0 0 0 0>; + /* 1st cell:OUT1 2nd cell:OUT2 3rd cell:OUT3... 6th cell:OUT6 */ + wlf,out-mono = <0 1 1 0 0 0>; + + wlf,rev-specific-fw; + + DCVDD-supply = <&ldo26_reg>; + AVDD-supply = <&ldo16_reg>; + LDOVDD-supply = <&ldo16_reg>; + DBVDD1-supply = <&ldo16_reg>; + + CPVDD-supply = <&ldo16_reg>; + DBVDD2-supply = <&ldo16_reg>; + DBVDD3-supply = <&ldo16_reg>; + DBVDD4-supply = <&ldo16_reg>; + SPKVDDL-supply = <&ldo16_reg>; + SPKVDDR-supply = <&ldo16_reg>; + + adsps { + #address-cells = <1>; + #size-cells = <0>; + + adsp@0FFE00 { + reg = <0x0FFE00>; + firmware { + TRACE { + wlf,wmfw-file = "trace"; + wlf,bin-file = "None"; + wlf,compr-caps = <1 8 0x4 1 8000 16000 24000>; + }; + }; + }; + adsp@17FE00 { + reg = <0x17FE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "None"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "None"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "None"; + }; + TX_FB_MEETING { + wlf,wmfw-file = "tx-fb-meeting"; + wlf,bin-file = "tx-fb-meeting"; + }; + }; + }; + adsp@1FFE00 { + reg = <0x1FFE00>; + firmware { + TX_NB { + wlf,wmfw-file = "tx-nb"; + wlf,bin-file = "tx-nb"; + }; + TX_WB { + wlf,wmfw-file = "tx-wb"; + wlf,bin-file = "tx-wb"; + }; + TX_SWB_INTERVIEW { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-interview"; + }; + TX_SWB_CONVERSATION { + wlf,wmfw-file = "tx-swb"; + wlf,bin-file = "tx-swb-conversation"; + }; + TX_WB_MEETING { + wlf,wmfw-file = "tx-wb-meeting"; + wlf,bin-file = "tx-wb-meeting"; + }; + }; + }; + adsp@27FE00 { + reg = <0x27FE00>; + firmware { + RX_NB { + wlf,wmfw-file = "rx-anc-nb"; + wlf,bin-file = "rx-anc-nb"; + }; + RX_WB { + wlf,wmfw-file = "rx-anc-wb"; + wlf,bin-file = "rx-anc-wb"; + }; + }; + }; + adsp@37FE00 { + reg = <0x37FE00>; + firmware { + VOICECONTROL { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "ez2-control"; + wlf,compr-caps = <1 1 0x4 1 16000>; + }; + LPSD { + wlf,wmfw-file = "ez2-control"; + wlf,bin-file = "lpsd-control"; + }; + }; + }; + adsp@2FFE00 { + reg = <0x2FFE00>; + firmware { + DSM { + wlf,wmfw-file = "dsm"; + wlf,bin-file = "None"; + }; + }; + }; + }; + controller-data { + cs-gpio = <&gpd8 1 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + spi_1: spi@14d30000 { + #address-cells = <1>; + #size-cells = <0>; + + pinctrl-names = "default"; + pinctrl-0 = <&spi1_mosi_sck_ssn &spi1_miso>; + + num-cs = <1>; + status = "okay"; + + BCM4773@0 { + compatible = "ssp,BCM4773"; + reg = <0>; + spi-max-frequency = <26000000>; + spi-cpol; + spi-cpha; + pinctrl-names = "default"; + pinctrl-0 = <&ssp_host_req &ssp_mcu_req &ssp_mcu_resp>; + + gpio-controller; + #gpio-cells = <2>; + ssp-host-req = <&gpa3 6 0x01>; + ssp-mcu-req = <&gpf4 5 0x01>; + ssp-mcu-resp = <&gpf4 4 0x00>; + ssp-acc-position = <0>; + ssp-mag-position = <0>; + ssp-sns-combination = <0>; + ssp,prox-hi_thresh = <2000>; + ssp,prox-low_thresh = <1400>; + ssp-ap-rev = <1>; + ssp-mag-array = <10213 (-360) 154 (-206) 8673 (-59) (-66) (-59) 10479>; /* Only for YAS532 */ + ssp-hw-rev = <3>; + ssp-glass-type = <0>; + + controller-data { + cs-gpio = <&gpd6 3 0>; + samsung,spi-feedback-delay = <0>; + }; + }; + }; + + gps { + compatible = "samsung,exynos54xx-bcm4753"; + + pinctrl-names = "default"; + pinctrl-0 = <&ssp_gps_pwr_en &ssp_host_wake>; + + gpios = <&gpf4 7 0x1 + &gpa3 2 0xf + >; + status = "okay"; + }; + + spi_3: spi@14d50000 { + spiclk-pindev-name = "14c90000.pinctrl"; + spiclk-pin-name = "gpg4-0"; + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default","ese-pwoff","clk-fix","clk-recover","ese-disable"; + pinctrl-0 = <&spi3_bus>; + pinctrl-1 = <&spi3_ese_pwoff>; + pinctrl-2 = <&spi3_clk_fix>; + pinctrl-3 = <&spi3_clk_recover>; + pinctrl-4 = <&spi3_ese_disable>; + samsung,ese-oberthur; + + ese_spi@0 { + compatible = "ese_p3"; + reg = <0>; + spi-max-frequency = <10000000>; + + gpio-controller; + #gpio-cells = <2>; + + p3-mosipin = <21>; + p3-misopin = <22>; + p3-cspin = <23>; + p3-clkpin = <24>; + p3-cs-gpio = <&gpg4 1 0>; + p3-vdd-1p8= "VDD_1.8V_ESE"; + + controller-data { + samsung,spi-chip-select-mode = <1>; + }; + }; + }; + + audio_pdata { + compatible = "samsung,audio-pdata"; + + seamless_voicewakeup; + status = "okay"; + }; + + antenna_switch { + status = "okay"; + compatible = "antenna_switch"; + pinctrl-names = "default"; + pinctrl-0 = <&antenna_switch_en>; + antenna_switch,gpio_antenna_switch = <&gpr3 6 0>; + }; + + pinctrl@10580000 { + codec_irq: codec-irq { + samsung,pins = "gpa2-5"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + }; + max98505_ctrl: max98505-ctl { + samsung,pins ="gpa2-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-con-pdn =<2>; + samsung,pin-pud-pdn = <0>; + }; + }; + + pinctrl@13470000 { + max98505_i2c: max98505-i2c { + samsung,pins = "gpd2-0", "gpd2-1"; + samsung,pin-pud = <0>; + status = "okay"; + }; + }; + + pinctrl@14870000 { + codec_reset: codec-reset { + samsung,pins ="gpf4-0"; + samsung,pin-function = <1>; + samsung,pin-pud = <1>; + samsung,pin-con-pdn =<3>; + samsung,pin-pud-pdn = <1>; + samsung,pin-val = <0>; + }; + }; + + pinctrl@15690000 { + sub_pmic_irq: sub-pmic-irq { + samsung,pins ="gpr2-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + antenna_switch_en: antenna-switch-en { + samsung,pins = "gpr3-6"; + samsung,pin-function = <1>; + samsung,pin-pud = <0>; + samsung,pin-val = <0>; + }; + }; + + hsi2c@13640000 { + status = "okay"; + max98505@31 { + compatible = "maxim,max98505"; + reg = <0x31>; + pinctrl-names = "default"; + pinctrl-0 = <&max98505_i2c &max98505_ctrl>; + gpios = <&gpd2 1 0 + &gpd2 0 0 + >; + i2c-gpio,delay-us = <2>; + maxim,platform_type = <0>; + maxim,spk_vol = <0x14>; + maxim,sysclk = <12288000>; + }; + }; + + hsi2c@13650000{ + max77843@66 { + status = "okay"; + }; + }; + + hsi2c@13660000 { + s2mps15_pmic@66 { + regulators { + buck1_reg: BUCK1 { + regulator-name = "vdd_mif"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck2_reg: BUCK2 { + regulator-name = "vdd_atlas"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck3_reg: BUCK3 { + regulator-name = "vdd_apollo"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck4_reg: BUCK4 { + regulator-name = "vdd_int"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck5_reg: BUCK5 { + regulator-name = "vdd_disp_cam0"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck6_reg: BUCK6 { + regulator-name = "vdd_g3d"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-boot-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + }; + + buck8_reg: BUCK8 { + regulator-name = "vdd_lldo"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + buck9_reg: BUCK9 { + regulator-name = "vdd_mldo"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2100000>; + regulator-always-on; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <3>; + }; + + ldo2_reg: LDO2 { + regulator-name = "vqmmc"; + regulator-min-microvolt = <1620000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12000>; + regulator-initial-mode = <1>; + regulator-boot-on; + }; + + ldo8_reg: LDO8 { + regulator-name = "vdd_ldo8"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-initial-mode = <1>; + }; + + ldo15_reg: LDO15 { + regulator-name = "tsp_io"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo16_reg: LDO16 { + regulator-name = "VCC_1.8V_CODEC_PMIC"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo17_reg: LDO17 { + regulator-name = "VCC_MOTOR_3.0"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "HRM_VDD_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1850000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "MST_LEVEL_3.0V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo20_reg: LDO20 { + regulator-name = "VDD20_1P8_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo21_reg: LDO21 { + regulator-name = "vtouch_3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; + + ldo22_reg: LDO22 { + regulator-name = "VDD22_1P2_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "VDD_1.8V_ESE"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3350000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "PROX_LED_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "VDD_1.2V_CODEC"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + }; + }; + }; + + hsi2c@13670000 { + max77838@60 { + status = "disabled"; + }; + }; + + hsi2c@14E00000 { + sec-nfc@27 { + sec-nfc,i2c_1p8 = "VDD20_1P8_AP"; + }; + }; + + hsi2c@14E60000 { + status = "okay"; + /delete-node/ s2mpb01_pmic@59; + + s2mpb02@59 { + compatible = "samsung,s2mpb02"; + reg = <0x59>; + + s2mpb02,irq-gpio = <&gpr2 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&sub_pmic_irq>; + + regulators { + _buck1_reg: s2mpb02-buck1 { + regulator-name = "VDD_1P6_DDR"; + regulator-min-microvolt = <1600000>; + regulator-max-microvolt = <1600000>; + }; + + _buck2_reg: s2mpb02-buck2 { + regulator-name = "VDDD_CORE_0.8V_COMP"; + regulator-min-microvolt = <650000>; + regulator-max-microvolt = <850000>; + }; + + _ldo1_reg: s2mpb02-ldo1 { + regulator-name = "VDDD_NORET_0.9V_COMP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + _ldo2_reg: s2mpb02-ldo2 { + regulator-name = "VDDD_CORE_1.0V_COMP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo3_reg: s2mpb02-ldo3 { + regulator-name = "VDDD_1.2V_CAM"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo4_reg: s2mpb02-ldo4 { + regulator-name = "VDDD_RET_1.0V_COMP"; + regulator-min-microvolt = <700000>; + regulator-max-microvolt = <1000000>; + }; + + _ldo5_reg: s2mpb02-ldo5 { + regulator-name = "VDDD_1.2V_VT"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + _ldo6_reg: s2mpb02-ldo6 { + regulator-name = "VDDIO_1.8V_VT"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo7_reg: s2mpb02-ldo7 { + regulator-name = "VDDIO_1.8V_CAM"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo8_reg: s2mpb02-ldo8 { + regulator-name = "VDDIO_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo9_reg: s2mpb02-ldo9 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo10_reg: s2mpb02-ldo10 { + regulator-name = "VCC_DISPLAY_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + _ldo11_reg: s2mpb02-ldo11 { + regulator-name = "VDDA_2.9V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2950000>; + }; + + _ldo12_reg: s2mpb02-ldo12 { + regulator-name = "VDDAF_2.8V_CAM"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo13_reg: s2mpb02-ldo13 { + regulator-name = "VDDA_2.9V_VT"; + regulator-min-microvolt = <2900000>; + regulator-max-microvolt = <2900000>; + }; + + _ldo14_reg: s2mpb02-ldo14 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo15_reg: s2mpb02-ldo15 { + regulator-name = "OIS_VDD_2.8V"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + _ldo16_reg: s2mpb02-ldo16 { + regulator-name = "VCC_3.0V_LCD"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + _ldo17_reg: s2mpb02-ldo17 { + regulator-name = "tsp_avdd"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + }; + + torch { + status = "okay"; + leds1 { + ledname = "leds-sec1"; + /* S2MPB02_FLASH_LED_1 */ + id = <0>; + /* S2MPB02_FLASH_CURRENT */ + brightness = <0xF>; + /* S2MPB02_FLASH_TIMEOUT */ + timeout = <0x3>; + }; + + leds2 { + ledname = "torch-sec1"; + /* S2MPB02_TORCH_LED_1 */ + id = <1>; + /* S2MPB02_TORCH_CURRENT */ + brightness = <0x9>; + /* S2MPB02_TORCH_TIMEOUT */ + timeout = <0xF>; + }; + }; + }; + }; + + pinctrl@13470000 { + /* touchkey i2c*/ + cfg_i2c: cfg-i2c { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <3>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_gpio: cfg_gpio { + samsung,pins = "gpd1-3", "gpd1-2"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pinctrl@10580000 { + /* touchkey interrupt*/ + cfg_irq: cfg-irq { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0xf>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + cfg_input: cfg-input { + samsung,pins = "gpa0-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + sub_det: sub-det { + samsung,pins = "gpa3-0"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + pcie_clkreq_l: pcie_clkreq_l { + samsung,pins = "gpa3-5"; + samsung,pin-function = <0>; + samsung,pin-pud = <0>; + samsung,pin-drv = <0>; + }; + }; + + pcie1@157B0000 { + pinctrl-0 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset_clear &cfg_wlanen &wlan_host_wake &pcie_eint>; + pinctrl-1 = <&pcie1_clkreq &pcie_clkreq_l &pcie1_perst &pcie_wake &pcie1_reset &cfg_wlanen &wlan_host_wake &pcie_eint>; + }; + + hsi2c@14E70000 { + status = "okay"; + pinctrl-names = "default","on_i2c","off_i2c"; + pinctrl-0 = <&hs_i2c3_bus>; + pinctrl-1 = <&cfg_i2c>; + pinctrl-2 = <&cfg_gpio>; + touchkey@20 { + pinctrl-names = "on_irq","off_irq","sub_det"; + pinctrl-0 = <&cfg_irq>; + pinctrl-1 = <&cfg_input>; + pinctrl-2 = <&sub_det>; + compatible = "cypress,cypress_touchkey"; + reg = <0x20>; + interrupts = <0 0 0>; + interrupt-parent = <&gpa0>; + cypress,sda-gpio = <&gpd1 2 0>; + cypress,scl-gpio = <&gpd1 3 0>; + cypress,irq-gpio = <&gpa0 0 1>; + cypress,sub-det = <&gpa3 0 0>; + cypress,ap-io-power = "true"; + cypress,ic-stabilizing-time = <150>; + cypress,boot-on-ldo = "true"; + cypress,fw_path = "cypress/cypress_zerof.fw"; + }; + }; + + hsi2c@14E10000 { + touchscreen@20 { + stm,firmware_name = "tsp_stm/stm_z1.fw"; + stm,project_name = "ZEROF", "G920"; + }; + }; + + dwmmc0@15740000 { + status = "disabled"; + }; + + dwmmc2@15560000 { + vdd_vmmc-supply = <&ldo25_reg>; + vqmmc-supply = <&ldo2_reg>; + }; + + decon_0: decon_fb { + gpio_pcd = <&gpa1 2 0>; + }; + + dsim_0: dsim@0x13900000 { + gpios = <&gpr3 0 0x1>; + regulator_30V = "VCC_3.0V_LCD"; + regulator_18V = "VCC_DISPLAY_1.8V"; + regulator_16V = "VDD_1P6_DDR"; + lcd_info = <&s6e3ha2_wqhd>; + }; + + s6e3ha2_wqhd: s6e3ha2_wqhd_panel { + mode = <2>; + resolution = <1440 2560>; + size = <63 112>; + timing,refresh = <60>; + timing,h-porch = <1 1 1>; + timing,v-porch = <15 1 1>; + timing,dsi-hs-clk = <1026>; + timing,dsi-escape-clk = <16>; + mic = <1>; + mic_ver = <2>; + type_of_ddi = <0>; + }; + + simslot_count { + status = "okay"; + }; +}; diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_00.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_00.dtsi new file mode 100644 index 000000000..8284f588b --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_00.dtsi @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV00 (b0000) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* VOICE_WAKE */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* VOICE_RST_N */ + PIN_SLP(gpz0-6, PREV, NONE); /* MAIN_MIC_CTL */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpd0-1, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, OUT1, UP); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, NONE); /* TOUCH_CSDA */ + PIN_SLP(gpd1-3, INPUT, NONE); /* TOUCH_CSCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* VOICE_RXD */ + PIN_SLP(gpd1-5, OUT1, UP); /* VOICE_TXD */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, OUT0, NONE); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, OUT0, NONE); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, NONE); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, OUT0, NONE); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, NONE); /* DISP_SDA */ + PIN_SLP(gpg3-3, INPUT, NONE); /* DISP_SCL */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-3, DOWN, LV1); /* NC */ + PIN_IN(gpf1-4, NONE, LV1); /* VTCAM_ID */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-2, DOWN, LV1); /* NC */ + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, INPUT, NONE); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, PREV, NONE); /* MICBIAS_EN_AP */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, PREV, NONE); /* IR_LED_EN */ + PIN_SLP(gpf1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-4, INPUT, NONE); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-2, OUT0, NONE); /* MST_PWR_EN */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, PREV, NONE); /* WCHG_CTL */ + PIN_SLP(gpf5-7, PREV, NONE); /* CODEC_LDO_EN */ + + PIN_SLP(gpg1-0, PREV, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, NONE); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg2-3, INPUT, NONE); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep4>; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, PREV, NONE); /* MST_D- */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep5>; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, PREV, NONE); /* MST_D+ */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, DOWN); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, NONE); /* NC*/ + PIN_SLP(gpr3-3, INPUT, DOWN); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_01.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_01.dtsi new file mode 100644 index 000000000..be82cf52a --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_01.dtsi @@ -0,0 +1,389 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV01 (b0011) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-6, INPUT, DOWN); /* NC */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd0-0, DOWN, LV1); /* NC */ + PIN_IN(gpd0-1, DOWN, LV1); /* NC */ + + PIN_IN(gpd1-4, DOWN, LV1); /* NC */ + PIN_IN(gpd1-5, DOWN, LV1); /* NC */ + + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + + PIN_IN(gpg3-2, DOWN, LV1); /* NC */ + PIN_IN(gpg3-3, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, INPUT, DOWN); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, DOWN); /* TOUCH_SDA */ + PIN_SLP(gpd1-3, INPUT, DOWN); /* TOUCH_SCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd1-5, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, INPUT, DOWN); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, INPUT, DOWN); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, DOWN); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, INPUT, DOWN); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg3-3, INPUT, DOWN); /* NC */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-0, DOWN, LV1); /* NC */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-2, DOWN, LV1); /* NC */ + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + PIN_IN(gpf5-6, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, PREV, DOWN); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpf1-3, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpf1-4, INPUT, DOWN); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-2, OUT0, NONE); /* MST_PWR_EN */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-7, PREV, NONE); /* CODEC_LDO_EN */ + + PIN_SLP(gpg1-0, PREV, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, DOWN); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, PREV, UP); /* PCIE_LINK_RESET */ + PIN_SLP(gpg2-3, PREV, DOWN); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep4>; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, PREV, NONE); /* MST_D- */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep5>; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, PREV, NONE); /* MST_D+ */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, NONE); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr3-3, INPUT, NONE); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_02.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_02.dtsi new file mode 100644 index 000000000..22057af44 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_02.dtsi @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV02 (b0101) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-6, INPUT, DOWN); /* NC */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd0-0, DOWN, LV1); /* NC */ + PIN_IN(gpd0-1, DOWN, LV1); /* NC */ + + PIN_IN(gpd1-4, DOWN, LV1); /* NC */ + PIN_IN(gpd1-5, DOWN, LV1); /* NC */ + + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + + PIN_IN(gpg3-2, DOWN, LV1); /* NC */ + PIN_IN(gpg3-3, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, INPUT, DOWN); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, DOWN); /* TOUCH_SDA */ + PIN_SLP(gpd1-3, INPUT, DOWN); /* TOUCH_SCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd1-5, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, INPUT, DOWN); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, INPUT, DOWN); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, DOWN); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, INPUT, DOWN); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg3-3, INPUT, DOWN); /* NC */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-0, DOWN, LV1); /* NC */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-2, DOWN, LV1); /* NC */ + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + PIN_IN(gpf5-6, DOWN, LV1); /* NC */ + PIN_IN(gpf5-7, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, PREV, DOWN); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpf1-3, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpf1-4, INPUT, DOWN); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-2, OUT0, NONE); /* MST_PWR_EN */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpg1-0, INPUT, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, DOWN); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, PREV, UP); /* PCIE_LINK_RESET */ + PIN_SLP(gpg2-3, PREV, DOWN); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep4>; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, PREV, NONE); /* MST_D- */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep5>; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, PREV, NONE); /* MST_D+ */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, NONE); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr3-3, INPUT, NONE); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_03.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_03.dtsi new file mode 100644 index 000000000..2e60b37b5 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_03.dtsi @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV03, REV04 (b0110) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-6, INPUT, DOWN); /* NC */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd0-0, DOWN, LV1); /* NC */ + PIN_IN(gpd0-1, DOWN, LV1); /* NC */ + + PIN_IN(gpd1-4, DOWN, LV1); /* NC */ + PIN_IN(gpd1-5, DOWN, LV1); /* NC */ + + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + + PIN_IN(gpg3-2, DOWN, LV1); /* NC */ + PIN_IN(gpg3-3, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, INPUT, DOWN); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, DOWN); /* TOUCH_SDA */ + PIN_SLP(gpd1-3, INPUT, DOWN); /* TOUCH_SCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd1-5, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, INPUT, DOWN); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, INPUT, DOWN); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, DOWN); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, INPUT, DOWN); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg3-3, INPUT, DOWN); /* NC */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-0, DOWN, LV1); /* NC */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-2, DOWN, LV1); /* NC */ + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + PIN_IN(gpf5-6, DOWN, LV1); /* NC */ + PIN_IN(gpf5-7, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, PREV, DOWN); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpf1-3, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpf1-4, INPUT, DOWN); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-2, OUT0, NONE); /* MST_PWR_EN */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpg1-0, INPUT, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, DOWN); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, PREV, UP); /* PCIE_LINK_RESET */ + PIN_SLP(gpg2-3, PREV, DOWN); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep4>; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, PREV, NONE); /* MST_D- */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep5>; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, PREV, NONE); /* MST_D+ */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, NONE); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr3-3, INPUT, NONE); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_04.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_04.dtsi new file mode 100644 index 000000000..3452dd9c2 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_04.dtsi @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV04 (b0111) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-6, INPUT, DOWN); /* NC */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd0-0, DOWN, LV1); /* NC */ + PIN_IN(gpd0-1, DOWN, LV1); /* NC */ + + PIN_IN(gpd1-4, DOWN, LV1); /* NC */ + PIN_IN(gpd1-5, DOWN, LV1); /* NC */ + + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + + PIN_IN(gpg3-2, DOWN, LV1); /* NC */ + PIN_IN(gpg3-3, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, INPUT, DOWN); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, DOWN); /* TOUCH_SDA */ + PIN_SLP(gpd1-3, INPUT, DOWN); /* TOUCH_SCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd1-5, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, INPUT, DOWN); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, INPUT, DOWN); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, DOWN); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, INPUT, DOWN); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg3-3, INPUT, DOWN); /* NC */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-0, DOWN, LV1); /* NC */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-2, DOWN, LV1); /* NC */ + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + PIN_IN(gpf5-6, DOWN, LV1); /* NC */ + PIN_IN(gpf5-7, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, PREV, DOWN); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpf1-3, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpf1-4, INPUT, DOWN); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-2, OUT0, NONE); /* MST_PWR_EN */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpg1-0, INPUT, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, DOWN); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, PREV, UP); /* PCIE_LINK_RESET */ + PIN_SLP(gpg2-3, PREV, DOWN); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep4>; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, PREV, NONE); /* MST_D- */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep5>; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, PREV, NONE); /* MST_D+ */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, NONE); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr3-3, INPUT, NONE); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_05.dtsi b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_05.dtsi new file mode 100644 index 000000000..a7f62dcd2 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420-zeroflte_gpio_05.dtsi @@ -0,0 +1,398 @@ +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +// Support ZERO-F LTE HW REV05 (b1000) + +#include "exynos_gpio_config_macros.dtsi" + +// gpz0, gpz1 +&pinctrl_1 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep1>; + sleep1: sleep-state { + PIN_SLP(gpz0-0, INPUT, DOWN); /* MM_I2S_CLK */ + PIN_SLP(gpz0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-2, INPUT, DOWN); /* MM_I2S_SYNC */ + PIN_SLP(gpz0-3, INPUT, DOWN); /* MM_I2S_DO */ + PIN_SLP(gpz0-4, INPUT, DOWN); /* MM_I2S_DI */ + PIN_SLP(gpz0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpz0-6, INPUT, DOWN); /* NC */ + + PIN_SLP(gpz1-0, OUT1, UP); /* BT_UART_TXD */ + PIN_SLP(gpz1-1, INPUT, UP); /* BT_UART_RXD */ + PIN_SLP(gpz1-2, INPUT, UP); /* BT_UART_CTS */ + PIN_SLP(gpz1-3, OUT1, UP); /* BT_UART_RTS */ + }; +}; + +// gpb0, gpc0 ~ gpc3, gpd0 ~ gpd8, gpg0, gpg3 +&pinctrl_2 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial2>; + pinctrl-1 = <&sleep2>; + initial2: initial-state { + PIN_IN(gpd0-0, DOWN, LV1); /* NC */ + PIN_IN(gpd0-1, DOWN, LV1); /* NC */ + + PIN_IN(gpd1-4, DOWN, LV1); /* NC */ + PIN_IN(gpd1-5, DOWN, LV1); /* NC */ + + PIN_IN(gpd2-4, DOWN, LV1); /* NC */ + PIN_IN(gpd2-6, DOWN, LV1); /* NC */ + PIN_IN(gpd2-7, DOWN, LV1); /* NC */ + + PIN_IN(gpd4-0, DOWN, LV1); /* NC */ + PIN_IN(gpd4-1, DOWN, LV1); /* NC */ + PIN_IN(gpd4-2, DOWN, LV1); /* NC */ + PIN_IN(gpd4-3, DOWN, LV1); /* NC */ + PIN_IN(gpd4-4, DOWN, LV1); /* NC */ + + PIN_IN(gpg3-2, DOWN, LV1); /* NC */ + PIN_IN(gpg3-3, DOWN, LV1); /* NC */ + }; + sleep2: sleep-state { + PIN_SLP(gpb0-0, INPUT, NONE); /* MEM_SDA */ + PIN_SLP(gpb0-1, INPUT, NONE); /* MEM_SCL */ + PIN_SLP(gpb0-2, INPUT, DOWN); /* VTCAM_EEP_SDA */ + PIN_SLP(gpb0-3, INPUT, DOWN); /* VTCAM_EEP_SCL */ + PIN_SLP(gpb0-4, OUT0, NONE); /* BUCK6EN */ + + PIN_SLP(gpc0-0, INPUT, DOWN); /* COMP_PAF_INT */ + PIN_SLP(gpc0-1, INPUT, DOWN); /* TP */ + PIN_SLP(gpc0-2, INPUT, DOWN); /* CAM_FLASH_EN */ + PIN_SLP(gpc0-3, INPUT, DOWN); /* CAM_TORCH_EN */ + PIN_SLP(gpc0-4, INPUT, DOWN); /* VTCAM_RST_N */ + PIN_SLP(gpc0-5, INPUT, DOWN); /* CAM_RST_N */ + PIN_SLP(gpc0-6, INPUT, DOWN); /* VTCAM_STBY */ + PIN_SLP(gpc0-7, INPUT, DOWN); /* COMP_RST_N */ + + PIN_SLP(gpc1-0, INPUT, DOWN); /* CAM_SENSOR_DET */ + PIN_SLP(gpc1-1, INPUT, DOWN); /* TP */ + + PIN_SLP(gpc2-0, INPUT, DOWN); /* CAM_SDA */ + PIN_SLP(gpc2-1, INPUT, DOWN); /* CAM_SCL */ + PIN_SLP(gpc2-2, INPUT, DOWN); /* VTCAM_SDA */ + PIN_SLP(gpc2-3, INPUT, DOWN); /* VTCAM_SCL */ + PIN_SLP(gpc2-4, INPUT, DOWN); /* OIS_AF_SDA */ + PIN_SLP(gpc2-5, INPUT, DOWN); /* OIS_AF_SCL */ + + PIN_SLP(gpc3-0, INPUT, DOWN); /* FROM_SPI_SCLK */ + PIN_SLP(gpc3-1, INPUT, DOWN); /* FROM_SPI_SSN */ + PIN_SLP(gpc3-2, INPUT, DOWN); /* FROM_SPI_MISO */ + PIN_SLP(gpc3-3, INPUT, DOWN); /* FROM_SPI_MOSI */ + PIN_SLP(gpc3-4, INPUT, DOWN); /* COMP_SPI_SCLK */ + PIN_SLP(gpc3-5, INPUT, DOWN); /* COMP_SPI_SSN */ + PIN_SLP(gpc3-6, INPUT, DOWN); /* COMP_SPI_MISO */ + PIN_SLP(gpc3-7, INPUT, DOWN); /* COMP_SPI_MOSI */ + + PIN_SLP(gpd0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd0-2, INPUT, NONE); /* SUB_PMIC_SDA */ + PIN_SLP(gpd0-3, INPUT, NONE); /* SUB_PMIC_SCL */ + + PIN_SLP(gpd1-0, INPUT, DOWN); /* AP_RXD */ + PIN_SLP(gpd1-1, INPUT, DOWN); /* AP_TXD */ + PIN_SLP(gpd1-2, INPUT, DOWN); /* TOUCH_SDA */ + PIN_SLP(gpd1-3, INPUT, DOWN); /* TOUCH_SCL */ + PIN_SLP(gpd1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd1-5, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd2-0, INPUT, NONE); /* SPK_AMP_SDA */ + PIN_SLP(gpd2-1, INPUT, NONE); /* SPK_AMP_SCL */ + PIN_SLP(gpd2-2, INPUT, NONE); /* IF_PMIC_SDA */ + PIN_SLP(gpd2-3, INPUT, NONE); /* IF_PMIC_SCL */ + PIN_SLP(gpd2-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-5, OUT0, NONE); /* VIBTONE_PWM */ + PIN_SLP(gpd2-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpd2-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpd4-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpd5-0, INPUT, DOWN); /* CP_SPI_CLK */ + PIN_SLP(gpd5-1, INPUT, DOWN); /* CP_SPI_CSN */ + PIN_SLP(gpd5-2, INPUT, DOWN); /* CP_SPI_MISO */ + PIN_SLP(gpd5-3, INPUT, DOWN); /* CP_SPI_MOSI */ + + PIN_SLP(gpd6-0, INPUT, DOWN); /* CODEC_SPI_MOSI */ + PIN_SLP(gpd6-1, INPUT, DOWN); /* CODEC_SPI_MISO */ + PIN_SLP(gpd6-2, OUT1, UP); /* SHUB_SPI_SCK */ + PIN_SLP(gpd6-3, OUT1, UP); /* SHUB_SPI_CSN */ + PIN_SLP(gpd6-4, INPUT, DOWN); /* SHUB_SPI_MISO */ + PIN_SLP(gpd6-5, OUT1, UP); /* SHUB_SPI_MOSI */ + + PIN_SLP(gpd7-0, INPUT, DOWN); /* CAM_MCLK */ + PIN_SLP(gpd7-1, INPUT, DOWN); /* COMP_MCLK */ + PIN_SLP(gpd7-2, INPUT, DOWN); /* VTCAM_MCLK */ + + PIN_SLP(gpd8-0, INPUT, DOWN); /* CODEC_SPI_SCK */ + PIN_SLP(gpd8-1, INPUT, DOWN); /* CODEC_SPI_SSN */ + + PIN_SLP(gpg0-0, INPUT, DOWN); /* DISPLAY_TE */ + PIN_SLP(gpg0-1, INPUT, DOWN); /* DISPLAY_TE */ + + PIN_SLP(gpg3-0, INPUT, NONE); /* AP_PMIC_SDA */ + PIN_SLP(gpg3-1, INPUT, NONE); /* AP_PMIC_SCL */ + PIN_SLP(gpg3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg3-3, INPUT, DOWN); /* NC */ + }; +}; + +// gpf0 ~ gpf5, gpg1, gpg2, gph1, gpv6 +&pinctrl_3 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial3>; + pinctrl-1 = <&sleep3>; + initial3: initial-state { + PIN_IN(gpf0-0, NONE, LV1); /* HW_REV(0) */ + PIN_IN(gpf0-1, NONE, LV1); /* HW_REV(1) */ + PIN_IN(gpf0-2, NONE, LV1); /* HW_REV(2) */ + PIN_IN(gpf0-3, NONE, LV1); /* HW_REV(3) */ + PIN_IN(gpf0-5, DOWN, LV1); /* NC */ + + PIN_IN(gpf1-0, DOWN, LV1); /* NC */ + + PIN_IN(gpf2-0, DOWN, LV1); /* NC */ + PIN_IN(gpf2-1, DOWN, LV1); /* NC */ + PIN_IN(gpf2-2, DOWN, LV1); /* NC */ + PIN_IN(gpf2-3, DOWN, LV1); /* NC */ + + PIN_IN(gpf3-1, DOWN, LV1); /* FPS_ID */ + PIN_IN(gpf3-2, DOWN, LV1); /* NC */ + + PIN_IN(gpf5-3, DOWN, LV1); /* NC */ + PIN_IN(gpf5-5, DOWN, LV1); /* NC */ + PIN_IN(gpf5-6, DOWN, LV1); /* WCP_TSB */ + PIN_IN(gpf5-7, DOWN, LV1); /* NC */ + + PIN_IN(gpg1-2, DOWN, LV1); /* NC */ + PIN_IN(gpg1-3, DOWN, LV1); /* NC */ + + PIN_IN(gph1-0, DOWN, LV1); /* NC */ + PIN_IN(gph1-1, DOWN, LV1); /* NC */ + PIN_IN(gph1-2, DOWN, LV1); /* NC */ + PIN_IN(gph1-3, DOWN, LV1); /* NC */ + + PIN_IN(gpv6-0, DOWN, LV1); /* NC */ + PIN_IN(gpv6-1, DOWN, LV1); /* NC */ + PIN_IN(gpv6-2, DOWN, LV1); /* NC */ + }; + sleep3: sleep-state { + PIN_SLP(gpf0-0, INPUT, NONE); /* HW_REV(0) */ + PIN_SLP(gpf0-1, INPUT, NONE); /* HW_REV(1) */ + PIN_SLP(gpf0-2, INPUT, NONE); /* HW_REV(2) */ + PIN_SLP(gpf0-3, INPUT, NONE); /* HW_REV(3) */ + PIN_SLP(gpf0-4, PREV, NONE); /* AP_CP_STATUS */ + PIN_SLP(gpf0-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf0-6, PREV, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpf0-7, PREV, DOWN); /* XCCIBYPASS */ + + PIN_SLP(gpf1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf1-1, PREV, NONE); /* CP_RST_N */ + PIN_SLP(gpf1-2, INPUT, NONE); /* WPC_SDA */ + PIN_SLP(gpf1-3, INPUT, NONE); /* WPC_SCL */ + PIN_SLP(gpf1-4, INPUT, DOWN); /* VTCAM_ID */ + PIN_SLP(gpf1-5, PREV, NONE); /* NFC_EN */ + PIN_SLP(gpf1-6, PREV, NONE); /* BTP_LDO_EN1 */ + PIN_SLP(gpf1-7, PREV, NONE); /* BTP_LDO_EN2 */ + + PIN_SLP(gpf2-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf2-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpf3-0, OUT1, NONE); /* PMIC_WRST_IN */ + PIN_SLP(gpf3-1, INPUT, DOWN); /* FPS_ID */ + PIN_SLP(gpf3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpf3-3, OUT0, NONE); /* PDA_ACTIVE */ + PIN_SLP(gpf3-4, PREV, NONE); /* BTP_RST_N */ + + PIN_SLP(gpf4-0, PREV, NONE); /* CODEC_RST_N */ + PIN_SLP(gpf4-1, PREV, NONE); /* BT_EN */ + PIN_SLP(gpf4-2, PREV, NONE); /* AP_CP_WAKE */ + PIN_SLP(gpf4-3, OUT0, NONE); /* DISPLAY_1.6V_EN */ + PIN_SLP(gpf4-4, INPUT, DOWN); /* SSP_MCU_RESP */ + PIN_SLP(gpf4-5, OUT0, DOWN); /* SSP_MCU_REQ */ + PIN_SLP(gpf4-6, PREV, NONE); /* WLAN_EN */ + PIN_SLP(gpf4-7, PREV, NONE); /* GPS_HUB_EN */ + + PIN_SLP(gpf5-0, PREV, NONE); /* CP_PMIC_PWR_EN */ + PIN_SLP(gpf5-1, PREV, NONE); /* AP_CP_DUMP_NOTI_n */ + PIN_SLP(gpf5-2, PREV, NONE); /* FACTORY_DISCHARGING */ + PIN_SLP(gpf5-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-4, OUT0, DOWN); /* NFC_FIRM */ + PIN_SLP(gpf5-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpf5-6, INPUT, DOWN); /* WCP_TSB */ + PIN_SLP(gpf5-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpg1-0, INPUT, NONE); /* SMPL_WARN_AP */ + PIN_SLP(gpg1-1, PREV, NONE); /* PMIC_BUCK6_DVS */ + PIN_SLP(gpg1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpg1-4, INPUT, DOWN); /* TSP_ID */ + + PIN_SLP(gpg2-0, PREV, NONE); /* PCIE_RST_L */ + PIN_SLP(gpg2-1, INPUT, DOWN); /* PAD_DBGSRCSEL */ + PIN_SLP(gpg2-2, PREV, UP); /* PCIE_LINK_RESET */ + PIN_SLP(gpg2-3, PREV, DOWN); /* XCPUAXI3SELACE */ + PIN_SLP(gpg2-4, PREV, NONE); /* UFS_REFCLK */ + + PIN_SLP(gph1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gph1-4, OUT0, NONE); /* XBOOTLDO0 */ + PIN_SLP(gph1-5, PREV, NONE); /* UFS_RST_N */ + + PIN_SLP(gpv6-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpv6-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj0 +&pinctrl_4 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial4>; + pinctrl-1 = <&sleep4>; + initial4: initial-state { + PIN_IN(gpj0-2, DOWN, LV1); /* NC */ + }; + sleep4: sleep-state { + PIN_SLP(gpj0-0, INPUT, NONE); /* HRM_SDA */ + PIN_SLP(gpj0-1, INPUT, NONE); /* HRM_SCL */ + PIN_SLP(gpj0-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpj1 +&pinctrl_5 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial5>; + pinctrl-1 = <&sleep5>; + initial5: initial-state { + PIN_IN(gpj1-2, DOWN, LV1); /* NC */ + }; + sleep5: sleep-state { + PIN_SLP(gpj1-0, INPUT, DOWN); /* TSP_SDA */ + PIN_SLP(gpj1-1, INPUT, DOWN); /* TSP_SCL */ + PIN_SLP(gpj1-2, INPUT, DOWN); /* NC */ + }; +}; + +// gpg4 +&pinctrl_6 { + pinctrl-names = "sleep"; + pinctrl-0 = <&sleep6>; + sleep6: sleep-state { + PIN_SLP(gpg4-0, INPUT, DOWN); /* ESE_SPI_SCLK */ + PIN_SLP(gpg4-1, INPUT, DOWN); /* ESE_SPI_SSN */ + PIN_SLP(gpg4-2, INPUT, DOWN); /* ESE_SPI_MISO */ + PIN_SLP(gpg4-3, INPUT, DOWN); /* ESE_SPI_MOSI */ + }; +}; + +// gpv7 +&pinctrl_7 { + pinctrl-names = "sleep"; + pinctrl-0= <&sleep7>; + sleep7: sleep-state { + PIN_SLP(gpv7-0, OUT0, NONE); /* BTP_SPI_CLK */ + PIN_SLP(gpv7-1, OUT0, NONE); /* BTP_SPI_CS_N */ + PIN_SLP(gpv7-2, INPUT, DOWN); /* BTP_SPI_MISO */ + PIN_SLP(gpv7-3, OUT0, NONE); /* BTP_SPI_MOSI */ + PIN_SLP(gpv7-4, PREV, NONE); /* BTP_OCP_EN */ + }; +}; + +// gpr4 +&pinctrl_8 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial8>; + pinctrl-1 = <&sleep8>; + initial8: initial-state { + PIN_IN(gpr4-0, DOWN, LV1); /* NC */ + PIN_IN(gpr4-1, DOWN, LV1); /* NC */ + PIN_IN(gpr4-2, DOWN, LV1); /* NC */ + PIN_IN(gpr4-3, DOWN, LV1); /* NC */ + PIN_IN(gpr4-4, DOWN, LV1); /* NC */ + PIN_IN(gpr4-5, DOWN, LV1); /* NC */ + PIN_IN(gpr4-6, DOWN, LV1); /* NC */ + }; + sleep8: sleep-state { + PIN_SLP(gpr4-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr4-6, INPUT, DOWN); /* NC */ + }; +}; + +// gpr0 ~ gpr3 +&pinctrl_9 { + pinctrl-names = "default","sleep"; + pinctrl-0 = <&initial9>; + pinctrl-1 = <&sleep9>; + initial9: initial-state { + PIN_IN(gpr0-0, DOWN, LV1); /* NC */ + PIN_IN(gpr0-1, DOWN, LV1); /* NC */ + PIN_IN(gpr0-2, DOWN, LV1); /* NC */ + PIN_IN(gpr0-3, DOWN, LV1); /* NC */ + + PIN_IN(gpr1-0, DOWN, LV1); /* NC */ + PIN_IN(gpr1-1, DOWN, LV1); /* NC */ + PIN_IN(gpr1-2, DOWN, LV1); /* NC */ + PIN_IN(gpr1-3, DOWN, LV1); /* NC */ + PIN_IN(gpr1-4, DOWN, LV1); /* NC */ + PIN_IN(gpr1-5, DOWN, LV1); /* NC */ + PIN_IN(gpr1-6, DOWN, LV1); /* NC */ + PIN_IN(gpr1-7, DOWN, LV1); /* NC */ + + PIN_IN(gpr2-3, DOWN, LV1); /* NC */ + PIN_IN(gpr2-4, DOWN, LV1); /* NC */ + + PIN_IN(gpr3-2, DOWN, LV1); /* NC */ + }; + sleep9: sleep-state { + PIN_SLP(gpr0-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr0-3, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr1-0, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-1, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-4, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-5, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-6, INPUT, DOWN); /* NC */ + PIN_SLP(gpr1-7, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr2-0, INPUT, NONE); /* PCIE_CLKREQ_L */ + PIN_SLP(gpr2-1, INPUT, DOWN); /* OLED_ID */ + PIN_SLP(gpr2-2, INPUT, NONE); /* SUB_PMIC_IRQ_N */ + PIN_SLP(gpr2-3, INPUT, DOWN); /* NC */ + PIN_SLP(gpr2-4, INPUT, DOWN); /* NC */ + + PIN_SLP(gpr3-0, INPUT, DOWN); /* M_DISPLAY_RST */ + PIN_SLP(gpr3-1, INPUT, DOWN); /* DISPLAY_DET */ + PIN_SLP(gpr3-2, INPUT, DOWN); /* NC */ + PIN_SLP(gpr3-3, INPUT, NONE); /* DUAL_SIM */ + PIN_SLP(gpr3-4, PREV, NONE); /* BT_WAKE */ + PIN_SLP(gpr3-5, INPUT, DOWN); /* IFC_SENSE_INT_AP */ + PIN_SLP(gpr3-6, PREV, NONE); /* USB_EAR_DET */ + PIN_SLP(gpr3-7, INPUT, DOWN); /* FG_ERR */ + }; +}; + diff --git a/arch/arm64/boot/dts/exynos7420_evt0.dtsi b/arch/arm64/boot/dts/exynos7420_evt0.dtsi new file mode 100644 index 000000000..ea570a341 --- /dev/null +++ b/arch/arm64/boot/dts/exynos7420_evt0.dtsi @@ -0,0 +1,2788 @@ +/* + * SAMSUNG EXYNOS7420 SoC device tree source + * + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * SAMSUNG EXYNOS7420 SoC device nodes are listed in this file. + * EXYNOS7420 based board files can include this file and provide + * values for board specfic bindings. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +/include/ "exynos7420-pinctrl.dtsi" +/ { + compatible = "samsung,armv8", "samsung,exynos7420"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + pinctrl0 = &pinctrl_0; + pinctrl1 = &pinctrl_1; + pinctrl2 = &pinctrl_2; + pinctrl3 = &pinctrl_3; + pinctrl4 = &pinctrl_4; + pinctrl5 = &pinctrl_5; + pinctrl6 = &pinctrl_6; + pinctrl7 = &pinctrl_7; + pinctrl8 = &pinctrl_8; + pinctrl9 = &pinctrl_9; + mshc0 = &dwmmc_0; + mshc1 = &dwmmc_1; + mshc2 = &dwmmc_2; + mdev0 = &mdev_0; + vpp0 = &vg_0; + vpp1 = &vg_1; + vpp2 = &vgr_0; + vpp3 = &vgr_1; + decon0 = &decon_0; + decon1 = &decon_1; + dsim0 = &dsim_0; + mfc0 = &mfc_0; + hevc = &hevc; + fimg2d0 = &fimg2d_0; + scaler0 = &scaler_0; + scaler1 = &scaler_1; + jpeg0 = &jpeg_0; + }; + + cpus { + #address-cells = <2>; + #size-cells = <0>; + + idle-states { + entry-method = "arm,psci"; + + CPU_SLEEP_0: C1 { + compatible = "arm,idle-state"; + desc = "ARM clock gating(WFI)"; + entry-method-param = <0x0000000>; + exit-latency-us = <10>; + min-residency-us = <500>; + }; + + CPU_SLEEP_1: C2 { + compatible = "arm,idle-state"; + desc = "ARM power down"; + entry-method-param = <0x0000000>; + exit-latency-us = <150>; + min-residency-us = <2100>; + }; + + CPU_SLEEP_2: CPD { + compatible = "arm,idle-state"; + desc = "Cluster power down"; + entry-method-param = <0x1000000>; + exit-latency-us = <300>; + min-residency-us = <3400>; + }; + + CPU_SLEEP_3: LPM { + compatible = "arm,idle-state"; + desc = "System power down"; + entry-method-param = <0x1000000>; + exit-latency-us = <300>; + min-residency-us = <5000>; + }; + }; + + cpu@100 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x100>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CPU_SLEEP_1 &CPU_SLEEP_2 &CPU_SLEEP_3>; + }; + cpu@101 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x101>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CPU_SLEEP_1 &CPU_SLEEP_2 &CPU_SLEEP_3>; + }; + cpu@102 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x102>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CPU_SLEEP_1 &CPU_SLEEP_2 &CPU_SLEEP_3>; + }; + cpu@103 { + device_type = "cpu"; + compatible = "arm,cortex-a53", "arm,armv8"; + reg = <0x0 0x103>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CPU_SLEEP_1 &CPU_SLEEP_2 &CPU_SLEEP_3>; + }; + }; + + coresight { + compatible = "exynos,coresight"; + reg = <0x16000000 0xc00000>; + #address-cells = <1>; + #size-cells = <0>; + css_pc@0 { + device_type = "cs"; + offset = <0x810000>; + }; + css_pc@1 { + device_type = "cs"; + offset = <0x910000>; + }; + css_pc@2 { + device_type = "cs"; + offset = <0xa10000>; + }; + css_pc@3 { + device_type = "cs"; + offset = <0xb10000>; + }; + css_pc@4 { + device_type = "cs"; + offset = <0x410000>; + }; + css_pc@5 { + device_type = "cs"; + offset = <0x510000>; + }; + css_pc@6 { + device_type = "cs"; + offset = <0x610000>; + }; + css_pc@7 { + device_type = "cs"; + offset = <0x710000>; + }; + }; + + psci { + compatible = "arm,psci"; + method = "smc"; + cpu_suspend = <0xC4000001>; + cpu_off = <0x84000002>; + cpu_on = <0xC4000003>; + }; + + cpuidle { + compatible = "samsung,cpuidle"; + lpm-reg = <0x105C4084>, <0x105C40E4>, <0x105C4104>, <0x105C4124>, + <0x105C4144>, <0x105C4184>, <0x105C41A4>, <0x105C41C4>, + <0x105C41E4>; + lpm-val = <0xF>, <0xF>, <0xF>, <0xF>, <0xF>, <0xF>, <0xF>, <0xF>, <0xF>; + dstop-reg = <0x105C4004>; + dstop-val = <0xF>; + }; + + sec_pwm: pwm@136c0000 { + compatible = "samsung,s3c6400-pwm"; + reg = <0x136c0000 0x1000>; + #pwm-cells = <3>; + clocks = <&clock 141>, + <&clock_pwm 1>, <&clock_pwm 2>, + <&clock_pwm 5>, <&clock_pwm 6>, + <&clock_pwm 7>, <&clock_pwm 8>, + <&clock_pwm 10>, <&clock_pwm 11>, + <&clock_pwm 12>, <&clock_pwm 13>; + clock-names = "gate_timers", + "pwm-scaler0", "pwm-scaler1", + "pwm-tdiv0", "pwm-tdiv1", + "pwm-tdiv2", "pwm-tdiv3", + "pwm-tin0", "pwm-tin1", + "pwm-tin2", "pwm-tin3"; + status = "ok"; + }; + + clock_pwm: pwm-clock-controller@136c0000 { + compatible = "samsung,exynos-pwm-clock"; + reg = <0x136c0000 0x50>; + #clock-cells = <1>; + }; + + rtc@10590000 { + compatible = "samsung,s3c6410-rtc"; + reg = <0x10590000 0x100>; + interrupts = <0 355 0>, <0 356 0>; + clocks = <&clock 185>; + clock-names = "gate_rtc"; + }; + + exynos_adc: adc@13620000 { + compatible = "samsung,exynos-adc-v2"; + reg = <0x13620000 0x100>; + interrupts = <0 448 0>; + #io-channel-cells = <1>; + io-channel-ranges; + clocks = <&clock 142>; + clock-names = "gate_adcif"; + }; + + gic: interrupt-controller@11001000 { + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x11001000 0x1000>, + <0x11002000 0x1000>, + <0x11004000 0x2000>, + <0x11006000 0x2000>; + interrupts = <1 9 0xf04>; + }; + + clock: clock-controller@0x10570000 { + compatible = "samsung,exynos7420-clock"; + reg = <0x10570000 0x1000>; + #clock-cells = <1>; + }; + + mct@101C0000 { + compatible = "samsung,exynos4210-mct"; + reg = <0x101C0000 0x800>; + interrupt-controller; + #interrupt-cells = <1>; + interrupt-parent = <&mct_map>; + interrupts = <0>, <1>, <2>, <3>, + <4>, <5>, <6>, <7>, + <8>, <9>, <10>, <11>; + clocks = <&clock 1>, <&clock 109>; + clock-names = "fin_pll", "mct"; + /* use-clockevent-only; */ + + mct_map: mct-map { + #interrupt-cells = <1>; + #address-cells = <0>; + #size-cells = <0>; + interrupt-map = <0 &gic 0 112 0>, + <1 &gic 0 113 0>, + <2 &gic 0 114 0>, + <3 &gic 0 115 0>, + <4 &gic 0 116 0>, + <5 &gic 0 117 0>, + <6 &gic 0 118 0>, + <7 &gic 0 119 0>, + <8 &gic 0 120 0>, + <9 &gic 0 121 0>, + <10 &gic 0 122 0>, + <11 &gic 0 123 0>; + }; + }; + + serial@13630000 { + compatible = "samsung,exynos5430-uart"; + samsung,separate-uart-clk; + reg = <0x13630000 0x100>; + interrupts = <0 440 0>; + clocks = <&clock 103>, <&clock 104>, <&clock 100>; + clock-names = "gate_pclk0", "gate_uart0", "sclk_uart0"; + }; + + serial@14C20000 { + compatible = "samsung,exynos5430-uart"; + samsung,separate-uart-clk; + reg = <0x14C20000 0x100>; + interrupts = <0 456 0>; + clocks = <&clock 105>, <&clock 106>, <&clock 101>; + clock-names = "gate_pclk1", "gate_uart1", "sclk_uart1"; + }; + + serial@14C30000 { + compatible = "samsung,exynos5430-uart"; + samsung,separate-uart-clk; + reg = <0x14C30000 0x100>; + interrupts = <0 457 0>; + clocks = <&clock 107>, <&clock 108>, <&clock 102>; + clock-names = "gate_pclk2", "gate_uart2", "sclk_uart2"; + }; + + serial@14C40000 { + compatible = "samsung,exynos5430-uart"; + samsung,separate-uart-clk; + reg = <0x14C40000 0x100>; + interrupts = <0 458 0>; + clocks = <&clock 111>, <&clock 112>, <&clock 110>; + clock-names = "gate_pclk3", "gate_uart3", "sclk_uart3"; + }; + + watchdog@10020000 { + compatible = "samsung,s3c2410-wdt"; + reg = <0x10020000 0x100>; + interrupts = <0 101 0>; + clocks = <&clock 140>, <&clock 1400>; + clock-names = "rate_watchdog", "gate_watchdog"; + timeout-sec = <30>; + pmu_wdt_reset_type = <1>; + }; + + spi_0: spi@14d20000 { + compatible = "samsung,exynos543x-spi"; + reg = <0x14d20000 0x100>; + interrupts = <0 464 0>; + dma-mode; + dmas = <&pdma0 6 + &pdma0 7>; + dma-names = "tx", "rx"; + swap-mode; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 132>, <&clock 117>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_bus>; + /* status = "disabled"; */ + }; + + spi_1: spi@14d30000 { + compatible = "samsung,exynos543x-spi"; + reg = <0x14d30000 0x100>; + interrupts = <0 465 0>; + dma-mode; + dmas = <&pdma0 8 + &pdma0 9>; + dma-names = "tx", "rx"; + swap-mode; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 133>, <&clock 113>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_bus>; + /* status = "disabled"; */ + }; + + spi_2: spi@14d40000 { + compatible = "samsung,exynos543x-spi"; + reg = <0x14d40000 0x100>; + interrupts = <0 466 0>; + dma-mode; + dmas = <&pdma0 10 + &pdma0 11>; + dma-names = "tx", "rx"; + swap-mode; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 134>, <&clock 114>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi2_bus>; + status = "disabled"; + }; + + spi_3: spi@14d50000 { + compatible = "samsung,exynos543x-spi"; + reg = <0x14d50000 0x100>; + interrupts = <0 467 0>; + dma-mode; + dmas = <&pdma0 12 + &pdma0 13>; + dma-names = "tx", "rx"; + swap-mode; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 135>, <&clock 115>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi3_bus>; + status = "disabled"; + }; + + spi_4: spi@14d00000 { + compatible = "samsung,exynos543x-spi"; + reg = <0x14d00000 0x100>; + interrupts = <0 468 0>; + swap-mode; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 136>, <&clock 116>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi4_bus>; + status = "disabled"; + }; + + hsi2c_0: hsi2c@13640000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13640000 0x1000>; + interrupts = <0 441 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c0_bus>; + clocks = <&clock 120>, <&clock 120>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_1: hsi2c@13650000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13650000 0x1000>; + interrupts = <0 442 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c1_bus>; + clocks = <&clock 121>, <&clock 121>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_2: hsi2c@14E60000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x14E60000 0x1000>; + interrupts = <0 459 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c2_bus>; + clocks = <&clock 122>, <&clock 122>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_3: hsi2c@14E70000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x14E70000 0x1000>; + interrupts = <0 460 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c3_bus>; + clocks = <&clock 123>, <&clock 123>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_4: hsi2c@13660000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13660000 0x1000>; + interrupts = <0 443 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c4_bus>; + clocks = <&clock 124>, <&clock 124>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_5: hsi2c@13670000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13670000 0x1000>; + interrupts = <0 444 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c5_bus>; + clocks = <&clock 125>, <&clock 125>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_6: hsi2c@14E00000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x14E00000 0x1000>; + interrupts = <0 461 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c6_bus>; + clocks = <&clock 126>, <&clock 126>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_7: hsi2c@14E10000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x14E10000 0x1000>; + interrupts = <0 462 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c7_bus>; + clocks = <&clock 127>, <&clock 127>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_8: hsi2c@14E20000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x14E20000 0x1000>; + interrupts = <0 463 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c8_bus>; + clocks = <&clock 128>, <&clock 128>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_9: hsi2c@13680000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13680000 0x1000>; + interrupts = <0 445 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c9_bus>; + clocks = <&clock 129>, <&clock 129>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_10: hsi2c@13690000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x13690000 0x1000>; + interrupts = <0 446 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c10_bus>; + clocks = <&clock 130>, <&clock 130>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + hsi2c_11: hsi2c@136A0000 { + compatible = "samsung,exynos5-hsi2c"; + samsung,check-transdone-int; + reg = <0x136A0000 0x1000>; + interrupts = <0 447 0>; + #address-cells = <1>; + #size-cells = <0>; + pinctrl-names = "default"; + pinctrl-0 = <&hs_i2c11_bus>; + clocks = <&clock 131>, <&clock 131>; + clock-names = "rate_hsi2c", "gate_hsi2c"; + status = "disabled"; + }; + + pinctrl_0: pinctrl@10580000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x10580000 0x1000>; + interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, + <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>, + <0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>, + <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>; + wakeup-interrupt-controller { + compatible = "samsung,exynos4210-wakeup-eint"; + interrupt-parent = <&gic>; + interrupts = <0 16 0>; + samsung,eint-flt-conf; + }; + }; + + pinctrl_1: pinctrl@114B0000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x114B0000 0x1000>; + interrupts = <0 92 0>; + }; + + pinctrl_2: pinctrl@13470000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x13470000 0x1000>; + interrupts = <0 383 0>; + }; + + pinctrl_3: pinctrl@14870000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x14870000 0x1000>; + interrupts = <0 384 0>; + }; + + pinctrl_4: pinctrl@14CD0000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x14CD0000 0x1000>; + interrupts = <0 473 0>; + }; + + pinctrl_5: pinctrl@14CE0000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x14CE0000 0x1000>; + interrupts = <0 474 0>; + }; + + pinctrl_6: pinctrl@14C90000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x14C90000 0x1000>; + interrupts = <0 475 0>; + }; + + pinctrl_7: pinctrl@14CA0000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x14CA0000 0x1000>; + interrupts = <0 476 0>; + }; + + pinctrl_8: pinctrl@10E60000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x10E60000 0x1000>; + interrupts = <0 221 0>; + }; + + pinctrl_9: pinctrl@15690000 { + compatible = "samsung,exynos7420-pinctrl"; + reg = <0x15690000 0x1000>; + interrupts = <0 203 0>; + }; + + dwmmc_0: dwmmc0@15740000 { + compatible = "samsung,exynos7420-dw-mshc"; + reg = <0x15740000 0x2000>; + interrupts = <0 201 0>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 180>, <&clock 182>, <&clock 181>; + clock-names = "biu", "dout_mmc_a", "gate_ciu"; + status = "disabled"; + }; + + dwmmc_1: dwmmc1@15750000 { + compatible = "samsung,exynos7420-dw-mshc"; + reg = <0x15750000 0x2000>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 186>,<&clock 188>, <&clock 187>; + clock-names = "biu", "dout_mmc_a", "gate_ciu"; + status = "disabled"; + }; + + dwmmc_2: dwmmc2@15560000 { + compatible = "samsung,exynos7420-dw-mshc"; + reg = <0x15560000 0x2000>; + interrupts = <0 216 0>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock 189>, <&clock 191>, <&clock 190>; + clock-names = "biu", "dout_mmc_a", "gate_ciu"; + status = "disabled"; + }; + + iommu-domain_fimc-is { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + domain-clients = <&fimc_is>, + <&fimc_is_sensor0>, + <&fimc_is_sensor1>; + + sysmmu_cam0: sysmmu@0x140E0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x140E0000 0x1000>; + interrupts = <0 129 0>; + samsung,power-domain = <&pd_cam0>; + clocks = <&clock CLK_ACLK_CAM0_SYSMMU>, + <&clock CLK_PCLK_CAM0_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AR(0) AW(0) AW(1) AW(2) AW(3) AW(4)>; + }; + pb@1 { + master_axi_id_list = <&fimc_is AR(0) AW(0) AW(1) AW(2) NAID NAID>; + }; + pb@2 { + master_axi_id_list = <&fimc_is_sensor0 AW(0) AW(1) AW(2)>, + <&fimc_is_sensor1 AW(0) AW(1) AW(2)>; + }; + }; + }; + + sysmmu_fimc_scaler: sysmmu@0x141B0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x141B0000 0x1000>; + interrupts = <0 156 0>; + samsung,power-domain = <&pd_isp0>; + clocks = <&clock CLK_ACLK_FIMC_SC_SYSMMU>, + <&clock CLK_PCLK_FIMC_SC_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AW(0) AW(1) AW(2) NAID NAID NAID>; + }; + }; + }; + + sysmmu_fimc_vra: sysmmu@0x141C0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x141C0000 0x1000>; + interrupts = <0 150 0>; + samsung,power-domain = <&pd_isp0>; + clocks = <&clock CLK_ACLK_VRA_SYSMMU>, + <&clock CLK_PCLK_VRA_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AR(0) AR(1) AW(0) AW(1) NAID NAID>; + }; + }; + }; + + sysmmu_fimc_isp1: sysmmu@0x141E0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x141E0000 0x1000>; + samsung,power-domain = <&pd_isp0>; + interrupts = <0 148 0>; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AR(0) AW(0) AW(1) NAID NAID NAID>; + }; + }; + }; + + sysmmu_fimc_isp0: sysmmu@0x14270000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x14270000 0x1000>; + samsung,power-domain = <&pd_isp0>; + interrupts = <0 301 0>; + clocks = <&clock CLK_ACLK_ISP0_SYSMMU>, + <&clock CLK_PCLK_ISP0_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AR(0) AW(0) AW(1) AW(2) NAID NAID>; + }; + }; + }; + + sysmmu_fimc_tpu: sysmmu@0x14280000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x14280000 0x1000>; + samsung,power-domain = <&pd_isp0>; + interrupts = <0 303 0>; + clocks = <&clock CLK_ACLK_TPU_SYSMMU>, + <&clock CLK_PCLK_TPU_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is AR(0) AR(1) AR(2) NAID NAID NAID>; + }; + pb@1 { + master_axi_id_list = <&fimc_is AW(0) AW(1) AW(2) NAID NAID NAID>; + }; + }; + }; + + sysmmu_ispcpu: sysmmu@0x141D0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x141D0000 0x1000>; + samsung,power-domain = <&pd_isp0>; + interrupts = <0 152 0>; + clocks = <&clock CLK_ACLK_ISPCPU_SYSMMU>, + <&clock CLK_PCLK_ISPCPU_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimc_is NAID NAID NAID NAID NAID NAID>; + }; + }; + }; + }; + + iommu-domain_disp0 { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + domain-clients = <&decon_0>, <&decon_1>, + <&vg_0>, <&vgr_0>, <&vg_1>, <&vgr_1>; + + sysmmu_disp_ro: sysmmu@0x13A00000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x13A00000 0x1000>; + interrupts = <0 176 0>; + qos = <15>; + clocks = <&clock CLK_ACLK_DISP_RO_SYSMMU>, + <&clock CLK_PCLK_DISP_RO_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&decon_0 AR(0) AR(1) NAID NAID>, + <&decon_1 AR(0) AR(1) NAID NAID>; + }; + }; + }; + + sysmmu_disp_rw: sysmmu@0x13A10000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x13A10000 0x1000>; + interrupts = <0 179 0>; + qos = <15>; + clocks = <&clock CLK_ACLK_DISP_RW_SYSMMU>, + <&clock CLK_PCLK_DISP_RW_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&decon_0 AR(0) AR(1) AW(0) AW(1)>, + <&decon_1 AR(0) AR(1) AW(0) AW(1)>; + }; + }; + }; + + sysmmu_vpp_0: sysmmu@0x13E20000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x13E20000 0x1000>; + interrupts = <0 256 0>; + qos = <15>; + pb-info { + pb@0 { + master_axi_id_list = <&vg_0 AR(0) AR(1) AR(2) AR(3) AR(4) AR(5)>, + <&vgr_0 AR(0) AR(1) AR(2) AR(3) AR(4) AR(5)>; + }; + }; + }; + + sysmmu_vpp_1: sysmmu@0x13E30000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x13E30000 0x1000>; + interrupts = <0 259 0>; + qos = <15>; + pb-info { + pb@0 { + master_axi_id_list = <&vg_1 AR(0) AR(1) AR(2) AR(3) AR(4) AR(5)>, + <&vgr_1 AR(0) AR(1) AR(2) AR(3) AR(4) AR(5)>; + }; + }; + }; + }; + + iommu-domain_mfc { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + domain-clients = <&mfc_0>, <&hevc>; + + sysmmu_mfc0_0: sysmmu@0x15200000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x15200000 0x1000>; + interrupts = <0 312 0>; + pb-info { + pb@0 { + master_axi_id_list = <&mfc_0 &hevc>; + }; + }; + }; + + sysmmu_mfc0_1: sysmmu@0x15210000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x15210000 0x1000>; + interrupts = <0 315 0>; + pb-info { + pb@0 { + master_axi_id_list = <&mfc_0 &hevc>; + }; + }; + }; + }; + + iommu-domain_mscl { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + domain-clients = <&scaler_0>, <&scaler_1>, <&jpeg_0>; + + scaler_0: scaler@0x150000000 { + compatible = "samsung,exynos5-scaler"; + #pb-id-cells = <0>; + reg = <0x15000000 0x1300>; + interrupts = <0 426 0>; + samsung,power-domain = <&spd_mscl0>; + clocks = <&clock CLK_ACLK_M2MSCALER0>; + clock-names = "gate"; + }; + + scaler_1: scaler@0x150100000 { + compatible = "samsung,exynos5-scaler"; + #pb-id-cells = <0>; + reg = <0x15010000 0x1300>; + interrupts = <0 427 0>; + samsung,power-domain = <&spd_mscl1>; + clocks = <&clock CLK_ACLK_M2MSCALER1>; + clock-names = "gate"; + }; + + jpeg_0: jpeg0@15020000 { + compatible = "samsung,exynos-jpeg"; + #pb-id-cells = <0>; + reg = <0x15020000 0x10000>; + interrupts = <0 434 0>; + ip_ver = <2>; + clocks = <&clock CLK_ACLK_JPEG>; + clock-names = "gate"; + samsung,power-domain = <&spd_jpeg>; + }; + + sysmmu_mscl0: sysmmu@0x15040000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x15040000 0x1000>; + interrupts = <0 428 0>; + pb-info { + pb@0 { + master_axi_id_list = <&scaler_0>; + dir = "r"; + }; + pb@1 { + master_axi_id_list = <&scaler_0>; + dir = "w"; + }; + pb@2 { + master_axi_id_list = <&jpeg_0>; + }; + }; + }; + + sysmmu_mscl1: sysmmu@0x15140000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x15140000 0x1000>; + interrupts = <0 431 0>; + pb-info { + pb@0 { + master_axi_id_list = <&scaler_1>; + dir = "r"; + }; + pb@1 { + master_axi_id_list = <&scaler_1>; + dir = "w"; + }; + }; + }; + }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus"; + interrupt-parent = <&gic>; + ranges; + + pdma1: pdma1@10EB0000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x10EB0000 0x1000>; + interrupts = <0 226 0>; + clocks = <&clock 184>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; + }; + + pdma0: pdma0@10E10000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x10E10000 0x1000>; + interrupts = <0 225 0>; + clocks = <&clock 183>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; + }; + + adma: adma@11420000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x11420000 0x1000>; + interrupts = <0 97 0>; + clocks = <&clock 400>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <16>; + #dma-mcode-addr = <0x03046000>; + }; + }; + + mdev_0: mdev_output { + compatible = "samsung,exynos5-mdev"; + }; + + sysreg_disp: sysreg_disp@0x10050000 { + compatible = "samsung,exynos5-sysreg_disp"; + reg = <0x10050000 0x2000>; + }; + + otp_ctrl: otp_ctrl@0x101E0010 { + compatible = "samsung,exynos5-otp_ctrl"; + reg = <0x101E0010 0x4>; + }; + + dsim_0: dsim@0x13900000 { + compatible = "samsung,exynos5-mipi-dsi"; + reg = <0x13900000 0x1000>; + samsung,power-domain = <&spd_mipi_dsi0>; + interrupts = <0 196 0>; + + clocks = <&clock 221>, <&clock 208>, <&clock 209>, + <&clock 234>, + <&clock 233>; + + clock-names = "pclk_dsim0", "mipi0_rx", "mipi0_bit", + /* rgb data from decon-int to dsim */ + "rgb_vclk0", + /* pclk_ahb2apb_disp0p -> pclk_cp_disp */ + "pclk_disp"; + + pinctrl-names = "turnon_tes", "turnoff_tes"; + pinctrl-0 = <&disp_teson>; + pinctrl-1 = <&disp_tesoff>; + + /* number of using data lane */ + data_lane_cnt = <4>; + }; + + vg_0: vpp@0x13E02000{ + compatible = "samsung,exynos7-vpp"; + #pb-id-cells = <6>; + reg = <0x13E02000 0x1000>; + interrupts = <0 264 0>; + clock-names = "gate", "aclk_lh_vpp0", "aclk_vpp0", + "d_pclk_vpp", "pclk_vpp", "pclk_cp_vpp0"; + clocks = <&clock 500>, <&clock 504>, <&clock 507>, + <&clock 508>, <&clock 509>, <&clock 510>; + samsung,power-domain = <&spd_vg0>; + }; + + vg_1: vpp@0x13E03000{ + compatible = "samsung,exynos7-vpp"; + #pb-id-cells = <6>; + reg = <0x13E03000 0x1000>; + interrupts = <0 265 0>; + clock-names = "gate", "aclk_lh_vpp1", "aclk_vpp1", + "d_pclk_vpp", "pclk_vpp", "pclk_cp_vpp1"; + clocks = <&clock 501>, <&clock 505>, <&clock 506>, + <&clock 508>, <&clock 509>, <&clock 511>; + samsung,power-domain = <&spd_vg1>; + }; + + vgr_0: vpp@0x13E04000{ + compatible = "samsung,exynos7-vpp"; + #pb-id-cells = <6>; + reg = <0x13E04000 0x1000>; + interrupts = <0 266 0>; + clock-names = "gate", "aclk_lh_vpp0", "aclk_vpp0", + "d_pclk_vpp", "pclk_vpp", "pclk_cp_vpp0"; + clocks = <&clock 502>, <&clock 504>, <&clock 507>, + <&clock 508>, <&clock 509>, <&clock 510>; + samsung,power-domain = <&spd_vgr0>; + }; + + vgr_1: vpp@0x13E05000{ + compatible = "samsung,exynos7-vpp"; + #pb-id-cells = <6>; + reg = <0x13E05000 0x1000>; + interrupts = <0 267 0>; + clock-names = "gate", "aclk_lh_vpp1", "aclk_vpp1", + "d_pclk_vpp", "pclk_vpp", "pclk_cp_vpp1"; + clocks = <&clock 503>, <&clock 505>, <&clock 506>, + <&clock 508>, <&clock 509>, <&clock 511>; + samsung,power-domain = <&spd_vgr1>; + }; + + decon_0: decon_fb { + compatible = "samsung,exynos5-decon_driver"; + #pb-id-cells = <4>; + + reg = <0x13930000 0x3000>, + <0x1393D000 0x400>; + + samsung,power-domain = <&spd_decon0>; + + /* interrupt num */ + interrupts = <0 190 0>, <0 188 0>, <0 189 0>; + + /* clock define for decon */ + clocks =<&clock 11>, + <&clock 200>, <&clock 220>, <&clock 201>, + <&clock 202>, <&clock 203>, <&clock 204>, + <&clock 205>, <&clock 206>, <&clock 207>, + <&clock 219>, + <&clock 230>, + <&clock 231>, + <&clock 232>, + <&clock 233>; + + clock-names = /* display dedicated PLL for core and pixel clock */ + "disp_pll", + /* pclk: bus clock, aclk: DMA operation clock and SFR access */ + "d_pclk_disp", "pclk_decon0", "aclk_decon0", + /* eclk: decon core clock */ + "m_decon0_eclk", "d_decon0_eclk", "decon0_eclk", + /* vclk: pixel clock */ + "m_decon0_vclk", "d_decon0_vclk", "decon0_vclk", + /* sclk_dsd: for OTF between vpp and decon-int */ + "sclk_dsd", + /* DISP0 channel: IDMA_G1, IDMA_G2 */ + "aclk_lh_disp0", + /* DISP1 channel : IDMA_G0, IDMA_G3, ODMA_WB0, ODMA_WB1 */ + "aclk_lh_disp1", + /* aclk_lh_async_si_top_disp -> aclk_xiu_disp_rw -> aclk_cp_disp */ + "aclk_disp", + /* pclk_ahb2apb_disp0p -> pclk_cp_disp */ + "pclk_disp"; + + /* GPIO & pin control */ + gpios = <&gpf3 3 0xf>; + + ip_ver = <2>; + max_win = <7>; + n_sink_pad = <7>; + n_src_pad = <1>; + default_win = <0>; + psr_mode = <2>; /* 0: video mode, 1: DP command mode, 2: MIPI command mode */ + trig_mode = <0>; /* 0: hw trigger, 1: sw trigger */ + dsi_mode = <0>; /* 0: single dsi, 1: dual dsi */ + + #address-cells = <1>; + #size-cells = <1>; + ranges; + + cam-stat { + reg = <0x105C4044 0x4>, <0x105C4064 0x4>; + }; + }; + + decon_1: decon_ext { + compatible = "samsung,exynos5-decon_driver"; + #pb-id-cells = <4>; + + reg = <0x13950000 0x10000>; + + samsung,power-domain = <&spd_decon1>; + + /* interrupt num */ + interrupts = <0 195 0>, <0 193 0>, <0 194 0>, <0 192 0>; + + clocks = <&clock 210>, <&clock 211>, <&clock 212>, + <&clock 213>, <&clock 214>, <&clock 215>, + <&clock 216>, <&clock 219>, <&clock 231>, + <&clock 232>, <&clock 233>; + clock-names = "aclk_decon1", "pclk_decon1", "um_decon1_eclk", + "m_decon1_eclk", "d_decon1_eclk", "decon1_eclk", + "decon1_vclk", "sclk_dsd", "aclk_lh_disp1", + "aclk_disp", "pclk_disp"; + + ip_ver = <7>; + max_win = <6>; + n_sink_pad = <6>; + n_src_pad = <1>; + default_win = <0>; + psr_mode = <2>; /* 0: video mode, 1: DP command mode, 2: command mode */ + trig_mode = <0>; /* 0: hw trigger, 1: sw trigger */ + }; + + /* hdmi driver */ + hdmi@13970000 { + compatible = "samsung,exynos5-hdmi_driver"; + reg = <0x13970000 0x80000>, /* hdmi */ + <0x13AF0000 0x8000>; /* hdmi phy */ + samsung,power-domain = <&spd_hdmi>; + + interrupts = <0 198 0>; + + pinctrl-names = "hdmi_hdmi_hpd", "hdmi_ext_hpd"; + pinctrl-0 = <&hdmi_hdmi_hpd>; + pinctrl-1 = <&hdmi_ext_hpd>; + + clocks = <&clock 217>, <&clock 218>, <&clock 223>, <&clock 224>; + clock-names = "hdmi_pixel", "hdmi_tmds", "pclk_hdmi", "pclk_hdmiphy"; + + ip_ver = <7>; + + #address-cells = <1>; + #size-cells = <1>; + ranges; + + hdmiphy-sys { + reg = <0x105C0700 0x4>; + }; + }; + + /* cec driver */ + cec@101B0000 { + compatible = "samsung,exynos5-cec_driver"; + reg = <0x101B0000 0x1000>; + interrupts = <0 19 0>; + + gpios = <&gpa3 1 0xf>; + pinctrl-names = "hdmi_cec"; + pinctrl-0 = <&hdmi_cec>; + + clock-names = "gate_hdmi_cec"; + + clocks = <&clock 2483>; + + #address-cells = <1>; + #size-cells = <1>; + ranges; + + hdmiphy-sys { + reg = <0x105C0700 0x4>; + }; + }; + + + mfc_0: mfc0@152E0000 { + compatible = "samsung,mfc-v6"; + #pb-id-cells = <0>; + reg = <0x152E0000 0x10000>; + interrupts = <0 320 0>; + clock-names = "aclk_mfc", "pclk_mfc", "dout_aclk_mfc_532", "aclk_lh_s_mfc_0", + "aclk_lh_s_mfc_1", "aclk_xiu_mfc_0", "aclk_xiu_mfc_1", + "aclk_xiu_n_async_m_mfc_0", "aclk_xiu_n_async_m_mfc_1", + "aclk_cp_mfc_0", "aclk_cp_mfc_1", "aclk_xiu_n_async_s_mfc_0", + "aclk_xiu_n_async_s_mfc_1", "pclk_xiu_n_async_mfc_0", + "pclk_xiu_n_async_mfc_1", "pclk_cp_mfc_0", "pclk_cp_mfc_1", + "aclk_noc_bus1_nrt", "pclk_gpio_bus1", "aclk_lh_mfc0", + "aclk_lh_mfc1"; + clocks = <&clock 1000>, <&clock 1001>, <&clock 1004>, <&clock 1008>, <&clock 1009>, + <&clock 1010>, <&clock 1011>, <&clock 1012>, <&clock 1013>, <&clock 1014>, + <&clock 1015>, <&clock 1016>, <&clock 1017>, <&clock 1018>, <&clock 1019>, + <&clock 1020>, <&clock 1021>, <&clock 1024>, <&clock 1025>, <&clock 1026>, + <&clock 1027>; + samsung,power-domain = <&pd_mfc>; + status = "ok"; + ip_ver = <10>; + clock_rate = <400000000>; + min_rate = <100000>; + num_qos_steps = <5>; + mfc_qos_table { + mfc_qos_variant_0 { + thrd_mb = <0>; + freq_mfc = <100000>; + freq_int = <100000>; + freq_mif = <167000>; + freq_cpu = <0>; + freq_kfc = <0>; + }; + mfc_qos_variant_1 { + thrd_mb = <108000>; + freq_mfc = <160000>; + freq_int = <133000>; + freq_mif = <222000>; + freq_cpu = <0>; + freq_kfc = <0>; + }; + mfc_qos_variant_2 { + thrd_mb = <244800>; + freq_mfc = <200000>; + freq_int = <200000>; + freq_mif = <413000>; + freq_cpu = <0>; + freq_kfc = <400000>; + }; + mfc_qos_variant_3 { + thrd_mb = <367200>; + freq_mfc = <200000>; + freq_int = <200000>; + freq_mif = <413000>; + freq_cpu = <0>; + freq_kfc = <400000>; + }; + mfc_qos_variant_4 { + thrd_mb = <489600>; + freq_mfc = <400000>; + freq_int = <400000>; + freq_mif = <825000>; + freq_cpu = <0>; + freq_kfc = <400000>; + }; + }; + }; + hevc: hevc@14FE0000 { + compatible = "samsung,hevc"; + #pb-id-cells = <0>; + reg = <0x14FE0000 0x10000>; + interrupts = <0 477 0>; + clock-names = "aclk_hevc", "pclk_hevc", "dout_aclk_hevc_532", + "aclk_lh_async_s_hevc_0", "aclk_lh_async_s_hevc_1", + "aclk_lh_s_mfc_0", "aclk_lh_s_mfc_1", + "aclk_xiu_mfc_0", "aclk_xiu_mfc_1", + "aclk_xiu_n_async_m_mfc_0", "aclk_xiu_n_async_m_mfc_1", + "aclk_cp_mfc_0", "aclk_cp_mfc_1", + "aclk_noc_bus1_nrt", "pclk_gpio_bus1", "aclk_lh_mfc0", + "aclk_lh_mfc1"; + clocks = <&clock 1002>, <&clock 1003>, <&clock 1005>, <&clock 1022>, + <&clock 1023>, <&clock 1008>, <&clock 1009>, <&clock 1010>, + <&clock 1011>, <&clock 1012>, <&clock 1013>, <&clock 1014>, + <&clock 1015>, <&clock 1024>, <&clock 1025>, <&clock 1026>, + <&clock 1027>; + status = "ok"; + samsung,power-domain = <&pd_hevc>; + ip_ver = <1>; + clock_rate = <400000000>; + min_rate = <100000>; + num_qos_steps = <4>; + hevc_qos_table { + hevc_qos_variant_0 { + thrd_mb = <0>; + freq_hevc = <100000>; + freq_int = <100000>; + freq_mif = <167000>; + freq_cpu = <0>; + freq_kfc = <0>; + }; + hevc_qos_variant_1 { + thrd_mb = <108000>; + freq_hevc = <134000>; + freq_int = <133000>; + freq_mif = <222000>; + freq_cpu = <0>; + freq_kfc = <0>; + }; + hevc_qos_variant_2 { + thrd_mb = <244800>; + freq_hevc = <200000>; + freq_int = <200000>; + freq_mif = <413000>; + freq_cpu = <0>; + freq_kfc = <400000>; + }; + hevc_qos_variant_3 { + thrd_mb = <489600>; + freq_hevc = <400000>; + freq_int = <400000>; + freq_mif = <825000>; + freq_cpu = <0>; + freq_kfc = <400000>; + }; + }; + }; + + mali { + compatible = "arm,mali"; + reg = <0x14AC0000 0x5000>; + interrupts = <0 241 0>, <0 242 0>, <0 240 0>; + clocks = <&clock 1>, <&clock 10>, <&clock 50>, <&clock 160>, <&clock 161>, <&clock 162>; + clock-names = "fin_pll", "fout_g3d_pll", "mout_bus_pll_g3d", "aclk_g3d", "dout_aclk_g3d", "mout_g3d"; + samsung,power-domain = <&pd_g3d>; + }; + + fimc_is_sensor0: fimc_is_sensor@14020000 { + compatible = "samsung,exynos5-fimc-is-sensor"; + #pb-id-cells = <3>; + reg = <0x14020000 0x10000>, <0x14000000 0x10000>; + interrupts = <0 133 0>; + pinctrl-names = "ch0", "af0"; + pinctrl-0 = <&fimc_is_ch0_i2c &fimc_is_ch0_mclk>; + pinctrl-1 = <&fimc_is_ch0_i2c &fimc_is_ch0_mclk &fimc_is_ch2_i2c>; + samsung,power-domain = <&pd_cam0>; + clock-names = "sclk_isp_sensor0", /* 16 */ + "sclk_isp_sensor1", + "sclk_isp_sensor2", + + "dout_sclk_isp_sensor0", /* 20 */ + "dout_sclk_isp_sensor1", + "dout_sclk_isp_sensor2", + + "mout_sclk_isp_sensor0", /* 23 */ + "mout_sclk_isp_sensor1", + "mout_sclk_isp_sensor2"; + clocks = <&clock 16>, + <&clock 17>, + <&clock 18>, + + <&clock 20>, + <&clock 21>, + <&clock 22>, + + <&clock 23>, + <&clock 24>, + <&clock 25>; + }; + + fimc_is_sensor1: fimc_is_sensor@14030000 { + compatible = "samsung,exynos5-fimc-is-sensor"; + #pb-id-cells = <3>; + reg = <0x14030000 0x40000>, <0x14010000 0x10000>; + interrupts = <0 134 0>; + pinctrl-names = "ch1", "ch2"; + pinctrl-0 = <&fimc_is_ch1_i2c &fimc_is_ch2_mclk>; + pinctrl-1 = <&fimc_is_ch2_i2c &fimc_is_ch2_mclk>; + samsung,power-domain = <&pd_cam0>; + clock-names = "sclk_isp_sensor0", /* 16 */ + "sclk_isp_sensor1", + "sclk_isp_sensor2", + + "dout_sclk_isp_sensor0", /* 20 */ + "dout_sclk_isp_sensor1", + "dout_sclk_isp_sensor2", + + "mout_sclk_isp_sensor0", /* 23 */ + "mout_sclk_isp_sensor1", + "mout_sclk_isp_sensor2"; + + clocks = <&clock 16>, + <&clock 17>, + <&clock 18>, + + <&clock 20>, + <&clock 21>, + <&clock 22>, + + <&clock 23>, + <&clock 24>, + <&clock 25>; + }; + + fimc_is: fimc_is@14200000 { + compatible = "samsung,exynos5-fimc-is"; + #pb-id-cells = <6>; + reg = <0x14370000 0x10000>; + interrupts = <0 171 0>, /* ARMISP_GIC */ + <0 172 0>; /* ISP_GIC */ + pinctrl-names = "default"; + pinctrl-0 = <&fimc_is_uart &fimc_is_flash>; + clocks = <&clock 1>, + + <&clock 12>, + + <&clock 26>, + <&clock 27>, + <&clock 28>, + <&clock 29>, + <&clock 30>, + <&clock 31>, + <&clock 32>, + + <&clock 35>, + <&clock 36>, + <&clock 37>, + <&clock 38>, + <&clock 39>, + <&clock 40>, + <&clock 41>, + + <&clock 2000>, + <&clock 2001>, + <&clock 2002>, + + <&clock 2005>, + <&clock 2006>, + + <&clock 2010>, + <&clock 2011>, + <&clock 2012>, + <&clock 2013>, + <&clock 2014>, + <&clock 2015>, + <&clock 2016>, + <&clock 2017>, + <&clock 2018>, + + <&clock 2020>, + <&clock 2021>, + <&clock 2022>, + <&clock 2023>, + <&clock 2024>, + <&clock 2025>, + + <&clock 2030>, + <&clock 2031>, + <&clock 2032>, + + <&clock 2035>, + <&clock 2036>, + <&clock 2037>, + + <&clock 2040>, + <&clock 2041>, + + <&clock 2045>, + <&clock 2046>, + <&clock 2047>, + <&clock 2048>, + <&clock 2049>, + <&clock 2050>, + <&clock 2051>, + <&clock 2052>, + <&clock 2053>, + + <&clock 2055>, + <&clock 2056>, + <&clock 2057>, + <&clock 2058>, + <&clock 2059>, + <&clock 2060>, + + <&clock 2065>, + <&clock 2066>, + <&clock 2067>, + + <&clock 3005>, + + <&clock 3010>, + <&clock 3011>, + + <&clock 3015>, + <&clock 3016>, + + <&clock 3020>, + <&clock 3021>, + + <&clock 3025>, + <&clock 3026>, + + <&clock 3030>, + <&clock 3031>, + + <&clock 3035>, + <&clock 3036>, + + <&clock 3040>, + + <&clock 3045>, + <&clock 3046>, + <&clock 3047>, + <&clock 3048>, + + <&clock 3050>, + <&clock 3051>, + + <&clock 3055>, + <&clock 3056>, + <&clock 3057>, + + <&clock 3060>, + <&clock 3061>, + + <&clock 3065>, + <&clock 3066>, + + <&clock 3070>, + <&clock 3071>, + <&clock 3072>, + <&clock 3073>, + <&clock 3074>, + <&clock 3075>, + <&clock 3076>, + <&clock 3077>, + <&clock 3078>, + <&clock 3079>, + <&clock 3080>, + <&clock 3081>, + <&clock 3082>, + <&clock 3083>, + <&clock 3084>, + + <&clock 3086>, + <&clock 3087>, + <&clock 3088>, + <&clock 3089>, + + <&clock 3090>, + <&clock 3091>, + + <&clock 3095>, + <&clock 3096>, + <&clock 3097>, + <&clock 3098>, + <&clock 3099>, + <&clock 3100>, + <&clock 3101>, + + <&clock 3105>, + <&clock 3106>, + <&clock 3107>, + <&clock 3108>, + <&clock 3109>, + <&clock 3110>, + <&clock 3111>, + + <&clock 3115>, + <&clock 3116>, + <&clock 3117>, + <&clock 3118>, + <&clock 3119>, + + <&clock 3120>, + <&clock 3121>, + + <&clock 3125>, + <&clock 3126>, + <&clock 3127>, + + <&clock 3130>, + <&clock 3131>, + <&clock 3132>, + <&clock 3133>, + <&clock 3134>, + <&clock 3135>, + <&clock 3136>, + <&clock 3137>, + <&clock 3138>, + <&clock 3139>, + <&clock 3140>, + <&clock 3141>, + <&clock 3142>, + <&clock 3143>, + + <&clock 3150>, + <&clock 3151>, + <&clock 3152>, + <&clock 3153>, + <&clock 3154>, + <&clock 3155>, + <&clock 3156>, + + <&clock 3165>, + <&clock 3166>, + <&clock 3167>, + <&clock 3168>, + <&clock 3169>, + <&clock 3170>, + <&clock 3171>, + <&clock 3172>, + <&clock 3173>, + <&clock 3174>, + <&clock 3175>, + <&clock 3176>, + <&clock 3177>, + <&clock 3178>, + <&clock 3179>, + <&clock 3180>, + <&clock 3181>, + <&clock 3182>, + <&clock 3183>, + <&clock 3184>, + <&clock 3185>, + + <&clock 3190>, + <&clock 3191>, + <&clock 3192>, + <&clock 3193>, + <&clock 3194>, + + <&clock 3200>, + <&clock 3201>, + + <&clock 3205>, + <&clock 3206>, + <&clock 3207>, + <&clock 3208>, + <&clock 3209>, + <&clock 3210>, + <&clock 3211>, + <&clock 3212>, + <&clock 3213>, + <&clock 3214>, + <&clock 3215>, + + <&clock 3220>, + <&clock 3221>, + <&clock 3222>, + <&clock 3223>, + + <&clock 3225>, + <&clock 3226>, + + <&clock 3230>, + <&clock 3231>, + <&clock 3232>, + + <&clock 3235>, + <&clock 3236>, + + <&clock 3240>, + <&clock 3241>, + + <&clock 3245>, + <&clock 3246>, + <&clock 3247>, + <&clock 3248>, + <&clock 3249>, + + <&clock 3255>, + <&clock 3256>, + <&clock 3257>, + + <&clock 3260>, + <&clock 3261>, + <&clock 3262>, + <&clock 3263>, + + <&clock 3265>, + <&clock 3266>, + <&clock 3267>, + + <&clock 3270>, + <&clock 3271>, + <&clock 3272>, + + <&clock 3275>, + <&clock 3276>, + <&clock 3277>, + <&clock 3278>, + <&clock 3279>, + <&clock 3280>, + <&clock 3281>, + <&clock 3282>, + <&clock 3283>, + <&clock 3284>, + <&clock 3285>, + <&clock 3286>, + <&clock 3287>, + <&clock 3288>, + + <&clock 3290>, + <&clock 3291>, + <&clock 3292>, + <&clock 3293>, + <&clock 3294>, + <&clock 3295>, + <&clock 3296>, + <&clock 3297>, + <&clock 3298>, + <&clock 3299>, + + <&clock 3300>, + <&clock 3301>, + <&clock 3302>, + <&clock 3303>, + <&clock 3304>, + + <&clock 3305>, + <&clock 3306>, + <&clock 3307>, + <&clock 3308>, + <&clock 3309>, + <&clock 3310>, + <&clock 3311>, + + <&clock 3315>, + <&clock 3316>, + <&clock 3317>, + <&clock 3318>, + + <&clock 3320>, + <&clock 3321>, + <&clock 3322>, + <&clock 3323>, + <&clock 3324>, + + <&clock 3325>, + <&clock 3326>, + <&clock 3327>, + + <&clock 3330>, + <&clock 3331>, + + <&clock 3335>, + <&clock 3336>, + <&clock 3337>, + <&clock 3338>, + <&clock 3339>, + <&clock 3340>, + <&clock 3341>, + <&clock 3342>, + <&clock 3343>, + + <&clock 3345>, + <&clock 3346>, + <&clock 3347>, + <&clock 3348>, + <&clock 3349>, + <&clock 3350>, + + <&clock 3355>, + <&clock 3356>, + <&clock 3357>, + + <&clock 3360>, + <&clock 3361>, + <&clock 3362>, + <&clock 3363>, + <&clock 3364>, + <&clock 3365>, + + <&clock 3370>, + <&clock 3371>, + <&clock 3372>, + <&clock 3373>; + + clock-names = "oscclk", /* 1 */ + + "mout_isp_pll", /* 12 */ + + "mout_isp_pll_ctrl", /* 26 */ + "mout_cam_pll_ctrl", + "mout_aud_pll", + "mout_top0_mfc_pll", + "mout_top0_cci_pll", + "mout_top0_bus1_pll", + "mout_top0_bus0_pll", + + "bus0_pll", /* 35 */ + "bus1_pll", + "isp_pll", + "cam_pll", + "cci_pll", + "mfc_pll", + "aud_pll", + + "dout_aclk_isp0_isp0_590", /* 2000 */ + "dout_aclk_isp0_tpu_590", + "dout_aclk_isp0_trex_532", + + "dout_aclk_isp1_isp1_468", /* 2005 */ + "dout_aclk_isp1_ahb_117", + + "dout_aclk_cam0_csis0_690", /* 2010 */ + "dout_aclk_cam0_bnsa_690", + "dout_aclk_cam0_bnsb_690", + "dout_aclk_cam0_bnsd_690", + "dout_aclk_cam0_csis1_174", + "dout_aclk_cam0_3aa0_690", + "dout_aclk_cam0_3aa1_468", + "dout_aclk_cam0_trex_532", + "dout_aclk_cam0_nocp_133", + + "dout_aclk_cam1_sclvra_491", /* 2020 */ + "dout_aclk_cam1_arm_668", + "dout_aclk_cam1_busperi_334", + "dout_aclk_cam1_bnscsis_133", + "dout_aclk_cam1_nocp_133", + "dout_aclk_cam1_trex_532", + + "dout_sclk_isp_spi0", /* 2030 */ + "dout_sclk_isp_spi1", + "dout_sclk_isp_uart", + + "mout_aclk_isp0_isp0_590", /* 2035 */ + "mout_aclk_isp0_tpu_590", + "mout_aclk_isp0_trex_532", + + "mout_aclk_isp1_isp1_468", /* 2040 */ + "mout_aclk_isp0_ahb_117", + + "mout_aclk_cam0_csis0_690", /* 2045 */ + "mout_aclk_cam0_bnsa_690", + "mout_aclk_cam0_bnsb_690", + "mout_aclk_cam0_bnsd_690", + "mout_aclk_cam0_csis1_174", + "mout_aclk_cam0_3aa0_690", + "mout_aclk_cam0_3aa1_468", + "mout_aclk_cam0_trex_532", + "mout_aclk_cam0_nocp_133", + + "mout_aclk_cam1_sclvra_491", /* 2055 */ + "mout_aclk_cam1_arm_668", + "mout_aclk_cam1_busperi_334", + "mout_aclk_cam1_bnscsis_133", + "mout_aclk_cam1_nocp_133", + "mout_aclk_cam1_trex_532", + + "mout_sclk_isp_spi0", /* 2065 */ + "mout_sclk_isp_spi1", + "mout_sclk_isp_uart", + + "gate_aclk_csis0_i_wrap", /* 3005 */ + + "gate_aclk_fimc_bns_a", /* 3010 */ + "gate_aclk_trex_a_5x1_bns_a", + + "gate_pclk_fimc_bns_a", /* 3015 */ + "gate_cclk_asyncapb_socp_fimc_bns_a", + + "gate_aclk_fimc_bns_b", /* 3020 */ + "gate_aclk_trex_a_5x1_bns_b", + + "gate_pclk_fimc_bns_b", /* 3025 */ + "gate_cclk_asyncapb_socp_fimc_bns_b", + + "gate_aclk_fimc_bns_d", /* 3030 */ + "gate_aclk_trex_a_5x1_bns_d", + + "gate_pclk_fimc_bns_d", /* 3035 */ + "gate_cclk_asyncapb_socp_fimc_bns_d", + + "gate_aclk_csis1_i_wrap", /* 3040 */ + + "gate_aclk_fimc_3aa0", /* 3045 */ + "gate_aclk_trex_a_5x1_aa0", + "gate_aclk_pxl_asbs_fimc_bns_c", + "gate_aclk_pxl_asbs_3aa0_in", + + "gate_pclk_fimc_3aa0", /* 3050 */ + "gate_cclk_asyncapb_socp_3aa0", + + "gate_aclk_fimc_3aa1", /* 3055 */ + "gate_aclk_trex_a_5x1_aa1", + "gate_aclk_pxl_asbs_3aa1_in", + + "gate_pclk_fimc_3aa1", /* 3060 */ + "gate_cclk_asyncapb_socp_3aa1", + + "gate_aclk_trex_a_5x1", /* 3065 */ + "gate_aclk_axi_lh_async_si_top_cam0", + + "gate_pclk_csis0", /* 3070 */ + "gate_pclk_csis1", + "gate_aclk_axi2apb_bridge_is0p", + "gate_pclk_asyncapb_socp_3aa0", + "gate_pclk_asyncapb_socp_3aa1", + "gate_pclk_asyncapb_socp_fimc_bns_a", + "gate_pclk_asyncapb_socp_fimc_bns_b", + "gate_pclk_asyncapb_socp_fimc_bns_d", + "gate_pclk_freeruncnt", + "gate_aclk_xiu_is0x", + "gate_aclk_axi2ahb_is0p", + "gate_hclk_ahbsyncdn_cam0", + "gate_aclk_xiu_async_mi_cam0", + "gate_pclk_xiu_async_mi_cam0", + "gate_aclk_xiu_async_mi_is0x", + + "gate_pclk_xiu_async_mi_is0x", /* 3085 */ + "gate_pclk_pmu_cam0", + "gate_hclk_ahb2apb_bridge_is0p", + "gate_pclk_trex_a_5x1", + + "gate_aclk_pxl_asbs_fimc_bns_c_int", /* 3090 */ + "gate_aclk_pxl_asbm_fimc_bns_c_int", + + "gate_aclk_200_cam0_noc_p_cam0", /* 3095 */ + "gate_aclk_xiu_async_si_is0x", + "gate_user_phyclk_rxbyteclkhs0_s2a", + "gate_user_phyclk_rxbyteclkhs0_s4", + "gate_user_phyclk_rxbyteclkhs1_s4", + "gate_user_phyclk_rxbyteclkhs2_s4", + "gate_user_phyclk_rxbyteclkhs3_s4", + + "gate_aclk_fimc_scaler", /* 3105 */ + "gate_aclk_fimc_vra", + "gate_aclk_pxl_asbs_from_blkc", + "gate_clk_fimc_scaler", + "gate_clk_fimc_vra", + "gate_clk_scaler_trex_b", + "gate_clk_vra_trex_b", + + "gate_pclk_fimc_scaler", /* 3115 */ + "gate_pclk_fimc_vra", + "gate_cclk_asyncapb_socp_fimc_scaler", + "gate_cclk_asyncapb_socp_fimc_vra_s0", + "gate_cclk_asyncapb_socp_fimc_vra_s1", + + "gate_aclk_xiu_n_async_si_cortex", /* 3120 */ + "gate_clk_mcu_isp_400_isp_arm_sys", + + "gate_atclks_asatbslv_cam1_cssys", /* 3125 */ + "gate_pclkdbg_asapbmst_cssys_cam1", + "gate_clk_csatbdownsizer_cam1", + + "gate_aclk_axi2apb_bridge_is3p", /* 3130 */ + "gate_aclk_axispcx, gate_aclk_axisphx", + "gate_aclk_gic_isp_arm_sys", + "gate_aclk_r_axispcx", + "gate_aclk_r_axisphx", + "gate_aclk_xiu_ispx_1x4", + "gate_aclk_xiu_n_async_mi_cortex", + "gate_aclk_xiu_n_async_si_cam1", + "gate_aclk_xiu_n_async_si_to_blkc", + "gate_aclk_xiu_n_async_si_to_blkd", + "gate_clk_isp_cpu_trex_b", + "gate_hclk_ahbsyncdn_isp_peri", + "gate_hclk_ahbsyncdn_isp2h", + "gate_hclkm_asyncahb_cam1", + + "gate_pclk_asyncapb_socp_fimc_bns_c", /* 3150 */ + "gate_pclk_asyncapb_socp_fimc_scaler", + "gate_pclk_asyncapb_socp_fimc_vra_s0", + "gate_pclk_asyncapb_socp_fimc_vra_s1", + "gate_pclk_csis2", + "gate_pclk_fimc_is_b_glue", + "gate_pclk_xiu_n_async_mi_cortex", + + "gate_hclk_ahb_sfrisp2h", /* 3165 */ + "gate_hclk_ahb2apb_bridge_is3p", + "gate_hclk_ahb2apb_bridge_is5p", + "gate_hclk_asyncahbslave_to_blkc", + "gate_hclk_asyncahbslave_to_blkd", + "gate_pclk_i2c0_isp", + "gate_pclk_i2c1_isp", + "gate_pclk_i2c2_isp", + "gate_pclk_mcuctl_isp", + "gate_pclk_mpwm_isp", + "gate_pclk_mtcadc_isp", + "gate_pclk_pwm_isp", + "gate_pclk_spi0_isp", + "gate_pclk_spi1_isp", + "gate_pclk_trex_b", + "gate_pclk_uart_isp", + "gate_pclk_wdt_isp", + "gate_pclk_xiu_n_async_mi_from_blkd", + "gate_pclk_pmu_cam1", + "gate_sclk_isp_pwm", + "gate_sclk_isp_mpwm", + + "gate_pclk_fimc_bns_c", /* 3190 */ + "gate_aclk_fimc_bns_c", + "gate_cclk_asyncapb_socp_fimc_bns_c", + "gate_clk_bns_c_trex_b", + "gate_aclk_wrap_csis2", + + "gate_clk_133_cam1_noc_p_cam1", /* 3200 */ + "gate_hclks_asyncahb_cam1", + + "gate_clk_axlh_async_si_top_cam1", /* 3205 */ + "gate_aclk_xiu_n_async_mi_from_blkd", + "gate_clk_b_trex_b", + "gate_user_sclk_isp_spi0", + "gate_user_sclk_isp_spi1", + "gate_user_sclk_isp_uart", + "gate_sclk_isp_mtcadc", + "gate_sclk_i2c0_isp", + "gate_sclk_i2c1_isp", + "gate_sclk_i2c2_isp", + "gate_user_phyclk_rxbyteclkhs0_s2b", + + "gate_clk_isp0_trex_c", /* 3220 */ + "gate_aclk_isp_v4", + "gate_clk_isp_v4", + "gate_clk_pxl_asb_s_in", + + "gate_cclk_asyncapb_isp", /* 3225 */ + "gate_pclk_isp_v4", + + "gate_clk_tpu_trex_c", /* 3230 */ + "gate_aclk_tpu_v1", + "gate_clk_tpu_v1", + + "gate_cclk_asyncapb_tpu", /* 3235 */ + "gate_pclk_tpu_v1", + + "gate_clk_axi_lh_async_si_top_isp0", /* 3240 */ + "gate_clk_c_trex_c", + + "gate_pclk_asyncapb_isp", /* 3245 */ + "gate_pclk_asyncapb_tpu", + "gate_aclk_axi2apb_bridge", + "gate_aclk_xiu_async_m ", + "gate_pclk_pmu_isp0", + + "gate_hclk_ahb2apb_bridge", /* 3255 */ + "gate_pclk_trex_c", + "gate_hclkm_ahb_async_m", + + "gate_aclk_fimc_isp1", /* 3260 */ + "gate_clk_fimc_isp1", + "gate_aclk_pxl_asbs", + "gate_aclk_xiu_n_async_si", + + "gate_pclk_fimc_isp1", /* 3265 */ + "gate_aclk_xiu_n_async_mi", + "gate_aclk_axi2apb_bridge_is2p", + + "gate_hclk_ahb2apb_bridge_is2p", /* 3270 */ + "gate_hclkm_asyncahbmaster", + "gate_pclk_pmu_isp1", + + "mout_user_mux_aclk_cam0_csis0_690", /* 3275 */ + "mout_user_mux_aclk_cam0_bnsa_690", + "mout_user_mux_aclk_cam0_bnsb_690", + "mout_user_mux_aclk_cam0_bnsd_690", + "mout_user_mux_aclk_cam0_csis1_174", + "mout_user_mux_aclk_cam0_3aa0_690", + "mout_user_mux_aclk_cam0_3aa1_468", + "mout_user_mux_aclk_cam0_trex_532", + "mout_user_mux_aclk_cam0_nocp_133", + "mout_user_mux_phyclk_rxbyteclkhs0_s2a", + "mout_user_mux_phyclk_rxbyteclkhs0_s4", + "mout_user_mux_phyclk_rxbyteclkhs1_s4", + "mout_user_mux_phyclk_rxbyteclkhs2_s4", + "mout_user_mux_phyclk_rxbyteclkhs3_s4", + + "mout_user_mux_aclk_cam1_sclvra_491", /* 3290 */ + "mout_user_mux_aclk_cam1_arm_668", + "mout_user_mux_aclk_cam1_busperi_334", + "mout_user_mux_aclk_cam1_bnscsis_133", + "mout_user_mux_aclk_cam1_nocp_133", + "mout_user_mux_aclk_cam1_trex_532", + "mout_user_mux_sclk_isp_spi0", + "mout_user_mux_sclk_isp_spi1", + "mout_user_mux_sclk_isp_uart", + "mout_user_mux_phyclk_hs0_csis2_rx_byte", + + "mout_user_mux_aclk_isp0_isp0_590", /* 3300 */ + "mout_user_mux_aclk_isp0_tpu_590", + "mout_user_mux_aclk_isp0_trex_532", + "mout_user_mux_aclk_isp1_isp1_468", + "mout_user_mux_aclk_isp1_ahb_117", + + "dout_clkdiv_pclk_cam0_bnsa_345", /* 3305 */ + "dout_clkdiv_pclk_cam0_bnsb_345", + "dout_clkdiv_pclk_cam0_bnsd_345", + "dout_clkdiv_pclk_cam0_3aa0_345", + "dout_clkdiv_pclk_cam0_3aa1_234", + "dout_clkdiv_pclk_cam0_trex_266", + "dout_clkdiv_pclk_cam0_trex_133", + + "dout_clkdiv_pclk_cam1_sclvra_246", /* 3315 */ + "dout_clkdiv_pclk_cam1_arm_167", + "dout_clkdiv_pclk_cam1_busperi_167", + "dout_clkdiv_pclk_cam1_busperi_84", + + "dout_clkdiv_pclk_isp0_isp0_295", /* 3320 */ + "dout_clkdiv_pclk_isp0_tpu_295", + "dout_clkdiv_pclk_isp0_trex_266", + "dout_clkdiv_pclk_isp0_trex_133", + "dout_clkdiv_pclk_isp1_isp1_234", + + "aclk_isp0_isp0_590", /* 3325 */ + "aclk_isp0_tpu_590", + "aclk_isp0_trex_532", + + "aclk_isp1_isp1_468", /* 3330 */ + "aclk_isp1_ahb_117", + + "aclk_cam0_csis0_690", /* 3335 */ + "aclk_cam0_bnsa_690", + "aclk_cam0_bnsb_690", + "aclk_cam0_bnsd_690", + "aclk_cam0_csis1_174", + "aclk_cam0_3aa0_690", + "aclk_cam0_3aa1_468", + "aclk_cam0_trex_532", + "aclk_cam0_nocp_133", + + "aclk_cam1_sclvra_491", /* 3345 */ + "aclk_cam1_arm_668", + "aclk_cam1_busperi_334", + "aclk_cam1_bnscsis_133", + "aclk_cam1_nocp_133", + "aclk_cam1_trex_532", + + "sclk_isp_spi0", /* 3355 */ + "sclk_isp_spi1", + "sclk_isp_uart", + + "phyclk_rxbyteclkhs0_s2a", /* 3360 */ + "phyclk_rxbyteclkhs0_s4", + "phyclk_rxbyteclkhs1_s4", + "phyclk_rxbyteclkhs2_s4", + "phyclk_rxbyteclkhs3_s4", + "phyclk_hs0_csis2_rx_byte", + + "gate_aclk_lh_cam0", /* 3370 */ + "gate_aclk_lh_cam1", + "gate_aclk_lh_isp", + "gate_aclk_noc_bus0_nrt"; + + samsung,power-domain = <&pd_isp0>; + status = "ok"; + /* This seq of declaration is very important.*/ + /* It should be matched to enum FIMC_IS_CLK_GATE_IP */ + clk_gate_enums =<0>, /* 3a1 */ + <1>, /* isp */ + <2>, /* drc */ + <3>, /* scc */ + <5>, /* dis */ + <6>, /* 3dnr */ + <7>, /* scp */ + <8>, /* fd */ + <9>; /* 3a0 */ + clk_gate_strs = "gate_3aa1", + "gate_isp", + "gate_drc", + "gate_scalerc", + "gate_dis", + "gate_3dnr", + "gate_scalerp", + "gate_fd", + "gate_3aa0"; + clk_gate_ctrl { + /* 3a0 */ + group0 { + mask_clk_on_org = <9>; + mask_clk_off_self_org = <9>; + }; + /* 3a1 */ + group1 { + /* not defined */ + }; + /* isp */ + group2 { + mask_clk_on_org = <1>, + <2>, + <3>, + <5>, + <6>, + <7>, + <8>; + mask_clk_off_self_org = <1>, + <2>, + <3>, + <5>, + <6>, + <7>, + <8>; + }; + }; + }; + + pd_aud: pd-aud@105c4000 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4000 0x20>; + }; + + pd_cam0: pd-cam0@105c4040 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4040 0x20>; + parent = <&pd_cam1>; + bts-status = "enabled"; + }; + + pd_cam1: pd-cam1@105c4060 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4060 0x20>; + bts-status = "enabled"; + }; + + pd_disp: pd-disp@105c4080 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4080 0x20>; + + spd_decon0: spd-decon0@105c4080 { + compatible = "samsung,exynos-spd"; + bts-status = "enabled"; + }; + + spd_decon1: spd-decon1@105c4080 { + compatible = "samsung,exynos-spd"; + bts-status = "enabled"; + }; + + spd_hdmi: spd-hdmi@105c4080 { + compatible = "samsung,exynos-spd"; + }; + + spd_mipi_dsi0: spd-mipi-dsi0@105c4080 { + compatible = "samsung,exynos-spd"; + }; + }; + + pd_g2d: pd-g2d@105c40e0 { + compatible = "samsung,exynos-pd"; + reg = <0x105c40e0 0x20>; + }; + + pd_g3d: pd-g3d@105c4100 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4100 0x20>; + pd-option = <0x182>; + status = "disabled"; + }; + + pd_hevc: pd-hevc@105c4120 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4120 0x20>; + parent = <&pd_mfc>; + }; + + pd_isp0: pd-isp0@105c4140 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4140 0x20>; + parent = <&pd_isp1 &pd_cam0 &pd_cam1>; + }; + + pd_isp1: pd-isp1@105c4180 { + compatible = "samsung,exynos-pd"; + reg = <0x105c4180 0x20>; + parent = <&pd_cam1>; + }; + + pd_mfc: pd-mfc@105c41a0 { + compatible = "samsung,exynos-pd"; + reg = <0x105c41a0 0x20>; + bts-status = "enabled"; + }; + + pd_mscl: pd-mscl@105c41c0 { + compatible = "samsung,exynos-pd"; + reg = <0x105c41c0 0x20>; + + spd_mscl0: spd_mscl0@150c41c0 { + compatible = "samsung,exynos-spd"; + }; + + spd_mscl1: spd_mscl1@150c41c0 { + compatible = "samsung,exynos-spd"; + }; + + spd_jpeg: spd_jpeg@150c41c0 { + compatible = "samsung,exynos-spd"; + }; + }; + + pd_vpp: pd-vpp@105c41e0 { + compatible = "samsung,exynos-pd"; + reg = <0x105c41e0 0x20>; + bts-status = "enabled"; + + spd_vg0: spd-vg0@105c41e0 { + compatible = "samsung,exynos-spd"; + }; + + spd_vg1: spd-vg1@105c41e0 { + compatible = "samsung,exynos-spd"; + }; + + spd_vgr0: spd-vgr0@105c41e0 { + compatible = "samsung,exynos-spd"; + }; + + spd_vgr1: spd-vgr1@105c41e0 { + compatible = "samsung,exynos-spd"; + }; + }; + + usb@15400000 { + compatible = "samsung,exynos5-dwusb3"; + clocks = <&clock 5010>, <&clock 5011>; + clock-names = "aclk", "sclk"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + status = "disabled"; + + dwc3 { + compatible = "synopsys,dwc3"; + reg = <0x15400000 0x10000>; + interrupts = <0 223 0>; + usb-phy = <&dwc3_usb2_phy &dwc3_usb3_phy>; + }; + }; + + dwc3_usb2_phy: usbphy { + compatible = "samsung,exynos5-usb2phy-dummy"; + }; + + dwc3_usb3_phy: usbphy@15500000 { + compatible = "samsung,exynos7420-usb3phy"; + reg = <0x15500000 0x100>; + clocks = <&clock 1>, <&clock 5012>, <&clock 5013>; + clock-names = "ext_xtal", "phyclock", "pipe_pclk"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + usbphy-sys { + reg = <0x105C0704 0x4>; + }; + }; + + ehci: usb@15510000 { + compatible = "samsung,exynos5-ehci"; + reg = <0x15510000 0x100>; + interrupts = <0 222 0>; + clocks = <&clock 5014>; + clock-names = "usbhost"; + usb-phy = <&usb2_phy>; + status = "ok"; + }; + + ohci: usb@15520000 { + compatible = "samsung,exynos5-ohci"; + reg = <0x15520000 0x100>; + interrupts = <0 222 0>; + clocks = <&clock 5014>; + clock-names = "usbhost"; + usb-phy = <&usb2_phy>; + status = "ok"; + }; + + usb2_phy: usb2phy@15530000 { + compatible = "samsung,exynos7420-usb2phy"; + reg = <0x15530000 0x100>; + clocks = <&clock 1>, <&clock 5015>, <&clock 5016>; + clock-names = "ext_xtal", "freeclk", "phyclk"; + samsung,hsicphy_en_mask = <0x2>; + samsung,hsicphy_reg_offset = <0x4>; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + usbphy-sys { + reg = <0x105C0700 0xC>; + }; + }; + + tmu@10060000 { + compatible = "samsung,exynos7420-tmu"; + reg = <0x10060000 0x200>, + <0x10064000 0x200>, + <0x10068000 0x200>, + <0x1006C000 0x200>; + interrupts = <0 108 0>, + <0 124 0>, + <0 109 0>, + <0 107 0>; + + /* For DTM platform data */ + threshold_falling = <2>; + gain = <9 8 9 9>; + reference_voltage = <19 16 19 19>; + noise_cancel_mode = <4>; + cal_type = <1>; /* 1: ONE_POINT_TRIMMING, 2: TWO_POINT_TRIMMING */ + efuse_value = <75>; + trigger_level_count = <8>; + throttle_count = <6>; + throttle_active_count = <1>; + throttle_passive_count = <5>; + hotplug_out_threshold = <100>; + hotplug_in_threshold = <95>; + + trigger_level_table { + trigger_level_0 { + temp = <80>; + enable = <1>; + }; + trigger_level_1 { + temp = <85>; + enable = <1>; + }; + trigger_level_2 { + temp = <90>; + enable = <1>; + }; + trigger_level_3 { + temp = <95>; + enable = <1>; + }; + trigger_level_4 { + temp = <100>; + enable = <1>; + }; + trigger_level_5 { + temp = <110>; + enable = <1>; + }; + trigger_level_6 { + /* Dummy trigger_level. + 7420's DTM Policy uses only 6 throttling level. */ + temp = <110>; + enable = <0>; + }; + trigger_level_7 { + /* H/W Tripping temp. + H/W trip is only supported on THRESHOLD_TEMP_RISE7 */ + temp = <115>; + enable = <1>; + }; + }; + + throttle_table { + throttle_tab_0 { + temp = <80>; + freq_max_big = <900000>; + freq_max_little = <1400000>; + }; + throttle_tab_1 { + temp = <85>; + freq_max_big = <900000>; + freq_max_little = <1400000>; + }; + throttle_tab_2 { + temp = <90>; + freq_max_big = <900000>; + freq_max_little = <1400000>; + }; + throttle_tab_3 { + temp = <95>; + freq_max_big = <900000>; + freq_max_little = <1400000>; + }; + throttle_tab_4 { + temp = <100>; + freq_max_big = <900000>; + freq_max_little = <1200000>; + }; + throttle_tab_5 { + temp = <110>; + freq_max_big = <900000>; + freq_max_little = <800000>; + }; + }; + }; + + iommu-domain_g2d { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + + domain-clients = <&fimg2d_0>; + + sysmmu_g2d: sysmmu@0x12450000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x12450000 0x1000>; + interrupts = <0 233 0>; + clocks = <&clock CLK_ACLK_G2D_SYSMMU>, + <&clock CLK_PCLK_G2D_SYSMMU>; + clock-names = "aclk", "pclk"; + pb-info { + pb@0 { + master_axi_id_list = <&fimg2d_0>; + }; + }; + }; + + fimg2d_0: fimg2d@12400000 { + compatible = "samsung,s5p-fimg2d"; + #pb-id-cells = <0>; + #address-cells = <1>; + #size-cells = <1>; + reg = <0x12400000 0x1000>; + interrupts = <0 235 0>; + clocks = <&clock CLK_ACLK_G2D>, <&clock CLK_PCLK_G2D>; + clock-names="gate", "gate2"; + ip_ver = <9>; /* IP_VER_G2D_7I */ + samsung,power-domain = <&pd_g2d>; + g2d_qos_table { + g2d_qos_variant_0 { + freq_int = <400000>; + freq_mif = <825000>; + freq_cpu = <1500000>; + freq_kfc = <1500000>; + }; + g2d_qos_variant_1 { + freq_int = <400000>; + freq_mif = <825000>; + freq_cpu = <0>; + freq_kfc = <800000>; + }; + g2d_qos_variant_2 { + freq_int = <317000>; + freq_mif = <533000>; + freq_cpu = <0>; + freq_kfc = <800000>; + }; + g2d_qos_variant_3 { + freq_int = <267000>; + freq_mif = <413000>; + freq_cpu = <0>; + freq_kfc = <800000>; + }; + g2d_qos_variant_4 { + freq_int = <267000>; + freq_mif = <413000>; + freq_cpu = <0>; + freq_kfc = <500000>; + }; + }; + }; + }; + + mipi-lli@10F24000 { + compatible = "samsung,exynos-mipi-lli"; + reg = <0x10F24000 0x4000>, + <0x10F34000 0x4000>, + <0x10050000 0x2000>, + <0x105C0724 0x4>; + interrupts = <0 208 0>, <0 185 0>; + clocks = + /* To gate/ungate LLI clocks */ + <&clock 3500>, <&clock 3501>, + <&clock 3502>, <&clock 3503>, + <&clock 3504>, + <&clock 3510>, <&clock 3511>, + <&clock 3512>, <&clock 3513>, + <&clock 3514>, <&clock 3515>, + <&clock 3516>, <&clock 3517>, + <&clock 3518>, + <&clock 3600>, <&clock 3601>, + <&clock 3602>, <&clock 3603>; + + clock-names = + "aclk_xiu_llisfrx", + "aclk_axius_lli_be", "aclk_axius_lli_ll", + "axius_llisfrx_llill", "axius_llisfrx_llibe", + + "aclk_lli_ll_init", "aclk_lli_ll_target", + "aclk_lli_be_init", "aclk_lli_be_target", + "aclk_lli_svc_loc", "aclk_lli_svc_rem", + "user_phyclk_lli_tx0_symbol", + "user_phyclk_lli_rx0_symbol", + + /* Modem common */ + "aclk_xiu_modemx", "aclk_combo_phy_modem_pclk", + "sclk_phy_fsys0", "sclk_combo_phy_modem_26m"; + + #address-cells = <1>; + #size-cells = <1>; + ranges; + + mphy { + compatible = "samsung,exynos-mipi-lli-mphy"; + reg = <0x10F20000 0x4000>, + <0x10ED0000 0x200>; + has_pms; + }; + }; + + iommu-domain_lpass { + compatible = "samsung,exynos-iommu-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + domain-clients = <&lpass>; + + sysmmu_aud: sysmmu@0x114E0000 { + compatible = "samsung,exynos7420-sysmmu"; + reg = <0x114E0000 0x1000>; + interrupts = <0 88 0>; + pb-info { + pb@0 { + master_axi_id_list = <&lpass>; + }; + }; + }; + }; + + lpass: lpass@11400000 { + compatible = "samsung,exynos7420-lpass"; + #pb-id-cells = <0>; + reg = <0x11400000 0x100>, + <0x03000000 0x48000>, + <0x11500000 0x100>; + clocks = <&clock 400>, /* aclk_dmac */ + <&clock 401>, /* aclk_sramc */ + <&clock 406>, /* aclk_intr */ + <&clock 413>, /* pclk_timer */ + <&clock 1>, /* fin_pll */ + <&clock 41>, /* aud_pll */ + <&clock 471>, /* dout_sclk_aud_pll */ + <&clock 472>, /* mout_aud_pll_user_top */ + <&clock 440>, /* mout_aud_pll_user */ + <&clock 453>, /* dout_aud_cdclk */ + <&clock 442>, /* mout_sclk_i2s */ + <&clock 457>, /* dout_sclk_i2s */ + <&clock 473>, /* mout_aud_pll_top0 */ + <&clock 477>, /* mout_sclk_i2s1 */ + <&clock 482>; /* dout_sclk_i2s1 */ + clock-names = "dmac", "sramc", "intr", "timer", + "fin_pll", "fout_aud_pll", + "dout_sclk_aud_pll", "mout_aud_pll_user_top", + "mout_aud_pll_user", + "dout_aud_cdclk", "mout_sclk_i2s", "dout_sclk_i2s", + "mout_aud_pll_top0", "mout_sclk_i2s1", "dout_sclk_i2s1"; + samsung,power-domain = <&pd_aud>; + status = "ok"; + }; + + i2s0: i2s@11440000 { + compatible = "samsung,i2s-v5"; + reg = <0x11440000 0x100>; + dmas = <&adma 0 &adma 2>; + dma-names = "tx", "rx"; + interrupts = <0 70 0>; + clocks = <&clock 414>, /* pclk_i2s */ + <&clock 451>, /* dout_aclk_aud */ + <&clock 457>; /* dout_sclk_i2s */ + clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; + samsung,supports-6ch; + samsung,supports-rstclr; + samsung,supports-secdai; + samsung,supports-tdm; + samsung,supports-low-rfs; + samsung,lpass-subip; + /* samsung,tx-iommu; + samsung,tx-buf = <0x40000000>; + samsung,tx-size = <0x80000>; + samsung,rx-iommu; + samsung,rx-buf = <0x41000000>; + samsung,rx-size = <0x80000>;*/ + pinctrl-names = "default", "idle"; + pinctrl-0 = <&i2s0_bus>; + pinctrl-1 = <&i2s0_bus_idle>; + status = "disabled"; + i2s-sec { + dmas = <&adma 1>; + dma-names = "tx-sec"; + clocks = <&clock 414>, /* pclk_i2s */ + <&clock 451>, /* dout_aclk_aud */ + <&clock 457>; /* dout_sclk_i2s */ + clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; + samsung,tx-buf = <0x0303E000>; + samsung,tx-size = <0x8000>; + }; + }; + + i2s1: i2s@14D60000 { + compatible = "samsung,i2s-v5"; + reg = <0x14D60000 0x100>; + dmas = <&pdma0 31 &pdma0 30>; + dma-names = "tx", "rx"; + interrupts = <0 435 0>; + clocks = <&clock 462>, /* pclk_i2s1 */ + <&clock 462>, /* pclk_i2s1 */ + <&clock 482>; /* dout_sclk_i2s1 */ + clock-names = "iis", "i2s_opclk0", "i2s_opclk1"; + samsung,supports-6ch; + samsung,supports-rstclr; + samsung,supports-tdm; + samsung,supports-low-rfs; + samsung,lpass-subip; + status = "disabled"; + }; + + pcm0: pcm@11450000 { + compatible = "samsung,pcm"; + reg = <0x11450000 0x100>; + dmas = <&adma 3 &adma 4>; + dma-names = "tx", "rx"; + interrupts = <0 71 0>; + clocks = <&clock 415>, /* pclk_pcm */ + <&clock 456>; /* dout_sclk_pcm */ + clock-names = "pcm", "sclk_pcm"; + samsung,lpass-subip; + status = "disabled"; + }; + + pcm1: pcm@14D80000 { + compatible = "samsung,pcm"; + reg = <0x14D80000 0x100>; + dmas = <&pdma0 28 &pdma0 27>; + dma-names = "tx", "rx"; + interrupts = <0 436 0>; + clocks = <&clock 461>, /* pclk_pcm1 */ + <&clock 481>; /* dout_sclk_pcm1 */ + clock-names = "pcm", "sclk_pcm"; + samsung,lpass-subip; + status = "disabled"; + }; + + spdif@14DB0000 { + compatible = "samsung,spdif"; + reg = <0x14DB0000 0x100>; + dmas = <&pdma0 29>; + dma-names = "tx"; + interrupts = <0 437 0>; + clocks = <&clock 460>, /* pclk_spdif */ + <&clock 480>; /* dout_sclk_spdif */ + clock-names = "spdif", "sclk_spdif"; + samsung,lpass-subip; + pinctrl-names = "default", "idle"; + pinctrl-0 = <&spdif_bus>; + pinctrl-1 = <&pcm1_bus>; + status = "disabled"; + }; +}; diff --git a/arch/arm64/boot/dts/modem-ss300-pdata.dtsi b/arch/arm64/boot/dts/modem-ss300-pdata.dtsi new file mode 100644 index 000000000..f4f9dc100 --- /dev/null +++ b/arch/arm64/boot/dts/modem-ss300-pdata.dtsi @@ -0,0 +1,188 @@ +/* + * SAMSUNG universal5422 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/* modem_interface_driver: UMTS modem, 2G/3G/4G, Samsung Electronics Shannon300 (SS300) */ + +/ { + mif_pdata { + compatible = "sec_modem,modem_pdata"; + + mif,name = "ss300"; + mif,modem_net = <0>; + mif,modem_type = <8>; + mif,use_handover = <0>; + mif,ipc_version = <50>; + mif,link_types = <0x400>; /* LINKDEV_LLI */ + mif,link_name = "lli"; + mif,link_attrs = <0x3C9>; /* DUMP_ALIGNED (0x200) | BOOT_ALIGNED (0x100) | MEM_DUMP (0x80) | MEM_BOOT (0x40) | DPRAM_MAGIC (0x08) | SBD_IPC (0x01) */ + + mif,num_iodevs = <13>; + iodevs { + io_device_0 { + iod,name = "umts_ipc0"; + iod,id = <235>; + iod,format = <0>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; /* ATTR_SBD_IPC | ATTR_SIPC5 */ + iod,app = "RIL"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <4096>; + iod,dl_num_buffers = <32>; + iod,dl_buffer_size = <4096>; + }; + io_device_1 { + iod,name = "umts_rfs0"; + iod,id = <245>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "RFS"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_2 { + iod,name = "umts_csd"; + iod,id = <1>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "CSVT"; + iod,ul_num_buffers = <32>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <64>; + iod,dl_buffer_size = <2048>; + }; + io_device_3 { + iod,name = "umts_router"; + iod,id = <25>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "Data Router"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <16>; + iod,dl_buffer_size = <2048>; + }; + io_device_4 { + iod,name = "umts_dm0"; + iod,id = <28>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "DIAG"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <128>; + iod,dl_buffer_size = <2048>; + }; + io_device_5 { + iod,name = "ipc_loopback0"; + iod,id = <244>; + iod,format = <0>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; /* ATTR_SBD_IPC | ATTR_SIPC5 */ + iod,app = "CLD"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <32>; + iod,dl_buffer_size = <2048>; + }; + io_device_6 { + iod,name = "rmnet0"; + iod,id = <10>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_7 { + iod,name = "rmnet1"; + iod,id = <11>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_8 { + iod,name = "rmnet2"; + iod,id = <12>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_9 { + iod,name = "rmnet3"; + iod,id = <13>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_10 { + iod,name = "multipdp"; + iod,id = <0>; + iod,format = <3>; + iod,io_type = <2>; + iod,links = <0x400>; + iod,attrs = <0x02>; + iod,app = "RIL"; + }; + io_device_11 { + iod,name = "umts_boot0"; + iod,id = <215>; + iod,format = <4>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x02>; /* ATTR_SIPC5 */ + iod,app = "CBD"; + }; + io_device_12 { + iod,name = "umts_ramdump0"; + iod,id = <225>; + iod,format = <5>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x202>; /* ATTR_NO_CHECK_MAXQ | ATTR_SIPC5 */ + iod,app = "CBD"; + }; + }; /* end of iodevs */ + }; /* end of mif_pdata */ +}; diff --git a/arch/arm64/boot/dts/modem-ss333-kor-pdata.dtsi b/arch/arm64/boot/dts/modem-ss333-kor-pdata.dtsi new file mode 100644 index 000000000..6b246d0db --- /dev/null +++ b/arch/arm64/boot/dts/modem-ss333-kor-pdata.dtsi @@ -0,0 +1,254 @@ +/* + * SAMSUNG universal5422 board device tree source + * + * Copyright (c) 2013 Samsung Electronics Co., Ltd. + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. +*/ + +/* modem_interface_driver: UMTS modem, 2G/3G/4G, Samsung Electronics Shannon333 (SS333) */ + +/ { + mif_pdata { + compatible = "sec_modem,modem_pdata"; + + mif,name = "ss333"; + mif,modem_net = <0>; + mif,modem_type = <15>; + mif,use_handover = <0>; + mif,ipc_version = <50>; + mif,link_types = <0x408>; /* LINKDEV_LLI | LINKDEV_SPI */ + mif,link_name = "lli"; + mif,link_attrs = <0x3C9>; /* DUMP_ALIGNED (0x200) | BOOT_ALIGNED (0x100) | MEM_DUMP (0x80) | MEM_BOOT (0x40) | DPRAM_MAGIC (0x08) | SBD_IPC (0x01) */ + + mif,num_iodevs = <18>; + iodevs { + io_device_0 { + iod,name = "umts_ipc0"; + iod,id = <235>; + iod,format = <0>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; /* ATTR_SBD_IPC | ATTR_SIPC5 */ + iod,app = "RIL"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <4096>; + iod,dl_num_buffers = <32>; + iod,dl_buffer_size = <4096>; + }; + io_device_1 { + iod,name = "umts_rfs0"; + iod,id = <245>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "RFS"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_2 { + iod,name = "umts_csd"; + iod,id = <1>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "CSVT"; + iod,ul_num_buffers = <32>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <64>; + iod,dl_buffer_size = <2048>; + }; + io_device_3 { + iod,name = "umts_router"; + iod,id = <25>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "Data Router"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <16>; + iod,dl_buffer_size = <2048>; + }; + io_device_4 { + iod,name = "umts_dm0"; + iod,id = <28>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "DIAG"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <128>; + iod,dl_buffer_size = <2048>; + }; + io_device_5 { + iod,name = "smd4"; + iod,id = <33>; + iod,format = <1>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; + iod,app = "DOD"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <128>; + iod,dl_buffer_size = <2048>; + }; + io_device_6 { + iod,name = "ipc_loopback0"; + iod,id = <244>; + iod,format = <0>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x82>; /* ATTR_SBD_IPC | ATTR_SIPC5 */ + iod,app = "CLD"; + iod,ul_num_buffers = <16>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <32>; + iod,dl_buffer_size = <2048>; + }; + io_device_7 { + iod,name = "rmnet0"; + iod,id = <10>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_8 { + iod,name = "rmnet1"; + iod,id = <11>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <256>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <512>; + iod,dl_buffer_size = <2048>; + }; + io_device_9 { + iod,name = "rmnet2"; + iod,id = <12>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <50>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <100>; + iod,dl_buffer_size = <2048>; + }; + io_device_10 { + iod,name = "rmnet3"; + iod,id = <13>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <50>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <100>; + iod,dl_buffer_size = <2048>; + }; + io_device_11 { + iod,name = "rmnet4"; + iod,id = <14>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <128>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <256>; + iod,dl_buffer_size = <2048>; + }; + io_device_12 { + iod,name = "rmnet5"; + iod,id = <15>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <128>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <256>; + iod,dl_buffer_size = <2048>; + }; + io_device_13 { + iod,name = "rmnet6"; + iod,id = <16>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <50>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <100>; + iod,dl_buffer_size = <2048>; + }; + io_device_14 { + iod,name = "rmnet7"; + iod,id = <17>; + iod,format = <1>; + iod,io_type = <1>; + iod,links = <0x400>; + iod,attrs = <0x180>; + iod,app = "NET"; + iod,ul_num_buffers = <50>; + iod,ul_buffer_size = <2048>; + iod,dl_num_buffers = <100>; + iod,dl_buffer_size = <2048>; + }; + io_device_15 { + iod,name = "multipdp"; + iod,id = <0>; + iod,format = <3>; + iod,io_type = <2>; + iod,links = <0x400>; + iod,attrs = <0x02>; + iod,app = "RIL"; + }; + io_device_16 { + iod,name = "umts_boot0"; + iod,id = <215>; + iod,format = <4>; + iod,io_type = <0>; + iod,links = <0x408>; + iod,tx_link = <10>; /* LINKDEV_LLI */ + iod,attrs = <0x02>; /* ATTR_SIPC5 */ + iod,app = "CBD"; + }; + io_device_17 { + iod,name = "umts_ramdump0"; + iod,id = <225>; + iod,format = <5>; + iod,io_type = <0>; + iod,links = <0x400>; + iod,attrs = <0x202>; /* ATTR_NO_CHECK_MAXQ | ATTR_SIPC5 */ + iod,app = "CBD"; + }; + }; /* end of iodevs */ + }; /* end of mif_pdata */ +}; diff --git a/arch/arm64/configs/exynos7420-zeroflte_defconfig b/arch/arm64/configs/exynos7420-zeroflte_defconfig index 66c5fbf92..12faa2275 100644 --- a/arch/arm64/configs/exynos7420-zeroflte_defconfig +++ b/arch/arm64/configs/exynos7420-zeroflte_defconfig @@ -1194,6 +1194,7 @@ CONFIG_LINK_DEVICE_WITH_SBD_ARCH=y # CONFIG_DEBUG_PKTLOG is not set # CONFIG_LINK_DEVICE_C2C is not set CONFIG_LINK_DEVICE_LLI=y +# CONFIG_LLI_DEBUG_FS is not set # CONFIG_LINK_DEVICE_SHMEM is not set # CONFIG_LINK_DEVICE_HSIC is not set # CONFIG_LTE_MODEM_XMM7260 is not set diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h index 31345e483..3a74d35c1 100644 --- a/arch/arm64/include/asm/cacheflush.h +++ b/arch/arm64/include/asm/cacheflush.h @@ -75,7 +75,8 @@ extern void flush_cache_all(void); extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); extern void flush_icache_range(unsigned long start, unsigned long end); extern void __flush_dcache_area(void *addr, size_t len); -extern void __flush_cache_user_range(unsigned long start, unsigned long end); +extern void __clean_dcache_area_pou(void *addr, size_t len); +extern long __flush_cache_user_range(unsigned long start, unsigned long end); static inline void flush_cache_mm(struct mm_struct *mm) { diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c index dfcd8fadd..33676dc97 100644 --- a/arch/arm64/kernel/perf_event.c +++ b/arch/arm64/kernel/perf_event.c @@ -316,22 +316,31 @@ armpmu_add(struct perf_event *event, int flags) } static int -validate_event(struct pmu_hw_events *hw_events, - struct perf_event *event) +validate_event(struct pmu *pmu, struct pmu_hw_events *hw_events, + struct perf_event *event) { - struct arm_pmu *armpmu = to_arm_pmu(event->pmu); + struct arm_pmu *armpmu; struct hw_perf_event fake_event = event->hw; struct pmu *leader_pmu = event->group_leader->pmu; if (is_software_event(event)) return 1; + /* + * Reject groups spanning multiple HW PMUs (e.g. CPU + CCI). The + * core perf code won't check that the pmu->ctx == leader->ctx + * until after pmu->event_init(event). + */ + if (event->pmu != pmu) + return 0; + if (event->pmu != leader_pmu || event->state < PERF_EVENT_STATE_OFF) return 1; if (event->state == PERF_EVENT_STATE_OFF && !event->attr.enable_on_exec) return 1; + armpmu = to_arm_pmu(event->pmu); return armpmu->get_event_idx(hw_events, &fake_event) >= 0; } @@ -349,15 +358,15 @@ validate_group(struct perf_event *event) memset(fake_used_mask, 0, sizeof(fake_used_mask)); fake_pmu.used_mask = fake_used_mask; - if (!validate_event(&fake_pmu, leader)) + if (!validate_event(event->pmu, &fake_pmu, leader)) return -EINVAL; list_for_each_entry(sibling, &leader->sibling_list, group_entry) { - if (!validate_event(&fake_pmu, sibling)) + if (!validate_event(event->pmu, &fake_pmu, sibling)) return -EINVAL; } - if (!validate_event(&fake_pmu, event)) + if (!validate_event(event->pmu, &fake_pmu, event)) return -EINVAL; return 0; diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c index 3fa98ff14..df20b7918 100644 --- a/arch/arm64/kernel/sys.c +++ b/arch/arm64/kernel/sys.c @@ -50,7 +50,7 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len, * The sys_call_table array must be 4K aligned to be accessible from * kernel/entry.S. */ -void *sys_call_table[__NR_syscalls] __aligned(4096) = { +void * const sys_call_table[__NR_syscalls] __aligned(4096) = { [0 ... __NR_syscalls - 1] = sys_ni_syscall, #include }; diff --git a/arch/arm64/kernel/vdso/vdso.so b/arch/arm64/kernel/vdso/vdso.so new file mode 100755 index 0000000000000000000000000000000000000000..f5e4a35284b8e674dbc9380c08fb959b967b6a95 GIT binary patch literal 2760 zcmcImU2GIp6h3!n>HqeJ)L4UbTZ0L0bo?t?0;JPwp_C0Yx$baeW{R{C zyZT_zzW757uJM5fBW*O{fyCkqnix@*8f+}D788xJ2^PZxCff0wnR|AZS@glg+s=IV z{N3|&&%LwL{gIskA%KShpMpy%9!HacFTu}acpL(e=da2wq2v4N3vX$<{j$7$XsgY{#Vs|CQwc2ovVom|RrrM3s8 zL;C+#2hvn%C0SRZX}o|>6I^#(qU5FGd_C$Plz|LM*%OlAD4lU#XwOKW*MC;(-zoVA zrQaKp54xT*%(OA8j~KR{95XV9;<3phcX%{2oMPE+*rs6>xu&gK$r01AC(JaACesr~ z?>`c^GAjN*1d-i)_aD$7Rv%R#+3GnD0RI8@kN0=#{IyUsitonf85twx6hQgwdA*Wk zG^k!Qs4T>zw07;?4|?s%ezCE?FIUmIV!o5NKKx93j`m8H48Bn2 ztSN!Ha1h472tssWzHgRd`Uc~pINH~o=z2^&+)V54oa#lLI>;`56)Ru&;>W$Se*3Fv zA8vv1s{*2fA~f?YcSg+`-0uEs77UDmJynB$>Q{}GLN%jLJ zYhf+jk$v~1ix)xrV_{yK&7axT!FBneM_GDcdE3&jq9)(4?7WTm#^ABq_iHhyJ(yDp zbJ~YFUaQXM<`5T9wjx4#f2dx>h%~rg#nh7!c&SxvsKY8qKK1xRf^<8#v{H-PW9o08^x za7fZMo;kcIu~uS>#6KM;L({Chw=qqZmL%2Ar4KVh+WlX^-0%*qxwq%C=b008rf3n<<^u45>Vm|j7W4Cm~F>?Iue+N$JJJ0t1 z-xu3iQ6krk*^lFda^iEr-(ki!URWA5vZ2J?h-A-d|MdHW&HVnK_Sw@VOM~%@M;6}x z{9`Dg*r`4=_zbOmB$bBNs3jM=zl-jZmA^&c)N|`t({nGI_ DDkzF# literal 0 HcmV?d00001 diff --git a/arch/arm64/kernel/vdso/vdso.so.dbg b/arch/arm64/kernel/vdso/vdso.so.dbg new file mode 100755 index 0000000000000000000000000000000000000000..f1b81f5dd8cb0f1c2fb4b39b7014c1891c16a186 GIT binary patch literal 4008 zcmcInZ)_A*5TCt0+Ft+AmSAjx^pB~LHnIgR2m$3QVv511(H%p7Gq zJV?Fx6y(`}o6fPE&;sU3hn`95U;(<>hCwLFQtABB2vfb9opsYjOA0`!=+Q7p=wy=J zWoes`49Wl7IFO`DJ@L2_Pvv=h%Hfu2F&Qrn>&sAnA3M^?ZCe>HV`DNdG-o6){XfI< z_cFeZ?cQb_bUhYH#v^@tPsA{K`y+|{;n1OZw7W0S9h0^N;AA8Z8 z^!3Jv4z4~BP9-$_uZ6(&UAy<_4{PhSM>g8VJs>~8{IP$hF5WCzj?MSs^ECTNF?q24 zwX~j3ZB%HysL-$wMq#z>+6{Wq$rfd0OY>M>{f*>X>C^`o{Lj){@$f-_yh8r5!t4q7 zL9LwlsRzow*x*0^vzh2qO#6I+ymm|~j2lEb6ZAJtqLi}|L; z3Lk>;5Wu<5PHd~IT@H1#YSn}v^lPi`8J$MIzoB|nwK`J;FzBsl8h+UWL9%ruoNFsT z57xD_of@=rSM^L(d13HVF9fG1o5#tgFVR2pqvoy|T!x`nEvJ54hnrBQ7)GZ*59RiI z`ApNeTmL%hS5?5^bp?X$O3AUWC>~|$u~Pp#(;cbPzyF5(h*EkZ1`v!XrRnx1aC}68 zTR85-A4C4@*aKI_>M?$b`4d&YM*gl^YR65y6*t9>Pe_4A83P=z;42F3!PIs9KZV%+ zh;1pb`l~1XZ5e&xSXyQD?UNS04E{f-CjH~-vu$-UF5hoaXBuWV&HSPirb}ndH<7;H zez@q}B8+JV#uUStIxxnYzVz4x(kX1ap_HWEzLLMuayt%*L0O@0YDCMl+-CnaOYMSOK(l?NjcXLRuBBdhvsti8~o);^X6~#CTj8l#u#lEaH+U%>OeTC%7&Q-*3 zBZY1AcmUZ+v?+T4HIqE%Cd|2T>YEDM?Q#qkuY~uYyz(W)Nv{^43iMU>4rE~|y|BpI zlXX+g6Ciur9p+^p>}0;sR)-gu7BQ`0`j=@Ys5;8~Hil{O%+lCd{D1(g_kR)j-sJSJ zr4IEQq31wL8A+Q)r4|jPqM(Hj#ZknjMiR81_>guWl1%j`;#rIy1}&a2BA^+Og9d1k zsJ=fL>W}ErFlq^B^%Lsv?MB^%p$+sIIUfBdUV%+Z-h#oP#YCaBb&kZT6{1?6JlTTLa5}cw7co!s82a2 zxa6JC4Qxq#6#p59omipozUaHp8=FOtsf?SzU09)*WSz)&S!lI%%nD_q$aF7K(igGC z&MTtkw%_B@r%jiN(6ct{yxs8+Vhi~$UrSjpLg!f1X=h&I7)GA_m-ah65JDwSSk1{F z@uNILS7eCFIr7y^5bN&z$sD^((LKB|tzpL~k5=L%cEv9rV&Z$I{!vc6YL`J5o2imh zSJ7LyJ_)Hf+p@kgl~inzb(4*ILDoYyzQoyQv++FV+?Kw9F5H&)L7#lM*zoE_?Ar2q@U1L3mfx|6 zyx4Ug`o-?AF1ys-Lh;5C$K#bL>x$&4(EjMb9Z2Hpv`~N}7R4l%g~s@Cq|^_y4moYr z3UkK)4C2(k+#^Kc0#+8fk6c20q5H^pj7vYVj{aa=7Lj$}x2U*FhZUrZY43ek{xJJAwQdk|{Fi^vm_flags & VM_EXEC) { - unsigned long addr = (unsigned long)kaddr; - if (icache_is_aliasing()) { - __flush_dcache_area(kaddr, len); - __flush_icache_all(); - } else { - flush_icache_range(addr, addr + len); - } - } + if (vma->vm_flags & VM_EXEC) + sync_icache_aliases(kaddr, len); } /* @@ -74,16 +79,11 @@ void __sync_icache_dcache(pte_t pte, unsigned long addr) { struct page *page = pte_page(pte); - /* no flushing needed for anonymous pages */ - if (!page_mapping(page)) - return; - - if (!test_and_set_bit(PG_dcache_clean, &page->flags)) { - __flush_dcache_area(page_address(page), PAGE_SIZE); + if (!test_and_set_bit(PG_dcache_clean, &page->flags)) + sync_icache_aliases(page_address(page), + PAGE_SIZE << compound_order(page)); + else if (icache_is_aivivt()) __flush_icache_all(); - } else if (icache_is_aivivt()) { - __flush_icache_all(); - } } /* diff --git a/arch/arm64/mm/proc-macros.S b/arch/arm64/mm/proc-macros.S index 005d29e29..146bd99a7 100644 --- a/arch/arm64/mm/proc-macros.S +++ b/arch/arm64/mm/proc-macros.S @@ -52,3 +52,35 @@ mov \reg, #4 // bytes per word lsl \reg, \reg, \tmp // actual cache line size .endm + +/* + * tcr_set_idmap_t0sz - update TCR.T0SZ so that we can load the ID map + */ + .macro tcr_set_idmap_t0sz, valreg, tmpreg +#ifndef CONFIG_ARM64_VA_BITS_48 + ldr_l \tmpreg, idmap_t0sz + bfi \valreg, \tmpreg, #TCR_T0SZ_OFFSET, #TCR_TxSZ_WIDTH +#endif + .endm + +/* + * Macro to perform a data cache maintenance for the interval + * [kaddr, kaddr + size) + * + * op: operation passed to dc instruction + * domain: domain used in dsb instruciton + * kaddr: starting virtual address of the region + * size: size of the region + * Corrupts: kaddr, size, tmp1, tmp2 + */ + .macro dcache_by_line_op op, domain, kaddr, size, tmp1, tmp2 + dcache_line_size \tmp1, \tmp2 + add \size, \kaddr, \size + sub \tmp2, \tmp1, #1 + bic \kaddr, \kaddr, \tmp2 +9998: dc \op, \kaddr + add \kaddr, \kaddr, \tmp1 + cmp \kaddr, \size + b.lo 9998b + dsb \domain + .endm diff --git a/block/genhd.c b/block/genhd.c index b7aa5e8ec..3980c9d97 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -853,6 +853,7 @@ static void disk_seqf_stop(struct seq_file *seqf, void *v) if (iter) { class_dev_iter_exit(iter); kfree(iter); + seqf->private = NULL; } } diff --git a/drivers/char/diag/diagchar_core.c b/drivers/char/diag/diagchar_core.c old mode 100755 new mode 100644 diff --git a/drivers/char/mst_ctrl.c b/drivers/char/mst_ctrl.c index 6ac0c11ca..e14a00be0 100644 --- a/drivers/char/mst_ctrl.c +++ b/drivers/char/mst_ctrl.c @@ -56,6 +56,9 @@ ssize_t mst_ctrl_write(struct file *file, const char __user *buffer, size_t size char *string; int nfc_status; + if (size == 0) + return 0; + printk(KERN_ERR " %s\n", __FUNCTION__); string = kmalloc(size + sizeof(char), GFP_KERNEL);