* [PATCH 0/3] Add Exynos4412-based midas boards support
@ 2017-12-12 14:08 Simon Shields
2017-12-12 14:08 ` [PATCH 1/3] dt-bindings: samsung: document bindings for Midas family boards Simon Shields
[not found] ` <20171212140815.28257-1-simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
0 siblings, 2 replies; 6+ messages in thread
From: Simon Shields @ 2017-12-12 14:08 UTC (permalink / raw)
To: linux-samsung-soc
Cc: Kukjin Kim, Krzysztof Kozlowski, devicetree, Simon Shields
Hi,
This patch series adds support for a new set of boards, codenamed
"midas". These are the Galaxy S3 (m0/m3) and the Galaxy Note 2 (t0).
These boards are closely related to trats2 - m0 is a trats2 but with a
bootloader geared towards booting Android rather than a traditional Linux
distribution - and because of this, the dts files are largely based off
what is already in-place for trats2.
Patch #1 adds documentation for the bindings used by the boards,
patch #2 adds the device-tree files themselves, and patch #3 enables
cpuidle support for the boards.
Cheers,
Simon
Simon Shields (3):
dt-bindings: samsung: document bindings for Midas family boards
ARM: dts: add Samsung's exynos4412-based midas boards
ARM: exynos: extend cpuidle support to midas boards
.../bindings/arm/samsung/samsung-boards.txt | 4 +
arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi | 144 +++
arch/arm/boot/dts/exynos4412-m0.dts | 14 +
arch/arm/boot/dts/exynos4412-m3.dts | 19 +
arch/arm/boot/dts/exynos4412-midas.dtsi | 1291 ++++++++++++++++++++
arch/arm/boot/dts/exynos4412-t0.dts | 51 +
arch/arm/mach-exynos/exynos.c | 3 +-
7 files changed, 1525 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
create mode 100644 arch/arm/boot/dts/exynos4412-m0.dts
create mode 100644 arch/arm/boot/dts/exynos4412-m3.dts
create mode 100644 arch/arm/boot/dts/exynos4412-midas.dtsi
create mode 100644 arch/arm/boot/dts/exynos4412-t0.dts
--
2.15.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] dt-bindings: samsung: document bindings for Midas family boards
2017-12-12 14:08 [PATCH 0/3] Add Exynos4412-based midas boards support Simon Shields
@ 2017-12-12 14:08 ` Simon Shields
[not found] ` <20171212140815.28257-1-simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
1 sibling, 0 replies; 6+ messages in thread
From: Simon Shields @ 2017-12-12 14:08 UTC (permalink / raw)
To: linux-samsung-soc
Cc: Kukjin Kim, Krzysztof Kozlowski, devicetree, Simon Shields
Document GT-I9300, GT-I9305, GT-N7100, and GT-N7105 bindings, along
with the shared "midas" binding.
Signed-off-by: Simon Shields <simon@lineageos.org>
---
Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
index e13459618581..e6765af5cf48 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
@@ -9,7 +9,11 @@ Required root node properties:
- "samsung,smdkv310" - for Exynos4210-based Samsung SMDKV310 eval board.
- "samsung,trats" - for Exynos4210-based Tizen Reference board.
- "samsung,universal_c210" - for Exynos4210-based Samsung board.
+ - "samsung,m0" - for Exynos4412-based Samsung GT-I9300 board.
+ - "samsung,m3" - for Exynos4412-based Samsung GT-I9305 board.
+ - "samsung,midas" - for Exynos4412-based Samsung Midas board.
- "samsung,smdk4412", - for Exynos4412-based Samsung SMDK4412 eval board.
+ - "samsung,t0" - for Exynos4412-based Samsung GT-N7100/GT-N7105 board.
- "samsung,trats2" - for Exynos4412-based Tizen Reference board.
- "samsung,smdk5250" - for Exynos5250-based Samsung SMDK5250 eval board.
- "samsung,xyref5260" - for Exynos5260-based Samsung board.
--
2.15.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards
[not found] ` <20171212140815.28257-1-simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
@ 2017-12-12 14:08 ` Simon Shields
2017-12-14 8:48 ` Krzysztof Kozlowski
2017-12-12 14:08 ` [PATCH 3/3] ARM: exynos: extend cpuidle support to " Simon Shields
1 sibling, 1 reply; 6+ messages in thread
From: Simon Shields @ 2017-12-12 14:08 UTC (permalink / raw)
To: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA
Cc: Kukjin Kim, Krzysztof Kozlowski,
devicetree-u79uwXL29TY76Z2rM5mHXA, Simon Shields
"midas" is the codename for a family of smartphones released by Samsung
Mobile. It includes the Galaxy S3 (GT-I9300/I9305) and the Galaxy
Note 2 (GT-N7100/N7105). The boards largely have the same peripherals:
the main differences are touchscreen, display panel and cellular modem.
Signed-off-by: Simon Shields <simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
---
arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi | 144 +++
arch/arm/boot/dts/exynos4412-m0.dts | 14 +
arch/arm/boot/dts/exynos4412-m3.dts | 19 +
arch/arm/boot/dts/exynos4412-midas.dtsi | 1291 +++++++++++++++++++++++++++
arch/arm/boot/dts/exynos4412-t0.dts | 51 ++
5 files changed, 1519 insertions(+)
create mode 100644 arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
create mode 100644 arch/arm/boot/dts/exynos4412-m0.dts
create mode 100644 arch/arm/boot/dts/exynos4412-m3.dts
create mode 100644 arch/arm/boot/dts/exynos4412-midas.dtsi
create mode 100644 arch/arm/boot/dts/exynos4412-t0.dts
diff --git a/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi b/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
new file mode 100644
index 000000000000..536195adfe65
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
@@ -0,0 +1,144 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "exynos4412-midas.dtsi"
+
+/ {
+ regulators {
+ lcd_vdd3_reg: voltage-regulator-10 {
+ compatible = "regulator-fixed";
+ regulator-name = "LCD_VDD_2.2V";
+ regulator-min-microvolt = <2200000>;
+ regulator-max-microvolt = <2200000>;
+ enable-active-high;
+ gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;
+ };
+
+ ps_als_reg: voltage-regulator-11 {
+ compatible = "regulator-fixed";
+ regulator-name = "LED_A_3.0V";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ enable-active-high;
+ gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ i2c_ak8975: i2c-gpio-10 {
+ compatible = "i2c-gpio";
+ gpios = <&gpy2 4 GPIO_ACTIVE_HIGH>, <&gpy2 5 GPIO_ACTIVE_HIGH>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ak8975@c {
+ compatible = "asahi-kasei,ak8975";
+ reg = <0x0c>;
+ gpios = <&gpj0 7 GPIO_ACTIVE_HIGH>;
+ };
+ };
+
+ i2c_cm36651: i2c-gpio-11 {
+ compatible = "i2c-gpio";
+ gpios = <&gpf0 0 GPIO_ACTIVE_LOW>, <&gpf0 1 GPIO_ACTIVE_LOW>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cm36651@18 {
+ compatible = "capella,cm36651";
+ reg = <0x18>;
+ interrupt-parent = <&gpx0>;
+ interrupts = <2 IRQ_EDGE_TYPE_FALLING>;
+ vled-supply = <&ps_als_reg>;
+ };
+ };
+};
+
+&buck9_reg {
+ maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
+};
+
+&cam_af_reg {
+ gpio = <&gpm0 4 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&cam_io_reg {
+ gpio = <&gpm0 2 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&dsi_0 {
+ vddcore-supply = <&ldo8_reg>;
+ vddio-supply = <&ldo10_reg>;
+ samsung,burst-clock-frequency = <500000000>;
+ samsung,esc-clock-frequency = <20000000>;
+ samsung,pll-clock-frequency = <24000000>;
+ status = "okay";
+
+ panel@0 {
+ compatible = "samsung,s6e8aa0";
+ reg = <0>;
+ vdd3-supply = <&lcd_vdd3_reg>;
+ vci-supply = <&ldo25_reg>;
+ reset-gpios = <&gpf2 1 GPIO_ACTIVE_HIGH>;
+ power-on-delay= <50>;
+ reset-delay = <100>;
+ init-delay = <100>;
+ flip-horizontal;
+ flip-vertical;
+ panel-width-mm = <58>;
+ panel-height-mm = <103>;
+
+ display-timings {
+ timing-0 {
+ clock-frequency = <57153600>;
+ hactive = <720>;
+ vactive = <1280>;
+ hfront-porch = <5>;
+ hback-porch = <5>;
+ hsync-len = <5>;
+ vfront-porch = <13>;
+ vback-porch = <1>;
+ vsync-len = <2>;
+ };
+ };
+ };
+};
+
+&i2c_0 {
+ status = "okay";
+};
+
+&i2c_3 {
+ samsung,i2c-sda-delay = <100>;
+ samsung,i2c-slave-addr = <0x10>;
+ samsung,i2c-max-bus-freq = <400000>;
+ pinctrl-0 = <&i2c3_bus>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ mms114-touchscreen@48 {
+ compatible = "melfas,mms114";
+ reg = <0x48>;
+ interrupt-parent = <&gpm2>;
+ interrupts = <3 IRQ_EDGE_TYPE_FALLING>;
+ x-size = <720>;
+ y-size = <1280>;
+ avdd-supply = <&ldo23_reg>;
+ vdd-supply = <&ldo24_reg>;
+ };
+};
+
+&ldo17_reg {
+ regulator-name = "CAM_SENSOR_CORE_1.2V";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+};
+
+&ldo25_reg {
+ regulator-name = "LCD_VCC_3.3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+};
+
diff --git a/arch/arm/boot/dts/exynos4412-m0.dts b/arch/arm/boot/dts/exynos4412-m0.dts
new file mode 100644
index 000000000000..18aff81682a9
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-m0.dts
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "exynos4412-galaxy-s3.dtsi"
+
+/ {
+ compatible = "samsung,m0", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+ model = "Samsung M0 (GT-I9300) based on Exynos4412";
+
+ memory@40000000 {
+ device_type = "memory";
+ reg = <0x40000000 0x40000000>;
+ };
+};
+
diff --git a/arch/arm/boot/dts/exynos4412-m3.dts b/arch/arm/boot/dts/exynos4412-m3.dts
new file mode 100644
index 000000000000..e13ee49ad867
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-m3.dts
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "exynos4412-galaxy-s3.dtsi"
+
+/ {
+ compatible = "samsung,m3", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+ model = "Samsung M3 (GT-I9305) based on Exynos4412";
+
+ memory@40000000 {
+ device_type = "memory";
+ reg = <0x40000000 0x80000000>;
+ };
+};
+
+&i2c0_bus {
+ // SCL and SDA pins are swapped
+ samsung,pins = "gpd1-1", "gpd1-0";
+};
+
diff --git a/arch/arm/boot/dts/exynos4412-midas.dtsi b/arch/arm/boot/dts/exynos4412-midas.dtsi
new file mode 100644
index 000000000000..65c1e2d14d26
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-midas.dtsi
@@ -0,0 +1,1291 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "exynos4412.dtsi"
+#include "exynos4412-ppmu-common.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/clock/maxim,max77686.h>
+#include <dt-bindings/pinctrl/samsung.h>
+
+/ {
+ compatible = "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+
+ aliases {
+ i2c9 = &i2c_max77693;
+ i2c10 = &i2c_max77693_fuel;
+ };
+
+ chosen {
+ stdout-path = &serial_2;
+ };
+
+ firmware@204f000 {
+ compatible = "samsung,secure-firmware";
+ reg = <0x0204F000 0x1000>;
+ };
+
+ fixed-rate-clocks {
+ xxti {
+ compatible = "samsung,clock-xxti", "fixed-clock";
+ clock-frequency = <0>;
+ };
+
+ xusbxti {
+ compatible = "samsung,clock-xusbxti", "fixed-clock";
+ clock-frequency = <24000000>;
+ };
+ };
+
+ regulators {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cam_io_reg: voltage-regulator-0 {
+ compatible = "regulator-fixed";
+ regulator-name = "CAM_SENSOR_A";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ enable-active-high;
+ status = "disabled";
+ };
+
+ cam_af_reg: voltage-regulator-1 {
+ compatible = "regulator-fixed";
+ regulator-name = "CAM_AF";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ enable-active-high;
+ status = "disabled";
+ };
+
+ vsil12: voltage-regulator-6 {
+ compatible = "regulator-fixed";
+ regulator-name = "VSIL_1.2V";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ vin-supply = <&buck7_reg>;
+ };
+
+ vcc33mhl: voltage-regulator-7 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_3.3_MHL";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ vcc18mhl: voltage-regulator-8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_1.8_MHL";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ key-down {
+ gpios = <&gpx3 3 GPIO_ACTIVE_LOW>;
+ linux,code = <114>;
+ label = "volume down";
+ debounce-interval = <10>;
+ };
+
+ key-up {
+ gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
+ linux,code = <115>;
+ label = "volume up";
+ debounce-interval = <10>;
+ };
+
+ key-power {
+ gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
+ linux,code = <116>;
+ label = "power";
+ debounce-interval = <10>;
+ wakeup-source;
+ };
+
+ key-home {
+ gpios = <&gpx0 1 GPIO_ACTIVE_LOW>;
+ linux,code = <172>;
+ label = "home";
+ debounce-inteval = <10>;
+ wakeup-source;
+ };
+ };
+
+ i2c_max77693: i2c-gpio-0 {
+ compatible = "i2c-gpio";
+ gpios = <&gpm2 0 GPIO_ACTIVE_HIGH>, <&gpm2 1 GPIO_ACTIVE_HIGH>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ max77693@66 {
+ compatible = "maxim,max77693";
+ interrupt-parent = <&gpx1>;
+ interrupts = <5 IRQ_EDGE_TYPE_FALLING>;
+ reg = <0x66>;
+
+ regulators {
+ esafeout1_reg: ESAFEOUT1 {
+ regulator-name = "ESAFEOUT1";
+ };
+ esafeout2_reg: ESAFEOUT2 {
+ regulator-name = "ESAFEOUT2";
+ };
+ charger_reg: CHARGER {
+ regulator-name = "CHARGER";
+ regulator-min-microamp = <60000>;
+ regulator-max-microamp = <2580000>;
+ };
+ };
+
+ max77693_haptic {
+ compatible = "maxim,max77693-haptic";
+ haptic-supply = <&ldo26_reg>;
+ pwms = <&pwm 0 38022 0>;
+ };
+
+ charger {
+ compatible = "maxim,max77693-charger";
+
+ maxim,constant-microvolt = <4350000>;
+ maxim,min-system-microvolt = <3600000>;
+ maxim,thermal-regulation-celsius = <100>;
+ maxim,battery-overcurrent-microamp = <3500000>;
+ maxim,charge-input-threshold-microvolt = <4300000>;
+ };
+ };
+ };
+
+ i2c_max77693_fuel: i2c-gpio-1 {
+ compatible = "i2c-gpio";
+ gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>, <&gpf1 4 GPIO_ACTIVE_HIGH>;
+ i2c-gpio,delay-us = <2>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ max77693-fuel-gauge@36 {
+ compatible = "maxim,max17047";
+ interrupt-parent = <&gpx2>;
+ interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+ reg = <0x36>;
+
+ maxim,over-heat-temp = <700>;
+ maxim,over-volt = <4500>;
+ };
+ };
+
+ i2c-mhl {
+ compatible = "i2c-gpio";
+ gpios = <&gpf0 4 GPIO_ACTIVE_HIGH>, <&gpf0 6 GPIO_ACTIVE_HIGH>;
+ i2c-gpio,delay-us = <100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pinctrl-0 = <&i2c_mhl_bus>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ sii9234: hdmi-bridge@39 {
+ compatible = "sil,sii9234";
+ avcc33-supply = <&vcc33mhl>;
+ iovcc18-supply = <&vcc18mhl>;
+ avcc12-supply = <&vsil12>;
+ cvcc12-supply = <&vsil12>;
+ reset-gpios = <&gpf3 4 GPIO_ACTIVE_LOW>;
+ interrupt-parent = <&gpf3>;
+ interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
+ reg = <0x39>;
+
+ port {
+ mhl_to_hdmi: endpoint {
+ remote-endpoint = <&hdmi_to_mhl>;
+ };
+ };
+ };
+ };
+
+ camera: camera {
+ pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
+ pinctrl-names = "default";
+ status = "okay";
+ assigned-clocks = <&clock CLK_MOUT_CAM0>,
+ <&clock CLK_MOUT_CAM1>;
+ assigned-clock-parents = <&clock CLK_XUSBXTI>,
+ <&clock CLK_XUSBXTI>;
+ };
+
+ wlan_pwrseq: sdhci3-pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&gpj0 0 GPIO_ACTIVE_LOW>;
+ clocks = <&max77686 MAX77686_CLK_PMIC>;
+ clock-names = "ext_clock";
+ };
+
+ thermistor-ap {
+ compatible = "murata,ncp15wb473";
+ pullup-uv = <1800000>; /* VCC_1.8V_AP */
+ pullup-ohm = <100000>; /* 100K */
+ pulldown-ohm = <100000>; /* 100K */
+ io-channels = <&adc 1>; /* AP temperature */
+ };
+
+ thermistor-battery {
+ compatible = "murata,ncp15wb473";
+ pullup-uv = <1800000>; /* VCC_1.8V_AP */
+ pullup-ohm = <100000>; /* 100K */
+ pulldown-ohm = <100000>; /* 100K */
+ io-channels = <&adc 2>; /* Battery temperature */
+ };
+
+ thermal-zones {
+ cpu_thermal: cpu-thermal {
+ cooling-maps {
+ map0 {
+ /* Corresponds to 800MHz at freq_table */
+ cooling-device = <&cpu0 7 7>;
+ };
+ map1 {
+ /* Corresponds to 200MHz at freq_table */
+ cooling-device = <&cpu0 13 13>;
+ };
+ };
+ };
+ };
+
+};
+
+&adc {
+ vdd-supply = <&ldo3_reg>;
+ status = "okay";
+};
+
+&bus_dmc {
+ devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
+ vdd-supply = <&buck1_reg>;
+ status = "okay";
+};
+
+&bus_acp {
+ devfreq = <&bus_dmc>;
+ status = "okay";
+};
+
+&bus_c2c {
+ devfreq = <&bus_dmc>;
+ status = "okay";
+};
+
+&bus_leftbus {
+ devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
+ vdd-supply = <&buck3_reg>;
+ status = "okay";
+};
+
+&bus_rightbus {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+};
+
+&bus_display {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+};
+
+&bus_fsys {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+};
+
+&bus_peri {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+};
+
+&bus_mfc {
+ devfreq = <&bus_leftbus>;
+ status = "okay";
+};
+
+&cpu0 {
+ cpu0-supply = <&buck2_reg>;
+};
+
+&csis_0 {
+ status = "okay";
+ vddcore-supply = <&ldo8_reg>;
+ vddio-supply = <&ldo10_reg>;
+ assigned-clocks = <&clock CLK_MOUT_CSIS0>,
+ <&clock CLK_SCLK_CSIS0>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+
+ /* Camera C (3) MIPI CSI-2 (CSIS0) */
+ port@3 {
+ reg = <3>;
+ csis0_ep: endpoint {
+ remote-endpoint = <&s5c73m3_ep>;
+ data-lanes = <1 2 3 4>;
+ samsung,csis-hs-settle = <12>;
+ };
+ };
+};
+
+&csis_1 {
+ status = "okay";
+ vddcore-supply = <&ldo8_reg>;
+ vddio-supply = <&ldo10_reg>;
+ assigned-clocks = <&clock CLK_MOUT_CSIS1>,
+ <&clock CLK_SCLK_CSIS1>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+
+ /* Camera D (4) MIPI CSI-2 (CSIS1) */
+ port@4 {
+ reg = <4>;
+ csis1_ep: endpoint {
+ remote-endpoint = <&is_s5k6a3_ep>;
+ data-lanes = <1>;
+ samsung,csis-hs-settle = <18>;
+ samsung,csis-wclk;
+ };
+ };
+};
+
+&exynos_usbphy {
+ vbus-supply = <&esafeout1_reg>;
+ status = "okay";
+};
+
+&fimc_0 {
+ status = "okay";
+ assigned-clocks = <&clock CLK_MOUT_FIMC0>,
+ <&clock CLK_SCLK_FIMC0>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+};
+
+&fimc_1 {
+ status = "okay";
+ assigned-clocks = <&clock CLK_MOUT_FIMC1>,
+ <&clock CLK_SCLK_FIMC1>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+};
+
+&fimc_2 {
+ status = "okay";
+ assigned-clocks = <&clock CLK_MOUT_FIMC2>,
+ <&clock CLK_SCLK_FIMC2>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+};
+
+&fimc_3 {
+ status = "okay";
+ assigned-clocks = <&clock CLK_MOUT_FIMC3>,
+ <&clock CLK_SCLK_FIMC3>;
+ assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
+ assigned-clock-rates = <0>, <176000000>;
+};
+
+&fimc_is {
+ pinctrl-0 = <&fimc_is_uart>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ i2c1_isp: i2c-isp@12140000 {
+ pinctrl-0 = <&fimc_is_i2c1>;
+ pinctrl-names = "default";
+
+ s5k6a3@10 {
+ compatible = "samsung,s5k6a3";
+ reg = <0x10>;
+ svdda-supply = <&cam_io_reg>;
+ svddio-supply = <&ldo19_reg>;
+ afvdd-supply = <&ldo19_reg>;
+ clock-frequency = <24000000>;
+ /* CAM_B_CLKOUT */
+ clocks = <&camera 1>;
+ clock-names = "extclk";
+ samsung,camclk-out = <1>;
+ gpios = <&gpm1 6 GPIO_ACTIVE_HIGH>;
+
+ port {
+ is_s5k6a3_ep: endpoint {
+ remote-endpoint = <&csis1_ep>;
+ data-lanes = <1>;
+ };
+ };
+ };
+ };
+};
+
+&fimc_lite_0 {
+ status = "okay";
+};
+
+&fimc_lite_1 {
+ status = "okay";
+};
+
+&fimd {
+ status = "okay";
+};
+
+&hdmi {
+ hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&hdmi_hpd>;
+ vdd-supply = <&ldo3_reg>;
+ vdd_osc-supply = <&ldo4_reg>;
+ vdd_pll-supply = <&ldo3_reg>;
+ ddc = <&i2c_5>;
+ status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+ hdmi_to_mhl: endpoint {
+ remote-endpoint = <&mhl_to_hdmi>;
+ };
+ };
+ };
+};
+
+&hsotg {
+ vusb_d-supply = <&ldo15_reg>;
+ vusb_a-supply = <&ldo12_reg>;
+ dr_mode = "peripheral";
+ status = "okay";
+};
+
+&i2c_0 {
+ samsung,i2c-sda-delay = <100>;
+ samsung,i2c-slave-addr = <0x10>;
+ samsung,i2c-max-bus-freq = <400000>;
+ pinctrl-0 = <&i2c0_bus>;
+ pinctrl-names = "default";
+
+ status = "disabled";
+
+ s5c73m3@3c {
+ compatible = "samsung,s5c73m3";
+ reg = <0x3c>;
+ standby-gpios = <&gpm0 1 GPIO_ACTIVE_LOW>; /* ISP_STANDBY */
+ xshutdown-gpios = <&gpf1 3 GPIO_ACTIVE_LOW>; /* ISP_RESET */
+ vdd-int-supply = <&buck9_reg>;
+ vddio-cis-supply = <&ldo9_reg>;
+ vdda-supply = <&ldo17_reg>;
+ vddio-host-supply = <&ldo18_reg>;
+ vdd-af-supply = <&cam_af_reg>;
+ vdd-reg-supply = <&cam_io_reg>;
+ clock-frequency = <24000000>;
+ /* CAM_A_CLKOUT */
+ clocks = <&camera 0>;
+ clock-names = "cis_extclk";
+ port {
+ s5c73m3_ep: endpoint {
+ remote-endpoint = <&csis0_ep>;
+ data-lanes = <1 2 3 4>;
+ };
+ };
+ };
+};
+
+&i2c_4 {
+ samsung,i2c-sda-delay = <100>;
+ samsung,i2c-slave-addr = <0x10>;
+ samsung,i2c-max-bus-freq = <100000>;
+ pinctrl-0 = <&i2c4_bus>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ wm1811: wm1811@1a {
+ compatible = "wlf,wm1811";
+ reg = <0x1a>;
+ clocks = <&pmu_system_controller 0>;
+ clock-names = "MCLK1";
+ DCVDD-supply = <&ldo3_reg>;
+ DBVDD1-supply = <&ldo3_reg>;
+ wlf,ldo1ena = <&gpj0 4 0>;
+ };
+};
+
+&i2c_5 {
+ status = "okay";
+};
+
+&i2c_7 {
+ samsung,i2c-sda-delay = <100>;
+ samsung,i2c-slave-addr = <0x10>;
+ samsung,i2c-max-bus-freq = <100000>;
+ pinctrl-0 = <&i2c7_bus>;
+ pinctrl-names = "default";
+ status = "okay";
+
+ max77686: max77686_pmic@9 {
+ compatible = "maxim,max77686";
+ interrupt-parent = <&gpx0>;
+ interrupts = <7 IRQ_EDGE_TYPE_NONE>;
+ reg = <0x09>;
+ #clock-cells = <1>;
+
+ voltage-regulators {
+ ldo1_reg: LDO1 {
+ regulator-name = "VALIVE_1.0V_AP";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-always-on;
+ };
+
+ ldo2_reg: LDO2 {
+ regulator-name = "VM1M2_1.2V_AP";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ ldo3_reg: LDO3 {
+ regulator-name = "VCC_1.8V_AP";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ ldo4_reg: LDO4 {
+ regulator-name = "VCC_2.8V_AP";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-always-on;
+ };
+
+ ldo5_reg: LDO5 {
+ regulator-name = "VTOUCH_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ ldo6_reg: LDO6 {
+ regulator-name = "VMPLL_1.0V_AP";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-always-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ ldo7_reg: LDO7 {
+ regulator-name = "VPLL_1.0V_AP";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-always-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ ldo8_reg: LDO8 {
+ regulator-name = "VMIPI_1.0V";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ ldo9_reg: LDO9 {
+ regulator-name = "CAM_ISP_MIPI_1.2V";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ ldo10_reg: LDO10 {
+ regulator-name = "VMIPI_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ ldo11_reg: LDO11 {
+ regulator-name = "VABB1_1.95V";
+ regulator-min-microvolt = <1950000>;
+ regulator-max-microvolt = <1950000>;
+ regulator-always-on;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ ldo12_reg: LDO12 {
+ regulator-name = "VUOTG_3.0V";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ ldo13_reg: LDO13 {
+ status = "disabled";
+ };
+
+ ldo14_reg: LDO14 {
+ regulator-name = "VABB2_1.95V";
+ regulator-min-microvolt = <1950000>;
+ regulator-max-microvolt = <1950000>;
+ regulator-always-on;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ ldo15_reg: LDO15 {
+ regulator-name = "VHSIC_1.0V";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ ldo16_reg: LDO16 {
+ regulator-name = "VHSIC_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ ldo17_reg: LDO17 {
+ status = "disabled";
+ };
+
+ ldo18_reg: LDO18 {
+ regulator-name = "CAM_ISP_SENSOR_IO_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ ldo19_reg: LDO19 {
+ regulator-name = "VT_CAM_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ ldo20_reg: LDO20 {
+ regulator-name = "VDDQ_PRE_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ ldo21_reg: LDO21 {
+ regulator-name = "VTF_2.8V";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ maxim,ena-gpios = <&gpy2 0 GPIO_ACTIVE_HIGH>;
+ };
+
+ ldo22_reg: LDO22 {
+ regulator-name = "VMEM_VDD_2.8V";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ ldo23_reg: LDO23 {
+ regulator-name = "TSP_AVDD_3.3V";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ ldo24_reg: LDO24 {
+ regulator-name = "TSP_VDD_1.8V";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ ldo25_reg: LDO25 {
+ status = "disabled";
+ };
+
+ ldo26_reg: LDO26 {
+ regulator-name = "MOTOR_VCC_3.0V";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ buck1_reg: BUCK1 {
+ regulator-name = "vdd_mif";
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ buck2_reg: BUCK2 {
+ regulator-name = "vdd_arm";
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <1500000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-state-mem {
+ regulator-on-in-suspend;
+ };
+ };
+
+ buck3_reg: BUCK3 {
+ regulator-name = "vdd_int";
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <1150000>;
+ regulator-always-on;
+ regulator-boot-on;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ buck4_reg: BUCK4 {
+ regulator-name = "vdd_g3d";
+ regulator-min-microvolt = <850000>;
+ regulator-max-microvolt = <1150000>;
+ regulator-boot-on;
+ regulator-state-mem {
+ regulator-off-in-suspend;
+ };
+ };
+
+ buck5_reg: BUCK5 {
+ regulator-name = "VMEM_1.2V_AP";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ };
+
+ buck6_reg: BUCK6 {
+ regulator-name = "VCC_SUB_1.35V";
+ regulator-min-microvolt = <1350000>;
+ regulator-max-microvolt = <1350000>;
+ regulator-always-on;
+ };
+
+ buck7_reg: BUCK7 {
+ regulator-name = "VCC_SUB_2.0V";
+ regulator-min-microvolt = <2000000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-always-on;
+ };
+
+ buck8_reg: BUCK8 {
+ regulator-name = "VMEM_VDDF_3.0V";
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <2850000>;
+ maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
+ };
+
+ buck9_reg: BUCK9 {
+ regulator-name = "CAM_ISP_CORE_1.2V";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1200000>;
+ };
+ };
+ };
+};
+
+&i2c_8 {
+ status = "okay";
+};
+
+&i2s0 {
+ pinctrl-0 = <&i2s0_bus>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&mixer {
+ status = "okay";
+};
+
+&mshc_0 {
+ broken-cd;
+ non-removable;
+ card-detect-delay = <200>;
+ vmmc-supply = <&ldo22_reg>;
+ clock-frequency = <400000000>;
+ samsung,dw-mshc-ciu-div = <0>;
+ samsung,dw-mshc-sdr-timing = <2 3>;
+ samsung,dw-mshc-ddr-timing = <1 2>;
+ pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
+ pinctrl-names = "default";
+ status = "okay";
+ bus-width = <8>;
+ cap-mmc-highspeed;
+};
+
+&pmu_system_controller {
+ assigned-clocks = <&pmu_system_controller 0>;
+ assigned-clock-parents = <&clock CLK_XUSBXTI>;
+};
+
+&pinctrl_0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&sleep0>;
+
+ mhl_int: mhl-int {
+ samsung,pins = "gpf3-5";
+ samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+ };
+
+ i2c_mhl_bus: i2c-mhl-bus {
+ samsung,pins = "gpf0-4", "gpf0-6";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+ samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
+ };
+
+ sleep0: sleep-states {
+ PIN_SLP(gpa0-0, INPUT, NONE);
+ PIN_SLP(gpa0-1, OUT0, NONE);
+ PIN_SLP(gpa0-2, INPUT, NONE);
+ PIN_SLP(gpa0-3, INPUT, UP);
+ PIN_SLP(gpa0-4, INPUT, NONE);
+ PIN_SLP(gpa0-5, INPUT, DOWN);
+ PIN_SLP(gpa0-6, INPUT, DOWN);
+ PIN_SLP(gpa0-7, INPUT, UP);
+
+ PIN_SLP(gpa1-0, INPUT, DOWN);
+ PIN_SLP(gpa1-1, INPUT, DOWN);
+ PIN_SLP(gpa1-2, INPUT, DOWN);
+ PIN_SLP(gpa1-3, INPUT, DOWN);
+ PIN_SLP(gpa1-4, INPUT, DOWN);
+ PIN_SLP(gpa1-5, INPUT, DOWN);
+
+ PIN_SLP(gpb-0, INPUT, NONE);
+ PIN_SLP(gpb-1, INPUT, NONE);
+ PIN_SLP(gpb-2, INPUT, NONE);
+ PIN_SLP(gpb-3, INPUT, NONE);
+ PIN_SLP(gpb-4, INPUT, DOWN);
+ PIN_SLP(gpb-5, INPUT, UP);
+ PIN_SLP(gpb-6, INPUT, DOWN);
+ PIN_SLP(gpb-7, INPUT, DOWN);
+
+ PIN_SLP(gpc0-0, INPUT, DOWN);
+ PIN_SLP(gpc0-1, INPUT, DOWN);
+ PIN_SLP(gpc0-2, INPUT, DOWN);
+ PIN_SLP(gpc0-3, INPUT, DOWN);
+ PIN_SLP(gpc0-4, INPUT, DOWN);
+
+ PIN_SLP(gpc1-0, INPUT, NONE);
+ PIN_SLP(gpc1-1, PREV, NONE);
+ PIN_SLP(gpc1-2, INPUT, NONE);
+ PIN_SLP(gpc1-3, INPUT, NONE);
+ PIN_SLP(gpc1-4, INPUT, NONE);
+
+ PIN_SLP(gpd0-0, INPUT, DOWN);
+ PIN_SLP(gpd0-1, INPUT, DOWN);
+ PIN_SLP(gpd0-2, INPUT, NONE);
+ PIN_SLP(gpd0-3, INPUT, NONE);
+
+ PIN_SLP(gpd1-0, INPUT, DOWN);
+ PIN_SLP(gpd1-1, INPUT, DOWN);
+ PIN_SLP(gpd1-2, INPUT, NONE);
+ PIN_SLP(gpd1-3, INPUT, NONE);
+
+ PIN_SLP(gpf0-0, INPUT, NONE);
+ PIN_SLP(gpf0-1, INPUT, NONE);
+ PIN_SLP(gpf0-2, INPUT, DOWN);
+ PIN_SLP(gpf0-3, INPUT, DOWN);
+ PIN_SLP(gpf0-4, INPUT, NONE);
+ PIN_SLP(gpf0-5, INPUT, DOWN);
+ PIN_SLP(gpf0-6, INPUT, NONE);
+ PIN_SLP(gpf0-7, INPUT, DOWN);
+
+ PIN_SLP(gpf1-0, INPUT, DOWN);
+ PIN_SLP(gpf1-1, INPUT, DOWN);
+ PIN_SLP(gpf1-2, INPUT, DOWN);
+ PIN_SLP(gpf1-3, INPUT, DOWN);
+ PIN_SLP(gpf1-4, INPUT, NONE);
+ PIN_SLP(gpf1-5, INPUT, NONE);
+ PIN_SLP(gpf1-6, INPUT, DOWN);
+ PIN_SLP(gpf1-7, PREV, NONE);
+
+ PIN_SLP(gpf2-0, PREV, NONE);
+ PIN_SLP(gpf2-1, INPUT, DOWN);
+ PIN_SLP(gpf2-2, INPUT, DOWN);
+ PIN_SLP(gpf2-3, INPUT, DOWN);
+ PIN_SLP(gpf2-4, INPUT, DOWN);
+ PIN_SLP(gpf2-5, INPUT, DOWN);
+ PIN_SLP(gpf2-6, INPUT, NONE);
+ PIN_SLP(gpf2-7, INPUT, NONE);
+
+ PIN_SLP(gpf3-0, INPUT, NONE);
+ PIN_SLP(gpf3-1, PREV, NONE);
+ PIN_SLP(gpf3-2, PREV, NONE);
+ PIN_SLP(gpf3-3, PREV, NONE);
+ PIN_SLP(gpf3-4, OUT1, NONE);
+ PIN_SLP(gpf3-5, INPUT, DOWN);
+
+ PIN_SLP(gpj0-0, PREV, NONE);
+ PIN_SLP(gpj0-1, PREV, NONE);
+ PIN_SLP(gpj0-2, PREV, NONE);
+ PIN_SLP(gpj0-3, INPUT, DOWN);
+ PIN_SLP(gpj0-4, PREV, NONE);
+ PIN_SLP(gpj0-5, PREV, NONE);
+ PIN_SLP(gpj0-6, INPUT, DOWN);
+ PIN_SLP(gpj0-7, INPUT, DOWN);
+
+ PIN_SLP(gpj1-0, INPUT, DOWN);
+ PIN_SLP(gpj1-1, PREV, NONE);
+ PIN_SLP(gpj1-2, PREV, NONE);
+ PIN_SLP(gpj1-3, INPUT, DOWN);
+ PIN_SLP(gpj1-4, INPUT, DOWN);
+ };
+};
+
+&pinctrl_1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&sleep1>;
+
+ hdmi_hpd: hdmi-hpd {
+ samsung,pins = "gpx3-7";
+ samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+ };
+
+ sleep1: sleep-states {
+ PIN_SLP(gpk0-0, PREV, NONE);
+ PIN_SLP(gpk0-1, PREV, NONE);
+ PIN_SLP(gpk0-2, OUT0, NONE);
+ PIN_SLP(gpk0-3, PREV, NONE);
+ PIN_SLP(gpk0-4, PREV, NONE);
+ PIN_SLP(gpk0-5, PREV, NONE);
+ PIN_SLP(gpk0-6, PREV, NONE);
+
+ PIN_SLP(gpk1-0, INPUT, DOWN);
+ PIN_SLP(gpk1-1, INPUT, DOWN);
+ PIN_SLP(gpk1-2, INPUT, DOWN);
+ PIN_SLP(gpk1-3, PREV, NONE);
+ PIN_SLP(gpk1-4, PREV, NONE);
+ PIN_SLP(gpk1-5, PREV, NONE);
+ PIN_SLP(gpk1-6, PREV, NONE);
+
+ PIN_SLP(gpk2-0, INPUT, DOWN);
+ PIN_SLP(gpk2-1, INPUT, DOWN);
+ PIN_SLP(gpk2-2, INPUT, DOWN);
+ PIN_SLP(gpk2-3, INPUT, DOWN);
+ PIN_SLP(gpk2-4, INPUT, DOWN);
+ PIN_SLP(gpk2-5, INPUT, DOWN);
+ PIN_SLP(gpk2-6, INPUT, DOWN);
+
+ PIN_SLP(gpk3-0, OUT0, NONE);
+ PIN_SLP(gpk3-1, INPUT, NONE);
+ PIN_SLP(gpk3-2, INPUT, DOWN);
+ PIN_SLP(gpk3-3, INPUT, NONE);
+ PIN_SLP(gpk3-4, INPUT, NONE);
+ PIN_SLP(gpk3-5, INPUT, NONE);
+ PIN_SLP(gpk3-6, INPUT, NONE);
+
+ PIN_SLP(gpl0-0, INPUT, DOWN);
+ PIN_SLP(gpl0-1, INPUT, DOWN);
+ PIN_SLP(gpl0-2, INPUT, DOWN);
+ PIN_SLP(gpl0-3, INPUT, DOWN);
+ PIN_SLP(gpl0-4, PREV, NONE);
+ PIN_SLP(gpl0-6, PREV, NONE);
+
+ PIN_SLP(gpl1-0, INPUT, DOWN);
+ PIN_SLP(gpl1-1, INPUT, DOWN);
+ PIN_SLP(gpl2-0, INPUT, DOWN);
+ PIN_SLP(gpl2-1, INPUT, DOWN);
+ PIN_SLP(gpl2-2, INPUT, DOWN);
+ PIN_SLP(gpl2-3, INPUT, DOWN);
+ PIN_SLP(gpl2-4, INPUT, DOWN);
+ PIN_SLP(gpl2-5, INPUT, DOWN);
+ PIN_SLP(gpl2-6, PREV, NONE);
+ PIN_SLP(gpl2-7, INPUT, DOWN);
+
+ PIN_SLP(gpm0-0, INPUT, DOWN);
+ PIN_SLP(gpm0-1, INPUT, DOWN);
+ PIN_SLP(gpm0-2, INPUT, DOWN);
+ PIN_SLP(gpm0-3, INPUT, DOWN);
+ PIN_SLP(gpm0-4, INPUT, DOWN);
+ PIN_SLP(gpm0-5, INPUT, DOWN);
+ PIN_SLP(gpm0-6, INPUT, DOWN);
+ PIN_SLP(gpm0-7, INPUT, DOWN);
+
+ PIN_SLP(gpm1-0, INPUT, DOWN);
+ PIN_SLP(gpm1-1, INPUT, DOWN);
+ PIN_SLP(gpm1-2, INPUT, NONE);
+ PIN_SLP(gpm1-3, INPUT, NONE);
+ PIN_SLP(gpm1-4, INPUT, NONE);
+ PIN_SLP(gpm1-5, INPUT, NONE);
+ PIN_SLP(gpm1-6, INPUT, DOWN);
+
+ PIN_SLP(gpm2-0, INPUT, NONE);
+ PIN_SLP(gpm2-1, INPUT, NONE);
+ PIN_SLP(gpm2-2, INPUT, DOWN);
+ PIN_SLP(gpm2-3, INPUT, DOWN);
+ PIN_SLP(gpm2-4, INPUT, DOWN);
+
+ PIN_SLP(gpm3-0, PREV, NONE);
+ PIN_SLP(gpm3-1, PREV, NONE);
+ PIN_SLP(gpm3-2, PREV, NONE);
+ PIN_SLP(gpm3-3, OUT1, NONE);
+ PIN_SLP(gpm3-4, INPUT, DOWN);
+ PIN_SLP(gpm3-5, INPUT, DOWN);
+ PIN_SLP(gpm3-6, INPUT, DOWN);
+ PIN_SLP(gpm3-7, INPUT, DOWN);
+
+ PIN_SLP(gpm4-0, INPUT, DOWN);
+ PIN_SLP(gpm4-1, INPUT, DOWN);
+ PIN_SLP(gpm4-2, INPUT, DOWN);
+ PIN_SLP(gpm4-3, INPUT, DOWN);
+ PIN_SLP(gpm4-4, INPUT, DOWN);
+ PIN_SLP(gpm4-5, INPUT, DOWN);
+ PIN_SLP(gpm4-6, INPUT, DOWN);
+ PIN_SLP(gpm4-7, INPUT, DOWN);
+
+ PIN_SLP(gpy0-0, INPUT, DOWN);
+ PIN_SLP(gpy0-1, INPUT, DOWN);
+ PIN_SLP(gpy0-2, INPUT, DOWN);
+ PIN_SLP(gpy0-3, INPUT, DOWN);
+ PIN_SLP(gpy0-4, INPUT, DOWN);
+ PIN_SLP(gpy0-5, INPUT, DOWN);
+
+ PIN_SLP(gpy1-0, INPUT, DOWN);
+ PIN_SLP(gpy1-1, INPUT, DOWN);
+ PIN_SLP(gpy1-2, INPUT, DOWN);
+ PIN_SLP(gpy1-3, INPUT, DOWN);
+
+ PIN_SLP(gpy2-0, PREV, NONE);
+ PIN_SLP(gpy2-1, INPUT, DOWN);
+ PIN_SLP(gpy2-2, INPUT, NONE);
+ PIN_SLP(gpy2-3, INPUT, NONE);
+ PIN_SLP(gpy2-4, INPUT, NONE);
+ PIN_SLP(gpy2-5, INPUT, NONE);
+
+ PIN_SLP(gpy3-0, INPUT, DOWN);
+ PIN_SLP(gpy3-1, INPUT, DOWN);
+ PIN_SLP(gpy3-2, INPUT, DOWN);
+ PIN_SLP(gpy3-3, INPUT, DOWN);
+ PIN_SLP(gpy3-4, INPUT, DOWN);
+ PIN_SLP(gpy3-5, INPUT, DOWN);
+ PIN_SLP(gpy3-6, INPUT, DOWN);
+ PIN_SLP(gpy3-7, INPUT, DOWN);
+
+ PIN_SLP(gpy4-0, INPUT, DOWN);
+ PIN_SLP(gpy4-1, INPUT, DOWN);
+ PIN_SLP(gpy4-2, INPUT, DOWN);
+ PIN_SLP(gpy4-3, INPUT, DOWN);
+ PIN_SLP(gpy4-4, INPUT, DOWN);
+ PIN_SLP(gpy4-5, INPUT, DOWN);
+ PIN_SLP(gpy4-6, INPUT, DOWN);
+ PIN_SLP(gpy4-7, INPUT, DOWN);
+
+ PIN_SLP(gpy5-0, INPUT, DOWN);
+ PIN_SLP(gpy5-1, INPUT, DOWN);
+ PIN_SLP(gpy5-2, INPUT, DOWN);
+ PIN_SLP(gpy5-3, INPUT, DOWN);
+ PIN_SLP(gpy5-4, INPUT, DOWN);
+ PIN_SLP(gpy5-5, INPUT, DOWN);
+ PIN_SLP(gpy5-6, INPUT, DOWN);
+ PIN_SLP(gpy5-7, INPUT, DOWN);
+
+ PIN_SLP(gpy6-0, INPUT, DOWN);
+ PIN_SLP(gpy6-1, INPUT, DOWN);
+ PIN_SLP(gpy6-2, INPUT, DOWN);
+ PIN_SLP(gpy6-3, INPUT, DOWN);
+ PIN_SLP(gpy6-4, INPUT, DOWN);
+ PIN_SLP(gpy6-5, INPUT, DOWN);
+ PIN_SLP(gpy6-6, INPUT, DOWN);
+ PIN_SLP(gpy6-7, INPUT, DOWN);
+ };
+};
+
+&pinctrl_2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&sleep2>;
+
+ sleep2: sleep-states {
+ PIN_SLP(gpz-0, INPUT, DOWN);
+ PIN_SLP(gpz-1, INPUT, DOWN);
+ PIN_SLP(gpz-2, INPUT, DOWN);
+ PIN_SLP(gpz-3, INPUT, DOWN);
+ PIN_SLP(gpz-4, INPUT, DOWN);
+ PIN_SLP(gpz-5, INPUT, DOWN);
+ PIN_SLP(gpz-6, INPUT, DOWN);
+ };
+};
+
+&pinctrl_3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&sleep3>;
+
+ sleep3: sleep-states {
+ PIN_SLP(gpv0-0, INPUT, DOWN);
+ PIN_SLP(gpv0-1, INPUT, DOWN);
+ PIN_SLP(gpv0-2, INPUT, DOWN);
+ PIN_SLP(gpv0-3, INPUT, DOWN);
+ PIN_SLP(gpv0-4, INPUT, DOWN);
+ PIN_SLP(gpv0-5, INPUT, DOWN);
+ PIN_SLP(gpv0-6, INPUT, DOWN);
+ PIN_SLP(gpv0-7, INPUT, DOWN);
+
+ PIN_SLP(gpv1-0, INPUT, DOWN);
+ PIN_SLP(gpv1-1, INPUT, DOWN);
+ PIN_SLP(gpv1-2, INPUT, DOWN);
+ PIN_SLP(gpv1-3, INPUT, DOWN);
+ PIN_SLP(gpv1-4, INPUT, DOWN);
+ PIN_SLP(gpv1-5, INPUT, DOWN);
+ PIN_SLP(gpv1-6, INPUT, DOWN);
+ PIN_SLP(gpv1-7, INPUT, DOWN);
+
+ PIN_SLP(gpv2-0, INPUT, DOWN);
+ PIN_SLP(gpv2-1, INPUT, DOWN);
+ PIN_SLP(gpv2-2, INPUT, DOWN);
+ PIN_SLP(gpv2-3, INPUT, DOWN);
+ PIN_SLP(gpv2-4, INPUT, DOWN);
+ PIN_SLP(gpv2-5, INPUT, DOWN);
+ PIN_SLP(gpv2-6, INPUT, DOWN);
+ PIN_SLP(gpv2-7, INPUT, DOWN);
+
+ PIN_SLP(gpv3-0, INPUT, DOWN);
+ PIN_SLP(gpv3-1, INPUT, DOWN);
+ PIN_SLP(gpv3-2, INPUT, DOWN);
+ PIN_SLP(gpv3-3, INPUT, DOWN);
+ PIN_SLP(gpv3-4, INPUT, DOWN);
+ PIN_SLP(gpv3-5, INPUT, DOWN);
+ PIN_SLP(gpv3-6, INPUT, DOWN);
+ PIN_SLP(gpv3-7, INPUT, DOWN);
+
+ PIN_SLP(gpv4-0, INPUT, DOWN);
+ };
+};
+
+&pwm {
+ pinctrl-0 = <&pwm0_out>;
+ pinctrl-names = "default";
+ samsung,pwm-outputs = <0>;
+ status = "okay";
+};
+
+&rtc {
+ status = "okay";
+ clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
+ clock-names = "rtc", "rtc_src";
+};
+
+&sdhci_2 {
+ bus-width = <4>;
+ cd-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>;
+ cd-inverted;
+ pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
+ pinctrl-names = "default";
+ vmmc-supply = <&ldo21_reg>;
+ status = "okay";
+};
+
+&sdhci_3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
+
+ broken-cd;
+
+ mmc-pwrseq = <&wlan_pwrseq>;
+
+ bus-width = <4>;
+ status = "okay";
+
+ brcmf: wifi@1 {
+ reg = <1>;
+ compatible = "brcm,bcm4329-fmac";
+ interrupt-parent = <&gpx2>;
+ interrupts = <5 IRQ_TYPE_NONE>;
+ interrupt-names = "host-wake";
+ };
+};
+
+&serial_0 {
+ status = "okay";
+};
+
+&serial_1 {
+ status = "okay";
+};
+
+&serial_2 {
+ status = "okay";
+};
+
+&serial_3 {
+ status = "okay";
+};
+
+&sleep0 {
+ gpf1-0 {
+ samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+ samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+ };
+};
+
+&spi_1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi1_bus>;
+ cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+
+ s5c73m3_spi: s5c73m3@0 {
+ compatible = "samsung,s5c73m3";
+ spi-max-frequency = <50000000>;
+ reg = <0>;
+ controller-data {
+ samsung,spi-feedback-delay = <2>;
+ };
+ };
+};
+
+&tmu {
+ vtmu-supply = <&ldo10_reg>;
+ status = "okay";
+};
+
+&pmu_system_controller {
+ compatible = "samsung,exynos4210-pmu", "syscon", "simple-mfd";
+
+ reboot-mode {
+ compatible = "syscon-reboot-mode";
+ offset = <0x80c>;
+
+ mode-normal = <0x12345670>;
+ mode-bootloader = <0x12345671>;
+ mode-download = <0x12345671>;
+ mode-recovery = <0x12345674>;
+ };
+};
diff --git a/arch/arm/boot/dts/exynos4412-t0.dts b/arch/arm/boot/dts/exynos4412-t0.dts
new file mode 100644
index 000000000000..c49abe857b6f
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-t0.dts
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "exynos4412-midas.dtsi"
+
+/ {
+ compatible = "samsung,t0", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
+ model = "Samsung T0 (GT-N7100, GT-N7105) based on Exynos4412";
+
+ memory@40000000 {
+ device_type = "memory";
+ reg = <0x40000000 0x80000000>;
+ };
+
+};
+
+&buck9_reg {
+ maxim,ena-gpios = <&gpm1 0 GPIO_ACTIVE_HIGH>;
+};
+
+&cam_io_reg {
+ gpio = <&gpm0 7 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&cam_af_reg {
+ gpio = <&gpm1 1 GPIO_ACTIVE_HIGH>;
+ status = "okay";
+};
+
+&ldo13_reg {
+ regulator-name = "VCC_1.8V_LCD";
+ regulator-min-microvolt = <18000000>;
+ regulator-max-microvolt = <18000000>;
+ regulator-always-on;
+ status = "okay";
+};
+
+&ldo23_reg {
+ regulator-always-on;
+};
+
+&ldo24_reg {
+ regulator-always-on;
+};
+
+&ldo25_reg {
+ regulator-name = "VCI_3.0V_LCD";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ status = "okay";
+};
--
2.15.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] ARM: exynos: extend cpuidle support to midas boards
[not found] ` <20171212140815.28257-1-simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
2017-12-12 14:08 ` [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards Simon Shields
@ 2017-12-12 14:08 ` Simon Shields
1 sibling, 0 replies; 6+ messages in thread
From: Simon Shields @ 2017-12-12 14:08 UTC (permalink / raw)
To: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA
Cc: Kukjin Kim, Krzysztof Kozlowski,
devicetree-u79uwXL29TY76Z2rM5mHXA, Simon Shields
Exynos4412 can only use cpuidle when running under a compatible
bootloader/firmware. The midas family of boards has such a firmware,
so allow them to use cpuidle.
Signed-off-by: Simon Shields <simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
---
arch/arm/mach-exynos/exynos.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 9a9caac1125a..4ee60e31ea48 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -196,7 +196,8 @@ static void __init exynos_dt_machine_init(void)
#endif
if (of_machine_is_compatible("samsung,exynos4210") ||
(of_machine_is_compatible("samsung,exynos4412") &&
- of_machine_is_compatible("samsung,trats2")) ||
+ (of_machine_is_compatible("samsung,trats2") ||
+ of_machine_is_compatible("samsung,midas"))) ||
of_machine_is_compatible("samsung,exynos3250") ||
of_machine_is_compatible("samsung,exynos5250"))
platform_device_register(&exynos_cpuidle);
--
2.15.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards
2017-12-12 14:08 ` [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards Simon Shields
@ 2017-12-14 8:48 ` Krzysztof Kozlowski
[not found] ` <CAJKOXPfkQvo09r6WpZG-E+EgUk+p32dVycxWi6L07kHzv1EsWQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 6+ messages in thread
From: Krzysztof Kozlowski @ 2017-12-14 8:48 UTC (permalink / raw)
To: Simon Shields
Cc: linux-samsung-soc, Kukjin Kim, devicetree, Marek Szyprowski,
Bartłomiej Żołnierkiewicz
Hi Simon,
Thanks for new boards!
+Cc Marek, Bartlomiej,
On Tue, Dec 12, 2017 at 3:08 PM, Simon Shields <simon@lineageos.org> wrote:
> "midas" is the codename for a family of smartphones released by Samsung
> Mobile. It includes the Galaxy S3 (GT-I9300/I9305) and the Galaxy
> Note 2 (GT-N7100/N7105). The boards largely have the same peripherals:
> the main differences are touchscreen, display panel and cellular modem.
>
> Signed-off-by: Simon Shields <simon@lineageos.org>
> ---
> arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi | 144 +++
> arch/arm/boot/dts/exynos4412-m0.dts | 14 +
> arch/arm/boot/dts/exynos4412-m3.dts | 19 +
> arch/arm/boot/dts/exynos4412-midas.dtsi | 1291 +++++++++++++++++++++++++++
M0 is essentially Trats2. You are duplicating here almost entire
Trats2 which means:
1. A lot of duplicated code thus it will require more maintenance to
keep DTS synced,
2. It is very difficult to spot the changes and possible errors
between Trats2 and Midas DTSI/M0.
Please make a generic family of devices based on Midas, including
Trats2. You might make it in steps for easier review:
1. Split common Trats2 part,
2. Add new boards.
Also, few minor nits below.
> arch/arm/boot/dts/exynos4412-t0.dts | 51 ++
> 5 files changed, 1519 insertions(+)
> create mode 100644 arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
> create mode 100644 arch/arm/boot/dts/exynos4412-m0.dts
> create mode 100644 arch/arm/boot/dts/exynos4412-m3.dts
> create mode 100644 arch/arm/boot/dts/exynos4412-midas.dtsi
> create mode 100644 arch/arm/boot/dts/exynos4412-t0.dts
>
> diff --git a/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi b/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
> new file mode 100644
> index 000000000000..536195adfe65
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi
> @@ -0,0 +1,144 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "exynos4412-midas.dtsi"
> +
> +/ {
> + regulators {
> + lcd_vdd3_reg: voltage-regulator-10 {
> + compatible = "regulator-fixed";
> + regulator-name = "LCD_VDD_2.2V";
> + regulator-min-microvolt = <2200000>;
> + regulator-max-microvolt = <2200000>;
> + enable-active-high;
> + gpio = <&gpc0 1 GPIO_ACTIVE_HIGH>;
> + };
> +
> + ps_als_reg: voltage-regulator-11 {
> + compatible = "regulator-fixed";
> + regulator-name = "LED_A_3.0V";
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3000000>;
> + enable-active-high;
> + gpio = <&gpj0 5 GPIO_ACTIVE_HIGH>;
> + };
> + };
> +
> + i2c_ak8975: i2c-gpio-10 {
> + compatible = "i2c-gpio";
> + gpios = <&gpy2 4 GPIO_ACTIVE_HIGH>, <&gpy2 5 GPIO_ACTIVE_HIGH>;
> + i2c-gpio,delay-us = <2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ak8975@c {
> + compatible = "asahi-kasei,ak8975";
> + reg = <0x0c>;
> + gpios = <&gpj0 7 GPIO_ACTIVE_HIGH>;
> + };
> + };
> +
> + i2c_cm36651: i2c-gpio-11 {
> + compatible = "i2c-gpio";
> + gpios = <&gpf0 0 GPIO_ACTIVE_LOW>, <&gpf0 1 GPIO_ACTIVE_LOW>;
> + i2c-gpio,delay-us = <2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + cm36651@18 {
> + compatible = "capella,cm36651";
> + reg = <0x18>;
> + interrupt-parent = <&gpx0>;
> + interrupts = <2 IRQ_EDGE_TYPE_FALLING>;
> + vled-supply = <&ps_als_reg>;
> + };
> + };
> +};
> +
> +&buck9_reg {
> + maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
> +};
> +
> +&cam_af_reg {
> + gpio = <&gpm0 4 GPIO_ACTIVE_HIGH>;
> + status = "okay";
> +};
> +
> +&cam_io_reg {
> + gpio = <&gpm0 2 GPIO_ACTIVE_HIGH>;
> + status = "okay";
> +};
> +
> +&dsi_0 {
> + vddcore-supply = <&ldo8_reg>;
> + vddio-supply = <&ldo10_reg>;
> + samsung,burst-clock-frequency = <500000000>;
> + samsung,esc-clock-frequency = <20000000>;
> + samsung,pll-clock-frequency = <24000000>;
> + status = "okay";
> +
> + panel@0 {
> + compatible = "samsung,s6e8aa0";
> + reg = <0>;
> + vdd3-supply = <&lcd_vdd3_reg>;
> + vci-supply = <&ldo25_reg>;
> + reset-gpios = <&gpf2 1 GPIO_ACTIVE_HIGH>;
> + power-on-delay= <50>;
> + reset-delay = <100>;
> + init-delay = <100>;
> + flip-horizontal;
> + flip-vertical;
> + panel-width-mm = <58>;
> + panel-height-mm = <103>;
> +
> + display-timings {
> + timing-0 {
> + clock-frequency = <57153600>;
> + hactive = <720>;
> + vactive = <1280>;
> + hfront-porch = <5>;
> + hback-porch = <5>;
> + hsync-len = <5>;
> + vfront-porch = <13>;
> + vback-porch = <1>;
> + vsync-len = <2>;
> + };
> + };
> + };
> +};
> +
> +&i2c_0 {
> + status = "okay";
> +};
> +
> +&i2c_3 {
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-slave-addr = <0x10>;
> + samsung,i2c-max-bus-freq = <400000>;
> + pinctrl-0 = <&i2c3_bus>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + mms114-touchscreen@48 {
> + compatible = "melfas,mms114";
> + reg = <0x48>;
> + interrupt-parent = <&gpm2>;
> + interrupts = <3 IRQ_EDGE_TYPE_FALLING>;
> + x-size = <720>;
> + y-size = <1280>;
> + avdd-supply = <&ldo23_reg>;
> + vdd-supply = <&ldo24_reg>;
> + };
> +};
> +
> +&ldo17_reg {
> + regulator-name = "CAM_SENSOR_CORE_1.2V";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> +};
> +
> +&ldo25_reg {
> + regulator-name = "LCD_VCC_3.3V";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +};
> +
> diff --git a/arch/arm/boot/dts/exynos4412-m0.dts b/arch/arm/boot/dts/exynos4412-m0.dts
> new file mode 100644
> index 000000000000..18aff81682a9
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-m0.dts
> @@ -0,0 +1,14 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "exynos4412-galaxy-s3.dtsi"
> +
> +/ {
> + compatible = "samsung,m0", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
> + model = "Samsung M0 (GT-I9300) based on Exynos4412";
> +
> + memory@40000000 {
> + device_type = "memory";
> + reg = <0x40000000 0x40000000>;
> + };
> +};
> +
> diff --git a/arch/arm/boot/dts/exynos4412-m3.dts b/arch/arm/boot/dts/exynos4412-m3.dts
> new file mode 100644
> index 000000000000..e13ee49ad867
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-m3.dts
> @@ -0,0 +1,19 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "exynos4412-galaxy-s3.dtsi"
> +
> +/ {
> + compatible = "samsung,m3", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
> + model = "Samsung M3 (GT-I9305) based on Exynos4412";
> +
> + memory@40000000 {
> + device_type = "memory";
> + reg = <0x40000000 0x80000000>;
> + };
> +};
> +
> +&i2c0_bus {
> + // SCL and SDA pins are swapped
Use /* comments (except SPDX line).
> + samsung,pins = "gpd1-1", "gpd1-0";
> +};
> +
> diff --git a/arch/arm/boot/dts/exynos4412-midas.dtsi b/arch/arm/boot/dts/exynos4412-midas.dtsi
> new file mode 100644
> index 000000000000..65c1e2d14d26
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-midas.dtsi
> @@ -0,0 +1,1291 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "exynos4412.dtsi"
> +#include "exynos4412-ppmu-common.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/clock/maxim,max77686.h>
> +#include <dt-bindings/pinctrl/samsung.h>
> +
> +/ {
> + compatible = "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
> +
> + aliases {
> + i2c9 = &i2c_max77693;
> + i2c10 = &i2c_max77693_fuel;
> + };
> +
> + chosen {
> + stdout-path = &serial_2;
> + };
> +
> + firmware@204f000 {
> + compatible = "samsung,secure-firmware";
> + reg = <0x0204F000 0x1000>;
> + };
> +
> + fixed-rate-clocks {
> + xxti {
> + compatible = "samsung,clock-xxti", "fixed-clock";
> + clock-frequency = <0>;
> + };
> +
> + xusbxti {
> + compatible = "samsung,clock-xusbxti", "fixed-clock";
> + clock-frequency = <24000000>;
> + };
> + };
> +
> + regulators {
> + compatible = "simple-bus";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + cam_io_reg: voltage-regulator-0 {
> + compatible = "regulator-fixed";
> + regulator-name = "CAM_SENSOR_A";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + enable-active-high;
> + status = "disabled";
> + };
> +
> + cam_af_reg: voltage-regulator-1 {
> + compatible = "regulator-fixed";
> + regulator-name = "CAM_AF";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + enable-active-high;
> + status = "disabled";
> + };
> +
> + vsil12: voltage-regulator-6 {
> + compatible = "regulator-fixed";
> + regulator-name = "VSIL_1.2V";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + vin-supply = <&buck7_reg>;
> + };
> +
> + vcc33mhl: voltage-regulator-7 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC_3.3_MHL";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + vcc18mhl: voltage-regulator-8 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC_1.8_MHL";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + gpio = <&gpl0 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> +
> + key-down {
> + gpios = <&gpx3 3 GPIO_ACTIVE_LOW>;
> + linux,code = <114>;
> + label = "volume down";
> + debounce-interval = <10>;
> + };
> +
> + key-up {
> + gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
> + linux,code = <115>;
> + label = "volume up";
> + debounce-interval = <10>;
> + };
> +
> + key-power {
> + gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
> + linux,code = <116>;
> + label = "power";
> + debounce-interval = <10>;
> + wakeup-source;
> + };
> +
> + key-home {
> + gpios = <&gpx0 1 GPIO_ACTIVE_LOW>;
> + linux,code = <172>;
> + label = "home";
> + debounce-inteval = <10>;
> + wakeup-source;
> + };
> + };
> +
> + i2c_max77693: i2c-gpio-0 {
> + compatible = "i2c-gpio";
> + gpios = <&gpm2 0 GPIO_ACTIVE_HIGH>, <&gpm2 1 GPIO_ACTIVE_HIGH>;
> + i2c-gpio,delay-us = <2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "okay";
> +
> + max77693@66 {
> + compatible = "maxim,max77693";
> + interrupt-parent = <&gpx1>;
> + interrupts = <5 IRQ_EDGE_TYPE_FALLING>;
> + reg = <0x66>;
> +
> + regulators {
> + esafeout1_reg: ESAFEOUT1 {
> + regulator-name = "ESAFEOUT1";
> + };
> + esafeout2_reg: ESAFEOUT2 {
> + regulator-name = "ESAFEOUT2";
> + };
> + charger_reg: CHARGER {
> + regulator-name = "CHARGER";
> + regulator-min-microamp = <60000>;
> + regulator-max-microamp = <2580000>;
> + };
> + };
> +
> + max77693_haptic {
> + compatible = "maxim,max77693-haptic";
> + haptic-supply = <&ldo26_reg>;
> + pwms = <&pwm 0 38022 0>;
> + };
> +
> + charger {
> + compatible = "maxim,max77693-charger";
> +
> + maxim,constant-microvolt = <4350000>;
> + maxim,min-system-microvolt = <3600000>;
> + maxim,thermal-regulation-celsius = <100>;
> + maxim,battery-overcurrent-microamp = <3500000>;
> + maxim,charge-input-threshold-microvolt = <4300000>;
> + };
> + };
> + };
> +
> + i2c_max77693_fuel: i2c-gpio-1 {
> + compatible = "i2c-gpio";
> + gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>, <&gpf1 4 GPIO_ACTIVE_HIGH>;
> + i2c-gpio,delay-us = <2>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + status = "okay";
> +
> + max77693-fuel-gauge@36 {
> + compatible = "maxim,max17047";
> + interrupt-parent = <&gpx2>;
> + interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
> + reg = <0x36>;
> +
> + maxim,over-heat-temp = <700>;
> + maxim,over-volt = <4500>;
> + };
> + };
> +
> + i2c-mhl {
> + compatible = "i2c-gpio";
> + gpios = <&gpf0 4 GPIO_ACTIVE_HIGH>, <&gpf0 6 GPIO_ACTIVE_HIGH>;
> + i2c-gpio,delay-us = <100>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + pinctrl-0 = <&i2c_mhl_bus>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + sii9234: hdmi-bridge@39 {
> + compatible = "sil,sii9234";
> + avcc33-supply = <&vcc33mhl>;
> + iovcc18-supply = <&vcc18mhl>;
> + avcc12-supply = <&vsil12>;
> + cvcc12-supply = <&vsil12>;
> + reset-gpios = <&gpf3 4 GPIO_ACTIVE_LOW>;
> + interrupt-parent = <&gpf3>;
> + interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
> + reg = <0x39>;
> +
> + port {
> + mhl_to_hdmi: endpoint {
> + remote-endpoint = <&hdmi_to_mhl>;
> + };
> + };
> + };
> + };
> +
> + camera: camera {
> + pinctrl-0 = <&cam_port_a_clk_active &cam_port_b_clk_active>;
> + pinctrl-names = "default";
> + status = "okay";
> + assigned-clocks = <&clock CLK_MOUT_CAM0>,
> + <&clock CLK_MOUT_CAM1>;
> + assigned-clock-parents = <&clock CLK_XUSBXTI>,
> + <&clock CLK_XUSBXTI>;
> + };
> +
> + wlan_pwrseq: sdhci3-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + reset-gpios = <&gpj0 0 GPIO_ACTIVE_LOW>;
> + clocks = <&max77686 MAX77686_CLK_PMIC>;
> + clock-names = "ext_clock";
> + };
> +
> + thermistor-ap {
> + compatible = "murata,ncp15wb473";
> + pullup-uv = <1800000>; /* VCC_1.8V_AP */
> + pullup-ohm = <100000>; /* 100K */
> + pulldown-ohm = <100000>; /* 100K */
> + io-channels = <&adc 1>; /* AP temperature */
> + };
> +
> + thermistor-battery {
> + compatible = "murata,ncp15wb473";
> + pullup-uv = <1800000>; /* VCC_1.8V_AP */
> + pullup-ohm = <100000>; /* 100K */
> + pulldown-ohm = <100000>; /* 100K */
> + io-channels = <&adc 2>; /* Battery temperature */
> + };
> +
> + thermal-zones {
> + cpu_thermal: cpu-thermal {
> + cooling-maps {
> + map0 {
> + /* Corresponds to 800MHz at freq_table */
> + cooling-device = <&cpu0 7 7>;
> + };
> + map1 {
> + /* Corresponds to 200MHz at freq_table */
> + cooling-device = <&cpu0 13 13>;
> + };
> + };
> + };
> + };
> +
> +};
> +
> +&adc {
> + vdd-supply = <&ldo3_reg>;
> + status = "okay";
> +};
> +
> +&bus_dmc {
> + devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
> + vdd-supply = <&buck1_reg>;
> + status = "okay";
> +};
> +
> +&bus_acp {
> + devfreq = <&bus_dmc>;
> + status = "okay";
> +};
> +
> +&bus_c2c {
> + devfreq = <&bus_dmc>;
> + status = "okay";
> +};
> +
> +&bus_leftbus {
> + devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
> + vdd-supply = <&buck3_reg>;
> + status = "okay";
> +};
> +
> +&bus_rightbus {
> + devfreq = <&bus_leftbus>;
> + status = "okay";
> +};
> +
> +&bus_display {
> + devfreq = <&bus_leftbus>;
> + status = "okay";
> +};
> +
> +&bus_fsys {
> + devfreq = <&bus_leftbus>;
> + status = "okay";
> +};
> +
> +&bus_peri {
> + devfreq = <&bus_leftbus>;
> + status = "okay";
> +};
> +
> +&bus_mfc {
> + devfreq = <&bus_leftbus>;
> + status = "okay";
> +};
> +
> +&cpu0 {
> + cpu0-supply = <&buck2_reg>;
> +};
> +
> +&csis_0 {
> + status = "okay";
> + vddcore-supply = <&ldo8_reg>;
> + vddio-supply = <&ldo10_reg>;
> + assigned-clocks = <&clock CLK_MOUT_CSIS0>,
> + <&clock CLK_SCLK_CSIS0>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +
> + /* Camera C (3) MIPI CSI-2 (CSIS0) */
> + port@3 {
> + reg = <3>;
> + csis0_ep: endpoint {
> + remote-endpoint = <&s5c73m3_ep>;
> + data-lanes = <1 2 3 4>;
> + samsung,csis-hs-settle = <12>;
> + };
> + };
> +};
> +
> +&csis_1 {
> + status = "okay";
> + vddcore-supply = <&ldo8_reg>;
> + vddio-supply = <&ldo10_reg>;
> + assigned-clocks = <&clock CLK_MOUT_CSIS1>,
> + <&clock CLK_SCLK_CSIS1>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +
> + /* Camera D (4) MIPI CSI-2 (CSIS1) */
> + port@4 {
> + reg = <4>;
> + csis1_ep: endpoint {
> + remote-endpoint = <&is_s5k6a3_ep>;
> + data-lanes = <1>;
> + samsung,csis-hs-settle = <18>;
> + samsung,csis-wclk;
> + };
> + };
> +};
> +
> +&exynos_usbphy {
> + vbus-supply = <&esafeout1_reg>;
> + status = "okay";
> +};
> +
> +&fimc_0 {
> + status = "okay";
> + assigned-clocks = <&clock CLK_MOUT_FIMC0>,
> + <&clock CLK_SCLK_FIMC0>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +};
> +
> +&fimc_1 {
> + status = "okay";
> + assigned-clocks = <&clock CLK_MOUT_FIMC1>,
> + <&clock CLK_SCLK_FIMC1>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +};
> +
> +&fimc_2 {
> + status = "okay";
> + assigned-clocks = <&clock CLK_MOUT_FIMC2>,
> + <&clock CLK_SCLK_FIMC2>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +};
> +
> +&fimc_3 {
> + status = "okay";
> + assigned-clocks = <&clock CLK_MOUT_FIMC3>,
> + <&clock CLK_SCLK_FIMC3>;
> + assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
> + assigned-clock-rates = <0>, <176000000>;
> +};
> +
> +&fimc_is {
> + pinctrl-0 = <&fimc_is_uart>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + i2c1_isp: i2c-isp@12140000 {
> + pinctrl-0 = <&fimc_is_i2c1>;
> + pinctrl-names = "default";
> +
> + s5k6a3@10 {
> + compatible = "samsung,s5k6a3";
> + reg = <0x10>;
> + svdda-supply = <&cam_io_reg>;
> + svddio-supply = <&ldo19_reg>;
> + afvdd-supply = <&ldo19_reg>;
> + clock-frequency = <24000000>;
> + /* CAM_B_CLKOUT */
> + clocks = <&camera 1>;
> + clock-names = "extclk";
> + samsung,camclk-out = <1>;
> + gpios = <&gpm1 6 GPIO_ACTIVE_HIGH>;
> +
> + port {
> + is_s5k6a3_ep: endpoint {
> + remote-endpoint = <&csis1_ep>;
> + data-lanes = <1>;
> + };
> + };
> + };
> + };
> +};
> +
> +&fimc_lite_0 {
> + status = "okay";
> +};
> +
> +&fimc_lite_1 {
> + status = "okay";
> +};
> +
> +&fimd {
> + status = "okay";
> +};
> +
> +&hdmi {
> + hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&hdmi_hpd>;
> + vdd-supply = <&ldo3_reg>;
> + vdd_osc-supply = <&ldo4_reg>;
> + vdd_pll-supply = <&ldo3_reg>;
> + ddc = <&i2c_5>;
> + status = "okay";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> + hdmi_to_mhl: endpoint {
> + remote-endpoint = <&mhl_to_hdmi>;
> + };
> + };
> + };
> +};
> +
> +&hsotg {
> + vusb_d-supply = <&ldo15_reg>;
> + vusb_a-supply = <&ldo12_reg>;
> + dr_mode = "peripheral";
> + status = "okay";
> +};
> +
> +&i2c_0 {
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-slave-addr = <0x10>;
> + samsung,i2c-max-bus-freq = <400000>;
> + pinctrl-0 = <&i2c0_bus>;
> + pinctrl-names = "default";
> +
> + status = "disabled";
> +
> + s5c73m3@3c {
> + compatible = "samsung,s5c73m3";
> + reg = <0x3c>;
> + standby-gpios = <&gpm0 1 GPIO_ACTIVE_LOW>; /* ISP_STANDBY */
> + xshutdown-gpios = <&gpf1 3 GPIO_ACTIVE_LOW>; /* ISP_RESET */
> + vdd-int-supply = <&buck9_reg>;
> + vddio-cis-supply = <&ldo9_reg>;
> + vdda-supply = <&ldo17_reg>;
> + vddio-host-supply = <&ldo18_reg>;
> + vdd-af-supply = <&cam_af_reg>;
> + vdd-reg-supply = <&cam_io_reg>;
> + clock-frequency = <24000000>;
> + /* CAM_A_CLKOUT */
> + clocks = <&camera 0>;
> + clock-names = "cis_extclk";
> + port {
> + s5c73m3_ep: endpoint {
> + remote-endpoint = <&csis0_ep>;
> + data-lanes = <1 2 3 4>;
> + };
> + };
> + };
> +};
> +
> +&i2c_4 {
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-slave-addr = <0x10>;
> + samsung,i2c-max-bus-freq = <100000>;
> + pinctrl-0 = <&i2c4_bus>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + wm1811: wm1811@1a {
> + compatible = "wlf,wm1811";
> + reg = <0x1a>;
> + clocks = <&pmu_system_controller 0>;
> + clock-names = "MCLK1";
> + DCVDD-supply = <&ldo3_reg>;
> + DBVDD1-supply = <&ldo3_reg>;
> + wlf,ldo1ena = <&gpj0 4 0>;
> + };
> +};
> +
> +&i2c_5 {
> + status = "okay";
> +};
> +
> +&i2c_7 {
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-slave-addr = <0x10>;
> + samsung,i2c-max-bus-freq = <100000>;
> + pinctrl-0 = <&i2c7_bus>;
> + pinctrl-names = "default";
> + status = "okay";
> +
> + max77686: max77686_pmic@9 {
> + compatible = "maxim,max77686";
> + interrupt-parent = <&gpx0>;
> + interrupts = <7 IRQ_EDGE_TYPE_NONE>;
> + reg = <0x09>;
> + #clock-cells = <1>;
> +
> + voltage-regulators {
> + ldo1_reg: LDO1 {
> + regulator-name = "VALIVE_1.0V_AP";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-always-on;
> + };
> +
> + ldo2_reg: LDO2 {
> + regulator-name = "VM1M2_1.2V_AP";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-always-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + ldo3_reg: LDO3 {
> + regulator-name = "VCC_1.8V_AP";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-always-on;
> + };
> +
> + ldo4_reg: LDO4 {
> + regulator-name = "VCC_2.8V_AP";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + regulator-always-on;
> + };
> +
> + ldo5_reg: LDO5 {
> + regulator-name = "VTOUCH_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-always-on;
> + };
> +
> + ldo6_reg: LDO6 {
> + regulator-name = "VMPLL_1.0V_AP";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-always-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + ldo7_reg: LDO7 {
> + regulator-name = "VPLL_1.0V_AP";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-always-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + ldo8_reg: LDO8 {
> + regulator-name = "VMIPI_1.0V";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + ldo9_reg: LDO9 {
> + regulator-name = "CAM_ISP_MIPI_1.2V";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + };
> +
> + ldo10_reg: LDO10 {
> + regulator-name = "VMIPI_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + ldo11_reg: LDO11 {
> + regulator-name = "VABB1_1.95V";
> + regulator-min-microvolt = <1950000>;
> + regulator-max-microvolt = <1950000>;
> + regulator-always-on;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + ldo12_reg: LDO12 {
> + regulator-name = "VUOTG_3.0V";
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3000000>;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + ldo13_reg: LDO13 {
> + status = "disabled";
> + };
> +
> + ldo14_reg: LDO14 {
> + regulator-name = "VABB2_1.95V";
> + regulator-min-microvolt = <1950000>;
> + regulator-max-microvolt = <1950000>;
> + regulator-always-on;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + ldo15_reg: LDO15 {
> + regulator-name = "VHSIC_1.0V";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + ldo16_reg: LDO16 {
> + regulator-name = "VHSIC_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + ldo17_reg: LDO17 {
> + status = "disabled";
> + };
> +
> + ldo18_reg: LDO18 {
> + regulator-name = "CAM_ISP_SENSOR_IO_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> +
> + ldo19_reg: LDO19 {
> + regulator-name = "VT_CAM_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> +
> + ldo20_reg: LDO20 {
> + regulator-name = "VDDQ_PRE_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> +
> + ldo21_reg: LDO21 {
> + regulator-name = "VTF_2.8V";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + maxim,ena-gpios = <&gpy2 0 GPIO_ACTIVE_HIGH>;
> + };
> +
> + ldo22_reg: LDO22 {
> + regulator-name = "VMEM_VDD_2.8V";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
> + };
> +
> + ldo23_reg: LDO23 {
> + regulator-name = "TSP_AVDD_3.3V";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + };
> +
> + ldo24_reg: LDO24 {
> + regulator-name = "TSP_VDD_1.8V";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> +
> + ldo25_reg: LDO25 {
> + status = "disabled";
> + };
> +
> + ldo26_reg: LDO26 {
> + regulator-name = "MOTOR_VCC_3.0V";
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3000000>;
> + };
> +
> + buck1_reg: BUCK1 {
> + regulator-name = "vdd_mif";
> + regulator-min-microvolt = <850000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + buck2_reg: BUCK2 {
> + regulator-name = "vdd_arm";
> + regulator-min-microvolt = <850000>;
> + regulator-max-microvolt = <1500000>;
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-state-mem {
> + regulator-on-in-suspend;
> + };
> + };
> +
> + buck3_reg: BUCK3 {
> + regulator-name = "vdd_int";
> + regulator-min-microvolt = <850000>;
> + regulator-max-microvolt = <1150000>;
> + regulator-always-on;
> + regulator-boot-on;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + buck4_reg: BUCK4 {
> + regulator-name = "vdd_g3d";
> + regulator-min-microvolt = <850000>;
> + regulator-max-microvolt = <1150000>;
> + regulator-boot-on;
> + regulator-state-mem {
> + regulator-off-in-suspend;
> + };
> + };
> +
> + buck5_reg: BUCK5 {
> + regulator-name = "VMEM_1.2V_AP";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-always-on;
> + };
> +
> + buck6_reg: BUCK6 {
> + regulator-name = "VCC_SUB_1.35V";
> + regulator-min-microvolt = <1350000>;
> + regulator-max-microvolt = <1350000>;
> + regulator-always-on;
> + };
> +
> + buck7_reg: BUCK7 {
> + regulator-name = "VCC_SUB_2.0V";
> + regulator-min-microvolt = <2000000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-always-on;
> + };
> +
> + buck8_reg: BUCK8 {
> + regulator-name = "VMEM_VDDF_3.0V";
> + regulator-min-microvolt = <2850000>;
> + regulator-max-microvolt = <2850000>;
> + maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
> + };
> +
> + buck9_reg: BUCK9 {
> + regulator-name = "CAM_ISP_CORE_1.2V";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1200000>;
> + };
> + };
> + };
> +};
> +
> +&i2c_8 {
> + status = "okay";
> +};
> +
> +&i2s0 {
> + pinctrl-0 = <&i2s0_bus>;
> + pinctrl-names = "default";
> + status = "okay";
> +};
> +
> +&mixer {
> + status = "okay";
> +};
> +
> +&mshc_0 {
> + broken-cd;
> + non-removable;
> + card-detect-delay = <200>;
> + vmmc-supply = <&ldo22_reg>;
> + clock-frequency = <400000000>;
> + samsung,dw-mshc-ciu-div = <0>;
> + samsung,dw-mshc-sdr-timing = <2 3>;
> + samsung,dw-mshc-ddr-timing = <1 2>;
> + pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
> + pinctrl-names = "default";
> + status = "okay";
> + bus-width = <8>;
> + cap-mmc-highspeed;
> +};
> +
> +&pmu_system_controller {
> + assigned-clocks = <&pmu_system_controller 0>;
> + assigned-clock-parents = <&clock CLK_XUSBXTI>;
> +};
> +
> +&pinctrl_0 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&sleep0>;
> +
> + mhl_int: mhl-int {
> + samsung,pins = "gpf3-5";
> + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> + };
> +
> + i2c_mhl_bus: i2c-mhl-bus {
> + samsung,pins = "gpf0-4", "gpf0-6";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> + samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> + };
> +
> + sleep0: sleep-states {
> + PIN_SLP(gpa0-0, INPUT, NONE);
> + PIN_SLP(gpa0-1, OUT0, NONE);
> + PIN_SLP(gpa0-2, INPUT, NONE);
> + PIN_SLP(gpa0-3, INPUT, UP);
> + PIN_SLP(gpa0-4, INPUT, NONE);
> + PIN_SLP(gpa0-5, INPUT, DOWN);
> + PIN_SLP(gpa0-6, INPUT, DOWN);
> + PIN_SLP(gpa0-7, INPUT, UP);
> +
> + PIN_SLP(gpa1-0, INPUT, DOWN);
> + PIN_SLP(gpa1-1, INPUT, DOWN);
> + PIN_SLP(gpa1-2, INPUT, DOWN);
> + PIN_SLP(gpa1-3, INPUT, DOWN);
> + PIN_SLP(gpa1-4, INPUT, DOWN);
> + PIN_SLP(gpa1-5, INPUT, DOWN);
> +
> + PIN_SLP(gpb-0, INPUT, NONE);
> + PIN_SLP(gpb-1, INPUT, NONE);
> + PIN_SLP(gpb-2, INPUT, NONE);
> + PIN_SLP(gpb-3, INPUT, NONE);
> + PIN_SLP(gpb-4, INPUT, DOWN);
> + PIN_SLP(gpb-5, INPUT, UP);
> + PIN_SLP(gpb-6, INPUT, DOWN);
> + PIN_SLP(gpb-7, INPUT, DOWN);
> +
> + PIN_SLP(gpc0-0, INPUT, DOWN);
> + PIN_SLP(gpc0-1, INPUT, DOWN);
> + PIN_SLP(gpc0-2, INPUT, DOWN);
> + PIN_SLP(gpc0-3, INPUT, DOWN);
> + PIN_SLP(gpc0-4, INPUT, DOWN);
> +
> + PIN_SLP(gpc1-0, INPUT, NONE);
> + PIN_SLP(gpc1-1, PREV, NONE);
> + PIN_SLP(gpc1-2, INPUT, NONE);
> + PIN_SLP(gpc1-3, INPUT, NONE);
> + PIN_SLP(gpc1-4, INPUT, NONE);
> +
> + PIN_SLP(gpd0-0, INPUT, DOWN);
> + PIN_SLP(gpd0-1, INPUT, DOWN);
> + PIN_SLP(gpd0-2, INPUT, NONE);
> + PIN_SLP(gpd0-3, INPUT, NONE);
> +
> + PIN_SLP(gpd1-0, INPUT, DOWN);
> + PIN_SLP(gpd1-1, INPUT, DOWN);
> + PIN_SLP(gpd1-2, INPUT, NONE);
> + PIN_SLP(gpd1-3, INPUT, NONE);
> +
> + PIN_SLP(gpf0-0, INPUT, NONE);
> + PIN_SLP(gpf0-1, INPUT, NONE);
> + PIN_SLP(gpf0-2, INPUT, DOWN);
> + PIN_SLP(gpf0-3, INPUT, DOWN);
> + PIN_SLP(gpf0-4, INPUT, NONE);
> + PIN_SLP(gpf0-5, INPUT, DOWN);
> + PIN_SLP(gpf0-6, INPUT, NONE);
> + PIN_SLP(gpf0-7, INPUT, DOWN);
> +
> + PIN_SLP(gpf1-0, INPUT, DOWN);
> + PIN_SLP(gpf1-1, INPUT, DOWN);
> + PIN_SLP(gpf1-2, INPUT, DOWN);
> + PIN_SLP(gpf1-3, INPUT, DOWN);
> + PIN_SLP(gpf1-4, INPUT, NONE);
> + PIN_SLP(gpf1-5, INPUT, NONE);
> + PIN_SLP(gpf1-6, INPUT, DOWN);
> + PIN_SLP(gpf1-7, PREV, NONE);
> +
> + PIN_SLP(gpf2-0, PREV, NONE);
> + PIN_SLP(gpf2-1, INPUT, DOWN);
> + PIN_SLP(gpf2-2, INPUT, DOWN);
> + PIN_SLP(gpf2-3, INPUT, DOWN);
> + PIN_SLP(gpf2-4, INPUT, DOWN);
> + PIN_SLP(gpf2-5, INPUT, DOWN);
> + PIN_SLP(gpf2-6, INPUT, NONE);
> + PIN_SLP(gpf2-7, INPUT, NONE);
> +
> + PIN_SLP(gpf3-0, INPUT, NONE);
> + PIN_SLP(gpf3-1, PREV, NONE);
> + PIN_SLP(gpf3-2, PREV, NONE);
> + PIN_SLP(gpf3-3, PREV, NONE);
> + PIN_SLP(gpf3-4, OUT1, NONE);
> + PIN_SLP(gpf3-5, INPUT, DOWN);
> +
> + PIN_SLP(gpj0-0, PREV, NONE);
> + PIN_SLP(gpj0-1, PREV, NONE);
> + PIN_SLP(gpj0-2, PREV, NONE);
> + PIN_SLP(gpj0-3, INPUT, DOWN);
> + PIN_SLP(gpj0-4, PREV, NONE);
> + PIN_SLP(gpj0-5, PREV, NONE);
> + PIN_SLP(gpj0-6, INPUT, DOWN);
> + PIN_SLP(gpj0-7, INPUT, DOWN);
> +
> + PIN_SLP(gpj1-0, INPUT, DOWN);
> + PIN_SLP(gpj1-1, PREV, NONE);
> + PIN_SLP(gpj1-2, PREV, NONE);
> + PIN_SLP(gpj1-3, INPUT, DOWN);
> + PIN_SLP(gpj1-4, INPUT, DOWN);
> + };
> +};
> +
> +&pinctrl_1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&sleep1>;
> +
> + hdmi_hpd: hdmi-hpd {
> + samsung,pins = "gpx3-7";
> + samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
> + };
> +
> + sleep1: sleep-states {
> + PIN_SLP(gpk0-0, PREV, NONE);
> + PIN_SLP(gpk0-1, PREV, NONE);
> + PIN_SLP(gpk0-2, OUT0, NONE);
> + PIN_SLP(gpk0-3, PREV, NONE);
> + PIN_SLP(gpk0-4, PREV, NONE);
> + PIN_SLP(gpk0-5, PREV, NONE);
> + PIN_SLP(gpk0-6, PREV, NONE);
> +
> + PIN_SLP(gpk1-0, INPUT, DOWN);
> + PIN_SLP(gpk1-1, INPUT, DOWN);
> + PIN_SLP(gpk1-2, INPUT, DOWN);
> + PIN_SLP(gpk1-3, PREV, NONE);
> + PIN_SLP(gpk1-4, PREV, NONE);
> + PIN_SLP(gpk1-5, PREV, NONE);
> + PIN_SLP(gpk1-6, PREV, NONE);
> +
> + PIN_SLP(gpk2-0, INPUT, DOWN);
> + PIN_SLP(gpk2-1, INPUT, DOWN);
> + PIN_SLP(gpk2-2, INPUT, DOWN);
> + PIN_SLP(gpk2-3, INPUT, DOWN);
> + PIN_SLP(gpk2-4, INPUT, DOWN);
> + PIN_SLP(gpk2-5, INPUT, DOWN);
> + PIN_SLP(gpk2-6, INPUT, DOWN);
> +
> + PIN_SLP(gpk3-0, OUT0, NONE);
> + PIN_SLP(gpk3-1, INPUT, NONE);
> + PIN_SLP(gpk3-2, INPUT, DOWN);
> + PIN_SLP(gpk3-3, INPUT, NONE);
> + PIN_SLP(gpk3-4, INPUT, NONE);
> + PIN_SLP(gpk3-5, INPUT, NONE);
> + PIN_SLP(gpk3-6, INPUT, NONE);
> +
> + PIN_SLP(gpl0-0, INPUT, DOWN);
> + PIN_SLP(gpl0-1, INPUT, DOWN);
> + PIN_SLP(gpl0-2, INPUT, DOWN);
> + PIN_SLP(gpl0-3, INPUT, DOWN);
> + PIN_SLP(gpl0-4, PREV, NONE);
> + PIN_SLP(gpl0-6, PREV, NONE);
> +
> + PIN_SLP(gpl1-0, INPUT, DOWN);
> + PIN_SLP(gpl1-1, INPUT, DOWN);
> + PIN_SLP(gpl2-0, INPUT, DOWN);
> + PIN_SLP(gpl2-1, INPUT, DOWN);
> + PIN_SLP(gpl2-2, INPUT, DOWN);
> + PIN_SLP(gpl2-3, INPUT, DOWN);
> + PIN_SLP(gpl2-4, INPUT, DOWN);
> + PIN_SLP(gpl2-5, INPUT, DOWN);
> + PIN_SLP(gpl2-6, PREV, NONE);
> + PIN_SLP(gpl2-7, INPUT, DOWN);
> +
> + PIN_SLP(gpm0-0, INPUT, DOWN);
> + PIN_SLP(gpm0-1, INPUT, DOWN);
> + PIN_SLP(gpm0-2, INPUT, DOWN);
> + PIN_SLP(gpm0-3, INPUT, DOWN);
> + PIN_SLP(gpm0-4, INPUT, DOWN);
> + PIN_SLP(gpm0-5, INPUT, DOWN);
> + PIN_SLP(gpm0-6, INPUT, DOWN);
> + PIN_SLP(gpm0-7, INPUT, DOWN);
> +
> + PIN_SLP(gpm1-0, INPUT, DOWN);
> + PIN_SLP(gpm1-1, INPUT, DOWN);
> + PIN_SLP(gpm1-2, INPUT, NONE);
> + PIN_SLP(gpm1-3, INPUT, NONE);
> + PIN_SLP(gpm1-4, INPUT, NONE);
> + PIN_SLP(gpm1-5, INPUT, NONE);
> + PIN_SLP(gpm1-6, INPUT, DOWN);
> +
> + PIN_SLP(gpm2-0, INPUT, NONE);
> + PIN_SLP(gpm2-1, INPUT, NONE);
> + PIN_SLP(gpm2-2, INPUT, DOWN);
> + PIN_SLP(gpm2-3, INPUT, DOWN);
> + PIN_SLP(gpm2-4, INPUT, DOWN);
> +
> + PIN_SLP(gpm3-0, PREV, NONE);
> + PIN_SLP(gpm3-1, PREV, NONE);
> + PIN_SLP(gpm3-2, PREV, NONE);
> + PIN_SLP(gpm3-3, OUT1, NONE);
> + PIN_SLP(gpm3-4, INPUT, DOWN);
> + PIN_SLP(gpm3-5, INPUT, DOWN);
> + PIN_SLP(gpm3-6, INPUT, DOWN);
> + PIN_SLP(gpm3-7, INPUT, DOWN);
> +
> + PIN_SLP(gpm4-0, INPUT, DOWN);
> + PIN_SLP(gpm4-1, INPUT, DOWN);
> + PIN_SLP(gpm4-2, INPUT, DOWN);
> + PIN_SLP(gpm4-3, INPUT, DOWN);
> + PIN_SLP(gpm4-4, INPUT, DOWN);
> + PIN_SLP(gpm4-5, INPUT, DOWN);
> + PIN_SLP(gpm4-6, INPUT, DOWN);
> + PIN_SLP(gpm4-7, INPUT, DOWN);
> +
> + PIN_SLP(gpy0-0, INPUT, DOWN);
> + PIN_SLP(gpy0-1, INPUT, DOWN);
> + PIN_SLP(gpy0-2, INPUT, DOWN);
> + PIN_SLP(gpy0-3, INPUT, DOWN);
> + PIN_SLP(gpy0-4, INPUT, DOWN);
> + PIN_SLP(gpy0-5, INPUT, DOWN);
> +
> + PIN_SLP(gpy1-0, INPUT, DOWN);
> + PIN_SLP(gpy1-1, INPUT, DOWN);
> + PIN_SLP(gpy1-2, INPUT, DOWN);
> + PIN_SLP(gpy1-3, INPUT, DOWN);
> +
> + PIN_SLP(gpy2-0, PREV, NONE);
> + PIN_SLP(gpy2-1, INPUT, DOWN);
> + PIN_SLP(gpy2-2, INPUT, NONE);
> + PIN_SLP(gpy2-3, INPUT, NONE);
> + PIN_SLP(gpy2-4, INPUT, NONE);
> + PIN_SLP(gpy2-5, INPUT, NONE);
> +
> + PIN_SLP(gpy3-0, INPUT, DOWN);
> + PIN_SLP(gpy3-1, INPUT, DOWN);
> + PIN_SLP(gpy3-2, INPUT, DOWN);
> + PIN_SLP(gpy3-3, INPUT, DOWN);
> + PIN_SLP(gpy3-4, INPUT, DOWN);
> + PIN_SLP(gpy3-5, INPUT, DOWN);
> + PIN_SLP(gpy3-6, INPUT, DOWN);
> + PIN_SLP(gpy3-7, INPUT, DOWN);
> +
> + PIN_SLP(gpy4-0, INPUT, DOWN);
> + PIN_SLP(gpy4-1, INPUT, DOWN);
> + PIN_SLP(gpy4-2, INPUT, DOWN);
> + PIN_SLP(gpy4-3, INPUT, DOWN);
> + PIN_SLP(gpy4-4, INPUT, DOWN);
> + PIN_SLP(gpy4-5, INPUT, DOWN);
> + PIN_SLP(gpy4-6, INPUT, DOWN);
> + PIN_SLP(gpy4-7, INPUT, DOWN);
> +
> + PIN_SLP(gpy5-0, INPUT, DOWN);
> + PIN_SLP(gpy5-1, INPUT, DOWN);
> + PIN_SLP(gpy5-2, INPUT, DOWN);
> + PIN_SLP(gpy5-3, INPUT, DOWN);
> + PIN_SLP(gpy5-4, INPUT, DOWN);
> + PIN_SLP(gpy5-5, INPUT, DOWN);
> + PIN_SLP(gpy5-6, INPUT, DOWN);
> + PIN_SLP(gpy5-7, INPUT, DOWN);
> +
> + PIN_SLP(gpy6-0, INPUT, DOWN);
> + PIN_SLP(gpy6-1, INPUT, DOWN);
> + PIN_SLP(gpy6-2, INPUT, DOWN);
> + PIN_SLP(gpy6-3, INPUT, DOWN);
> + PIN_SLP(gpy6-4, INPUT, DOWN);
> + PIN_SLP(gpy6-5, INPUT, DOWN);
> + PIN_SLP(gpy6-6, INPUT, DOWN);
> + PIN_SLP(gpy6-7, INPUT, DOWN);
> + };
> +};
> +
> +&pinctrl_2 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&sleep2>;
> +
> + sleep2: sleep-states {
> + PIN_SLP(gpz-0, INPUT, DOWN);
> + PIN_SLP(gpz-1, INPUT, DOWN);
> + PIN_SLP(gpz-2, INPUT, DOWN);
> + PIN_SLP(gpz-3, INPUT, DOWN);
> + PIN_SLP(gpz-4, INPUT, DOWN);
> + PIN_SLP(gpz-5, INPUT, DOWN);
> + PIN_SLP(gpz-6, INPUT, DOWN);
> + };
> +};
> +
> +&pinctrl_3 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&sleep3>;
> +
> + sleep3: sleep-states {
> + PIN_SLP(gpv0-0, INPUT, DOWN);
> + PIN_SLP(gpv0-1, INPUT, DOWN);
> + PIN_SLP(gpv0-2, INPUT, DOWN);
> + PIN_SLP(gpv0-3, INPUT, DOWN);
> + PIN_SLP(gpv0-4, INPUT, DOWN);
> + PIN_SLP(gpv0-5, INPUT, DOWN);
> + PIN_SLP(gpv0-6, INPUT, DOWN);
> + PIN_SLP(gpv0-7, INPUT, DOWN);
> +
> + PIN_SLP(gpv1-0, INPUT, DOWN);
> + PIN_SLP(gpv1-1, INPUT, DOWN);
> + PIN_SLP(gpv1-2, INPUT, DOWN);
> + PIN_SLP(gpv1-3, INPUT, DOWN);
> + PIN_SLP(gpv1-4, INPUT, DOWN);
> + PIN_SLP(gpv1-5, INPUT, DOWN);
> + PIN_SLP(gpv1-6, INPUT, DOWN);
> + PIN_SLP(gpv1-7, INPUT, DOWN);
> +
> + PIN_SLP(gpv2-0, INPUT, DOWN);
> + PIN_SLP(gpv2-1, INPUT, DOWN);
> + PIN_SLP(gpv2-2, INPUT, DOWN);
> + PIN_SLP(gpv2-3, INPUT, DOWN);
> + PIN_SLP(gpv2-4, INPUT, DOWN);
> + PIN_SLP(gpv2-5, INPUT, DOWN);
> + PIN_SLP(gpv2-6, INPUT, DOWN);
> + PIN_SLP(gpv2-7, INPUT, DOWN);
> +
> + PIN_SLP(gpv3-0, INPUT, DOWN);
> + PIN_SLP(gpv3-1, INPUT, DOWN);
> + PIN_SLP(gpv3-2, INPUT, DOWN);
> + PIN_SLP(gpv3-3, INPUT, DOWN);
> + PIN_SLP(gpv3-4, INPUT, DOWN);
> + PIN_SLP(gpv3-5, INPUT, DOWN);
> + PIN_SLP(gpv3-6, INPUT, DOWN);
> + PIN_SLP(gpv3-7, INPUT, DOWN);
> +
> + PIN_SLP(gpv4-0, INPUT, DOWN);
> + };
> +};
> +
> +&pwm {
> + pinctrl-0 = <&pwm0_out>;
> + pinctrl-names = "default";
> + samsung,pwm-outputs = <0>;
> + status = "okay";
> +};
> +
> +&rtc {
> + status = "okay";
> + clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
> + clock-names = "rtc", "rtc_src";
> +};
> +
> +&sdhci_2 {
> + bus-width = <4>;
> + cd-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>;
> + cd-inverted;
> + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
> + pinctrl-names = "default";
> + vmmc-supply = <&ldo21_reg>;
> + status = "okay";
> +};
> +
> +&sdhci_3 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
> +
> + broken-cd;
> +
> + mmc-pwrseq = <&wlan_pwrseq>;
> +
> + bus-width = <4>;
> + status = "okay";
> +
> + brcmf: wifi@1 {
> + reg = <1>;
> + compatible = "brcm,bcm4329-fmac";
> + interrupt-parent = <&gpx2>;
> + interrupts = <5 IRQ_TYPE_NONE>;
> + interrupt-names = "host-wake";
> + };
> +};
> +
> +&serial_0 {
> + status = "okay";
> +};
> +
> +&serial_1 {
> + status = "okay";
> +};
> +
> +&serial_2 {
> + status = "okay";
> +};
> +
> +&serial_3 {
> + status = "okay";
> +};
> +
> +&sleep0 {
> + gpf1-0 {
> + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> + samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> + };
> +};
> +
> +&spi_1 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&spi1_bus>;
> + cs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
> + status = "okay";
> +
> + s5c73m3_spi: s5c73m3@0 {
> + compatible = "samsung,s5c73m3";
> + spi-max-frequency = <50000000>;
> + reg = <0>;
> + controller-data {
> + samsung,spi-feedback-delay = <2>;
> + };
> + };
> +};
> +
> +&tmu {
> + vtmu-supply = <&ldo10_reg>;
> + status = "okay";
> +};
> +
> +&pmu_system_controller {
> + compatible = "samsung,exynos4210-pmu", "syscon", "simple-mfd";
> +
> + reboot-mode {
> + compatible = "syscon-reboot-mode";
> + offset = <0x80c>;
> +
> + mode-normal = <0x12345670>;
> + mode-bootloader = <0x12345671>;
> + mode-download = <0x12345671>;
> + mode-recovery = <0x12345674>;
> + };
> +};
> diff --git a/arch/arm/boot/dts/exynos4412-t0.dts b/arch/arm/boot/dts/exynos4412-t0.dts
> new file mode 100644
> index 000000000000..c49abe857b6f
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos4412-t0.dts
> @@ -0,0 +1,51 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/dts-v1/;
> +#include "exynos4412-midas.dtsi"
> +
> +/ {
> + compatible = "samsung,t0", "samsung,midas", "samsung,exynos4412", "samsung,exynos4";
> + model = "Samsung T0 (GT-N7100, GT-N7105) based on Exynos4412";
> +
> + memory@40000000 {
> + device_type = "memory";
> + reg = <0x40000000 0x80000000>;
> + };
> +
Unnecessary blank line.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards
[not found] ` <CAJKOXPfkQvo09r6WpZG-E+EgUk+p32dVycxWi6L07kHzv1EsWQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2017-12-14 9:04 ` Marek Szyprowski
0 siblings, 0 replies; 6+ messages in thread
From: Marek Szyprowski @ 2017-12-14 9:04 UTC (permalink / raw)
To: Krzysztof Kozlowski, Simon Shields
Cc: linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA, Kukjin Kim,
devicetree-u79uwXL29TY76Z2rM5mHXA,
Bartłomiej Żołnierkiewicz
Hi Krzysztof,
On 2017-12-14 09:48, Krzysztof Kozlowski wrote:
> Hi Simon,
>
> Thanks for new boards!
>
> +Cc Marek, Bartlomiej,
>
> On Tue, Dec 12, 2017 at 3:08 PM, Simon Shields <simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org> wrote:
>> "midas" is the codename for a family of smartphones released by Samsung
>> Mobile. It includes the Galaxy S3 (GT-I9300/I9305) and the Galaxy
>> Note 2 (GT-N7100/N7105). The boards largely have the same peripherals:
>> the main differences are touchscreen, display panel and cellular modem.
>>
>> Signed-off-by: Simon Shields <simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
>> ---
>> arch/arm/boot/dts/exynos4412-galaxy-s3.dtsi | 144 +++
>> arch/arm/boot/dts/exynos4412-m0.dts | 14 +
>> arch/arm/boot/dts/exynos4412-m3.dts | 19 +
>> arch/arm/boot/dts/exynos4412-midas.dtsi | 1291 +++++++++++++++++++++++++++
> M0 is essentially Trats2. You are duplicating here almost entire
> Trats2 which means:
> 1. A lot of duplicated code thus it will require more maintenance to
> keep DTS synced,
> 2. It is very difficult to spot the changes and possible errors
> between Trats2 and Midas DTSI/M0.
>
> Please make a generic family of devices based on Midas, including
> Trats2. You might make it in steps for easier review:
> 1. Split common Trats2 part,
> 2. Add new boards.
Krzysztof is right. Trats2 should also be based on midas.dtsi (it is very
similar to gt-i9300, the difference in mainly in the casing). We also used
gt-i9300 with modified bootloader with Trats2 dts.
It should not be hard to adapt it for common midas.dtsi base (hind: use
scripts/dtc/dtx_diff for checking if the final dts is correct).
> ...
Best regards
--
Marek Szyprowski, PhD
Samsung R&D Institute Poland
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-12-14 9:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-12 14:08 [PATCH 0/3] Add Exynos4412-based midas boards support Simon Shields
2017-12-12 14:08 ` [PATCH 1/3] dt-bindings: samsung: document bindings for Midas family boards Simon Shields
[not found] ` <20171212140815.28257-1-simon-WP75azK+jQYgsBAKwltoeQ@public.gmane.org>
2017-12-12 14:08 ` [PATCH 2/3] ARM: dts: add Samsung's exynos4412-based midas boards Simon Shields
2017-12-14 8:48 ` Krzysztof Kozlowski
[not found] ` <CAJKOXPfkQvo09r6WpZG-E+EgUk+p32dVycxWi6L07kHzv1EsWQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-12-14 9:04 ` Marek Szyprowski
2017-12-12 14:08 ` [PATCH 3/3] ARM: exynos: extend cpuidle support to " Simon Shields
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).