[17/17] ARM: dts: exynos: Add DTS file for exynos5260-rexred
diff mbox series

Message ID 20190128230700.7325-18-stuart.menefy@mathembedded.com
State Changes Requested
Headers show
Series
  • Resuscitate Exynos 5260 support
Related show

Commit Message

Stuart Menefy Jan. 28, 2019, 11:07 p.m. UTC
Add support for the RexNos REX-RED board which is based on the
Exynos5260.

Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
---
 .../bindings/arm/samsung/samsung-boards.txt        |   2 +
 .../devicetree/bindings/vendor-prefixes.txt        |   1 +
 arch/arm/boot/dts/Makefile                         |   1 +
 arch/arm/boot/dts/exynos5260-rexred.dts            | 396 +++++++++++++++++++++
 4 files changed, 400 insertions(+)
 create mode 100644 arch/arm/boot/dts/exynos5260-rexred.dts

Comments

Krzysztof Kozlowski March 25, 2019, 5:26 p.m. UTC | #1
On Mon, Jan 28, 2019 at 11:07:00PM +0000, Stuart Menefy wrote:
> Add support for the RexNos REX-RED board which is based on the
> Exynos5260.
> 
> Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
> ---
>  .../bindings/arm/samsung/samsung-boards.txt        |   2 +
>  .../devicetree/bindings/vendor-prefixes.txt        |   1 +
>  arch/arm/boot/dts/Makefile                         |   1 +
>  arch/arm/boot/dts/exynos5260-rexred.dts            | 396 +++++++++++++++++++++
>  4 files changed, 400 insertions(+)
>  create mode 100644 arch/arm/boot/dts/exynos5260-rexred.dts
>

Hi Stuart,

I thought you are going to resend remaining patches because you already
started to send v2 of some of them. If not, let me do a quick review
here so it will not get lost.

> diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
> index 56021bf2a916..f7dc2f9e3e57 100644
> --- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
> +++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
> @@ -70,6 +70,8 @@ Required root node properties:
>  				    Octa board.
>  	- "insignal,origen"       - for Exynos4210-based Insignal Origen board.
>  	- "insignal,origen4412"   - for Exynos4412-based Insignal Origen board.
> +  * Rexnos
> +	- "rexnos,rexred"	  - for Exynos5260-based Rexnos RexRed board.
>  
>  
>  Optional nodes:
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
> index 389508584f48..0666385ec11e 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.txt
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
> @@ -328,6 +328,7 @@ raydium	Raydium Semiconductor Corp.
>  rda	Unisoc Communications, Inc.
>  realtek Realtek Semiconductor Corp.
>  renesas	Renesas Electronics Corporation
> +rexnos	REXNOS Co., Ltd
>  richtek	Richtek Technology Corporation
>  ricoh	Ricoh Co. Ltd.
>  rikomagic	Rikomagic Tech Corp. Ltd
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index bd40148a15b2..2c6190e0834b 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -191,6 +191,7 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \
>  	exynos5250-snow.dtb \
>  	exynos5250-snow-rev5.dtb \
>  	exynos5250-spring.dtb \
> +	exynos5260-rexred.dtb \
>  	exynos5260-xyref5260.dtb \
>  	exynos5410-odroidxu.dtb \
>  	exynos5410-smdk5410.dtb \
> diff --git a/arch/arm/boot/dts/exynos5260-rexred.dts b/arch/arm/boot/dts/exynos5260-rexred.dts
> new file mode 100644
> index 000000000000..46187ad0c696
> --- /dev/null
> +++ b/arch/arm/boot/dts/exynos5260-rexred.dts
> @@ -0,0 +1,396 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * RexNos REX-RED Exynos5260 board device tree source
> + *
> + * Copyright (c) 2018 Garrison Technology Limited
> + * derived from exynos5260-xyref5260.dts which was:
> + * Copyright (c) 2013 Samsung Electronics Co., Ltd.
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include "exynos5260.dtsi"
> +
> +/ {
> +	model = "Rexnos RexRed board based on EXYNOS5260";
> +	compatible = "rexnos,rexred", "samsung,exynos5260", "samsung,exynos5";
> +
> +	memory@20000000 {
> +		device_type = "memory";
> +		reg = <0x20000000 0x80000000>;
> +	};
> +
> +	chosen {
> +		bootargs = "console=ttySAC2,115200";

Please use the stdout-path string (with baudrate, like in Arndale).

> +	};
> +
> +	gpio_keys {
> +		compatible = "gpio-keys";
> +
> +		wakeup {
> +			label = "SW1";
> +			gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_WAKEUP>;
> +			wakeup-source;
> +		};
> +
> +		home {
> +			label = "S1";
> +			gpios = <&gpx0 3 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_HOME>;
> +			wakeup-source;

All keys below do not look like typical wakeup sources.

> +		};
> +
> +		back {
> +			label = "S2";
> +			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_BACK>;
> +			wakeup-source;
> +		};
> +
> +		menu {
> +			label = "S3";
> +			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_MENU>;
> +			wakeup-source;
> +		};
> +
> +		up {
> +			label = "S4";
> +			gpios = <&gpx2 4 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_UP>;
> +			wakeup-source;
> +		};
> +
> +		down {
> +			label = "S5";
> +			gpios = <&gpx2 5 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_DOWN>;
> +			wakeup-source;
> +		};
> +	};
> +
> +	fin_pll: xxti {
> +		compatible = "fixed-clock";
> +		clock-frequency = <24000000>;
> +		clock-output-names = "fin_pll";
> +		#clock-cells = <0>;
> +	};
> +
> +	firmware@02073000 {

No leading zeros. Compile DTS with W=1, so it will print you the
warnings.

> +		compatible = "samsung,secure-firmware";
> +		reg = <0x02073000 0x1000>;
> +	};
> +
> +	xrtcxti: xrtcxti {
> +		compatible = "fixed-clock";

This should go from PMIC.

> +		clock-frequency = <32768>;
> +		clock-output-names = "xrtcxti";
> +		#clock-cells = <0>;
> +	};
> +};
> +
> +&pinctrl_0 {
> +	s2mpa01_irq: s2mpa01-irq {
> +		samsung,pins = "gpx0-2";
> +		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> +		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> +		samaung,pin-drv = <EXYNOS5260_PIN_DRV_LV1>;
> +	};
> +};
> +
> +&uart0 {
> +	status = "okay";
> +};
> +
> +&uart1 {
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	status = "okay";
> +};
> +
> +&uart3 {
> +	status = "okay";
> +};
> +
> +&hsi2c_0 {

Please put all the label-nodes (after root {}) in alphabetical order.

> +	status = "okay";
> +	samsung,polling-mode;

Not used binding.

> +	clock-frequency = <100000>;
> +
> +	s2mpa01_pmic@66 {

Node name - just pmic because it must be a generic name for class of
devices.

> +		compatible = "samsung,s2mpa01-pmic";
> +		reg = <0x66>;
> +		interrupt-parent = <&gpx0>;
> +		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&s2mpa01_irq>;
> +
> +		regulators {
> +			buck1_reg: BUCK1 {
> +				regulator-name = "vdd_mif range";

The name, just "vdd_mif". Space is unusual.

> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1400000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;

This does not look like proper value for ramp delay. Please check if it
is really used.

> +			};
> +
> +			buck2_reg: BUCK2 {
> +				regulator-name = "vdd_eagle";
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1400000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck3_reg: BUCK3 {
> +				regulator-name = "vdd_int range";

Name - ditto... and in other places as well.

> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1200000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck4_reg: BUCK4 {
> +				regulator-name = "vdd_g3d range";
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1400000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck5_reg: BUCK5 {
> +				regulator-name = "must-be-on-buck5";

If you have datasheet - please give it proper name. If not, just "buck5"
and write a comment that it just has to be on.

> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck6_reg: BUCK6 {
> +				regulator-name = "vdd_kfc";
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1400000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck7_reg: BUCK7 {
> +				regulator-name = "vdd_disp range";
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <1200000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <1000>;
> +			};
> +
> +			buck8_reg: BUCK8 {
> +				regulator-name = "must-be-on-buck8";

Ditto name... and in other places as well.

Provide also constraints (voltage) or document why they have to be
missing.

> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			buck9_reg: BUCK9 {
> +				regulator-name = "must-be-on-buck9";
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-ramp-delay = <12000>;
> +			};
> +
> +			ldo1_reg: LDO1 {
> +				regulator-name = "must-be-on-ldo1";
> +				regulator-min-microvolt = <1000000>;
> +				regulator-max-microvolt = <1000000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo2_reg: LDO2 {
> +				regulator-name = "vddq_mmc2";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo3_reg: LDO3 {
> +				regulator-name = "vcc_1.8v_AP";

Don't mix lower case and uppercase, keep lower. The same in other
places.

> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo4_reg: LDO4 {
> +				regulator-name = "must-be-on-ldo4";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo5_reg: LDO5 {
> +				regulator-name = "must-be-on-ldo5";
> +				regulator-min-microvolt = <1000000>;
> +				regulator-max-microvolt = <1000000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo6_reg: LDO6 {
> +				regulator-name = "vcc_1.0v_MIPI";
> +				regulator-min-microvolt = <1000000>;
> +				regulator-max-microvolt = <1000000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo7_reg: LDO7 {
> +				regulator-name = "vcc_1.8v_MIPI";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo10_reg: LDO10 {
> +				regulator-name = "vddq_mmc01";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo11_reg: LDO11 {
> +				regulator-name = "vcc_3.3v_LCD";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo13_reg: LDO13 {
> +				regulator-name = "vmmc2";
> +				regulator-min-microvolt = <2800000>;
> +				regulator-max-microvolt = <2800000>;
> +			};
> +
> +			ldo14_reg: LDO14 {
> +				regulator-name = "Main Camera IO (1.8V)";

Unify the name style with others.

> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo15_reg: LDO15 {
> +				regulator-name = "Camera Sensor (2.8V)";
> +				regulator-min-microvolt = <2800000>;
> +				regulator-max-microvolt = <2800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo16_reg: LDO16 {
> +				regulator-name = "Main Camera AF (2.8V)";
> +				regulator-min-microvolt = <2800000>;
> +				regulator-max-microvolt = <2800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo17_reg: LDO17 {
> +				regulator-name = "VT Camera Core (1.8V)";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo18_reg: LDO18 {
> +				regulator-name = "tsp_avdd_3.3v";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo21_reg: LDO21 {
> +				regulator-name = "usb_vdd_3.0";
> +				regulator-min-microvolt = <3000000>;
> +				regulator-max-microvolt = <3000000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo22_reg: LDO22 {
> +				regulator-name = "usb_vdd_3.3";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo19_reg: LDO19 {
> +				regulator-name = "vcc_3.0_evt1";
> +				regulator-min-microvolt = <3000000>;
> +				regulator-max-microvolt = <3000000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo20_reg: LDO20 {
> +				regulator-name = "vcc_1.8_evt1";
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo24_reg: LDO24 {
> +				regulator-name = "tsp_io range";
> +				regulator-min-microvolt = <2800000>;
> +				regulator-max-microvolt = <2800000>;
> +				regulator-always-on;
> +			};
> +
> +			ldo25_reg: LDO25 {
> +				regulator-name = "vcc_1.2v_cam";
> +				regulator-min-microvolt = <1200000>;
> +				regulator-max-microvolt = <1200000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +			};
> +
> +			ldo26_reg: LDO26 {
> +				regulator-name = "vcc_1.2v_usb range";
> +				regulator-min-microvolt = <1200000>;
> +				regulator-max-microvolt = <1200000>;
> +				regulator-always-on;
> +				regulator-boot-on;
> +			};
> +		};
> +	};
> +};
> +
> +&mmc_0 {
> +	status = "okay";
> +	non-removable;
> +	cap-mmc-highspeed;
> +	supports-hs200-mode; /* 200 MHz */

Comment not needed.

> +	card-detect-delay = <200>;
> +	samsung,dw-mshc-ciu-div = <3>;
> +	samsung,dw-mshc-sdr-timing = <0 4>;
> +	samsung,dw-mshc-ddr-timing = <0 2>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&sd0_rdqs &sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
> +	bus-width = <8>;
> +	vqmmc-supply = <&ldo10_reg>;

Please add vmmc-supply. Probably you also need mmc-hs200-1_8v.

> +};
> +
> +/* mmc1 is connected to J1 for the SDIO WiFi */
> +
> +&mmc_2 {
> +	status = "okay";
> +	cap-sd-highspeed;

Optionally you might want to check sd-uhs-sdr50, sd-uhs-ddr50 and few
others. However this might require User Manual.

Best regards,
Krzysztof

> +	card-detect-delay = <200>;
> +	samsung,dw-mshc-ciu-div = <3>;
> +	samsung,dw-mshc-sdr-timing = <2 3>;
> +	samsung,dw-mshc-ddr-timing = <1 2>;
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
> +	bus-width = <4>;
> +	disable-wp;
> +	vmmc-supply = <&ldo13_reg>;
> +	vqmmc-supply = <&ldo2_reg>;
> +};
> -- 
> 2.13.6
>

Patch
diff mbox series

diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
index 56021bf2a916..f7dc2f9e3e57 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt
@@ -70,6 +70,8 @@  Required root node properties:
 				    Octa board.
 	- "insignal,origen"       - for Exynos4210-based Insignal Origen board.
 	- "insignal,origen4412"   - for Exynos4412-based Insignal Origen board.
+  * Rexnos
+	- "rexnos,rexred"	  - for Exynos5260-based Rexnos RexRed board.
 
 
 Optional nodes:
diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389508584f48..0666385ec11e 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -328,6 +328,7 @@  raydium	Raydium Semiconductor Corp.
 rda	Unisoc Communications, Inc.
 realtek Realtek Semiconductor Corp.
 renesas	Renesas Electronics Corporation
+rexnos	REXNOS Co., Ltd
 richtek	Richtek Technology Corporation
 ricoh	Ricoh Co. Ltd.
 rikomagic	Rikomagic Tech Corp. Ltd
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index bd40148a15b2..2c6190e0834b 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -191,6 +191,7 @@  dtb-$(CONFIG_ARCH_EXYNOS5) += \
 	exynos5250-snow.dtb \
 	exynos5250-snow-rev5.dtb \
 	exynos5250-spring.dtb \
+	exynos5260-rexred.dtb \
 	exynos5260-xyref5260.dtb \
 	exynos5410-odroidxu.dtb \
 	exynos5410-smdk5410.dtb \
diff --git a/arch/arm/boot/dts/exynos5260-rexred.dts b/arch/arm/boot/dts/exynos5260-rexred.dts
new file mode 100644
index 000000000000..46187ad0c696
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5260-rexred.dts
@@ -0,0 +1,396 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * RexNos REX-RED Exynos5260 board device tree source
+ *
+ * Copyright (c) 2018 Garrison Technology Limited
+ * derived from exynos5260-xyref5260.dts which was:
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "exynos5260.dtsi"
+
+/ {
+	model = "Rexnos RexRed board based on EXYNOS5260";
+	compatible = "rexnos,rexred", "samsung,exynos5260", "samsung,exynos5";
+
+	memory@20000000 {
+		device_type = "memory";
+		reg = <0x20000000 0x80000000>;
+	};
+
+	chosen {
+		bootargs = "console=ttySAC2,115200";
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+
+		wakeup {
+			label = "SW1";
+			gpios = <&gpx2 7 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WAKEUP>;
+			wakeup-source;
+		};
+
+		home {
+			label = "S1";
+			gpios = <&gpx0 3 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_HOME>;
+			wakeup-source;
+		};
+
+		back {
+			label = "S2";
+			gpios = <&gpx2 0 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_BACK>;
+			wakeup-source;
+		};
+
+		menu {
+			label = "S3";
+			gpios = <&gpx2 1 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_MENU>;
+			wakeup-source;
+		};
+
+		up {
+			label = "S4";
+			gpios = <&gpx2 4 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_UP>;
+			wakeup-source;
+		};
+
+		down {
+			label = "S5";
+			gpios = <&gpx2 5 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_DOWN>;
+			wakeup-source;
+		};
+	};
+
+	fin_pll: xxti {
+		compatible = "fixed-clock";
+		clock-frequency = <24000000>;
+		clock-output-names = "fin_pll";
+		#clock-cells = <0>;
+	};
+
+	firmware@02073000 {
+		compatible = "samsung,secure-firmware";
+		reg = <0x02073000 0x1000>;
+	};
+
+	xrtcxti: xrtcxti {
+		compatible = "fixed-clock";
+		clock-frequency = <32768>;
+		clock-output-names = "xrtcxti";
+		#clock-cells = <0>;
+	};
+};
+
+&pinctrl_0 {
+	s2mpa01_irq: s2mpa01-irq {
+		samsung,pins = "gpx0-2";
+		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
+		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+		samaung,pin-drv = <EXYNOS5260_PIN_DRV_LV1>;
+	};
+};
+
+&uart0 {
+	status = "okay";
+};
+
+&uart1 {
+	status = "okay";
+};
+
+&uart2 {
+	status = "okay";
+};
+
+&uart3 {
+	status = "okay";
+};
+
+&hsi2c_0 {
+	status = "okay";
+	samsung,polling-mode;
+	clock-frequency = <100000>;
+
+	s2mpa01_pmic@66 {
+		compatible = "samsung,s2mpa01-pmic";
+		reg = <0x66>;
+		interrupt-parent = <&gpx0>;
+		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&s2mpa01_irq>;
+
+		regulators {
+			buck1_reg: BUCK1 {
+				regulator-name = "vdd_mif range";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck2_reg: BUCK2 {
+				regulator-name = "vdd_eagle";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck3_reg: BUCK3 {
+				regulator-name = "vdd_int range";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck4_reg: BUCK4 {
+				regulator-name = "vdd_g3d range";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck5_reg: BUCK5 {
+				regulator-name = "must-be-on-buck5";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck6_reg: BUCK6 {
+				regulator-name = "vdd_kfc";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1400000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck7_reg: BUCK7 {
+				regulator-name = "vdd_disp range";
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <1000>;
+			};
+
+			buck8_reg: BUCK8 {
+				regulator-name = "must-be-on-buck8";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			buck9_reg: BUCK9 {
+				regulator-name = "must-be-on-buck9";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-ramp-delay = <12000>;
+			};
+
+			ldo1_reg: LDO1 {
+				regulator-name = "must-be-on-ldo1";
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <1000000>;
+				regulator-always-on;
+			};
+
+			ldo2_reg: LDO2 {
+				regulator-name = "vddq_mmc2";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-always-on;
+			};
+
+			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 = "must-be-on-ldo4";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo5_reg: LDO5 {
+				regulator-name = "must-be-on-ldo5";
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <1000000>;
+				regulator-always-on;
+			};
+
+			ldo6_reg: LDO6 {
+				regulator-name = "vcc_1.0v_MIPI";
+				regulator-min-microvolt = <1000000>;
+				regulator-max-microvolt = <1000000>;
+				regulator-always-on;
+			};
+
+			ldo7_reg: LDO7 {
+				regulator-name = "vcc_1.8v_MIPI";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo10_reg: LDO10 {
+				regulator-name = "vddq_mmc01";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo11_reg: LDO11 {
+				regulator-name = "vcc_3.3v_LCD";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-always-on;
+			};
+
+			ldo13_reg: LDO13 {
+				regulator-name = "vmmc2";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+			};
+
+			ldo14_reg: LDO14 {
+				regulator-name = "Main Camera IO (1.8V)";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo15_reg: LDO15 {
+				regulator-name = "Camera Sensor (2.8V)";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+			};
+
+			ldo16_reg: LDO16 {
+				regulator-name = "Main Camera AF (2.8V)";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+			};
+
+			ldo17_reg: LDO17 {
+				regulator-name = "VT Camera Core (1.8V)";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo18_reg: LDO18 {
+				regulator-name = "tsp_avdd_3.3v";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-always-on;
+			};
+
+			ldo21_reg: LDO21 {
+				regulator-name = "usb_vdd_3.0";
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-always-on;
+			};
+
+			ldo22_reg: LDO22 {
+				regulator-name = "usb_vdd_3.3";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-always-on;
+			};
+
+			ldo19_reg: LDO19 {
+				regulator-name = "vcc_3.0_evt1";
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-always-on;
+			};
+
+			ldo20_reg: LDO20 {
+				regulator-name = "vcc_1.8_evt1";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+			};
+
+			ldo24_reg: LDO24 {
+				regulator-name = "tsp_io range";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+			};
+
+			ldo25_reg: LDO25 {
+				regulator-name = "vcc_1.2v_cam";
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+
+			ldo26_reg: LDO26 {
+				regulator-name = "vcc_1.2v_usb range";
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+		};
+	};
+};
+
+&mmc_0 {
+	status = "okay";
+	non-removable;
+	cap-mmc-highspeed;
+	supports-hs200-mode; /* 200 MHz */
+	card-detect-delay = <200>;
+	samsung,dw-mshc-ciu-div = <3>;
+	samsung,dw-mshc-sdr-timing = <0 4>;
+	samsung,dw-mshc-ddr-timing = <0 2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sd0_rdqs &sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
+	bus-width = <8>;
+	vqmmc-supply = <&ldo10_reg>;
+};
+
+/* mmc1 is connected to J1 for the SDIO WiFi */
+
+&mmc_2 {
+	status = "okay";
+	cap-sd-highspeed;
+	card-detect-delay = <200>;
+	samsung,dw-mshc-ciu-div = <3>;
+	samsung,dw-mshc-sdr-timing = <2 3>;
+	samsung,dw-mshc-ddr-timing = <1 2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
+	bus-width = <4>;
+	disable-wp;
+	vmmc-supply = <&ldo13_reg>;
+	vqmmc-supply = <&ldo2_reg>;
+};