Эх сурвалжийг харах

Merge tag 'samsung-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/dt

Merge "Samsung DT updates for v4.1" from Kukjin Kim:

- for exynos3250
  : add assigned clock parents for CMU nodes

- for exynos4412-odroid
  : add eMMC reset line

- for exynos5250
  : fixed typo for interrupt-cells

- for exynos5250-snow
  : define stdout-path property
  : represent bridge and panel connection
  : enable wifi power-on and add cap-sdio-irq to wifi mmc node

- for exynos5250-spring
  : define stdout-path property

- for exynos5420
  : fixed typo for interrupt-cells
  : add async-bridge clocks for gsc and disp1 PDs

- for exynos5420 boards
  : Mux XMMCnDATA[0] pad correctly

- for exynos5420-odroidxu3
  : add eMMC reset line

- for Peach boards
  : add HS400 support and define stdout-path property
  : add mclk entry and add WiFi module support
  : represent bridge and panel connection

* tag 'samsung-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
  ARM: dts: Fixed typo interrupt-cells for exynos5420 and exynos5250
  ARM: dts: Add HS400 support for exynos5420 and exynos5800
  ARM: dts: add async-bridge clocks to gsc power domain for exynos5420
  ARM: dts: add async-bridge clocks to disp1 power domain for exynos5420
  dt-bindings: add asynchronous bridge clock for exynos
  ARM: dts: Define stdout-path property for exynos5250-spring
  ARM: dts: Define stdout-path property for exynos5250-snow
  ARM: dts: Define stdout-path property for Peach boards
  ARM: dts: Add assigned clock parents to CMU node for exynos3250
  ARM: dts: Add mclk entry for Peach boards
  ARM: dts: Add WiFi module support for Peach boards
  ARM: dts: Mux XMMCnDATA[0] pad correctly for Exynos5420 boards
  ARM: dts: add eMMC reset line for exynos5422-odroidxu3
  ARM: dts: add eMMC reset line for exynos4412-odroid-common
  ARM: dts: represent bridge and panel connection for exynos5420-peach-pit
  ARM: dts: represent bridge and panel connection for exynos5250-snow
  ARM: dts: Add cap-sdio-irq to wifi mmc node for exynos5250-snow
  ARM: dts: Enable wifi power-on for exynos5250-snow

Signed-off-by: Olof Johansson <olof@lixom.net>
Olof Johansson 10 жил өмнө
parent
commit
fb0d305dcb

+ 3 - 0
Documentation/devicetree/bindings/arm/exynos/power_domain.txt

@@ -22,6 +22,9 @@ Optional Properties:
 	- pclkN, clkN: Pairs of parent of input clock and input clock to the
 	- pclkN, clkN: Pairs of parent of input clock and input clock to the
 		devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
 		devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
 		are supported currently.
 		are supported currently.
+	- asbN: Clocks required by asynchronous bridges (ASB) present in
+		the power domain. These clock should be enabled during power
+		domain on/off operations.
 - power-domains: phandle pointing to the parent power domain, for more details
 - power-domains: phandle pointing to the parent power domain, for more details
 		 see Documentation/devicetree/bindings/power/power_domain.txt
 		 see Documentation/devicetree/bindings/power/power_domain.txt
 
 

+ 4 - 0
arch/arm/boot/dts/exynos3250.dtsi

@@ -173,6 +173,10 @@
 			compatible = "samsung,exynos3250-cmu";
 			compatible = "samsung,exynos3250-cmu";
 			reg = <0x10030000 0x20000>;
 			reg = <0x10030000 0x20000>;
 			#clock-cells = <1>;
 			#clock-cells = <1>;
+			assigned-clocks = <&cmu CLK_MOUT_ACLK_400_MCUISP_SUB>,
+					  <&cmu CLK_MOUT_ACLK_266_SUB>;
+			assigned-clock-parents = <&cmu CLK_FIN_PLL>,
+						 <&cmu CLK_FIN_PLL>;
 		};
 		};
 
 
 		cmu_dmc: clock-controller@105C0000 {
 		cmu_dmc: clock-controller@105C0000 {

+ 14 - 0
arch/arm/boot/dts/exynos4412-odroid-common.dtsi

@@ -75,10 +75,18 @@
 		};
 		};
 	};
 	};
 
 
+	emmc_pwrseq: pwrseq {
+		pinctrl-0 = <&sd1_cd>;
+		pinctrl-names = "default";
+		compatible = "mmc-pwrseq-emmc";
+		reset-gpios = <&gpk1 2 1>;
+	};
+
 	mmc@12550000 {
 	mmc@12550000 {
 		pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
 		pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 		vmmc-supply = <&ldo20_reg &buck8_reg>;
 		vmmc-supply = <&ldo20_reg &buck8_reg>;
+		mmc-pwrseq = <&emmc_pwrseq>;
 		status = "okay";
 		status = "okay";
 
 
 		num-slots = <1>;
 		num-slots = <1>;
@@ -472,6 +480,12 @@
 	};
 	};
 };
 };
 
 
+/* RSTN signal for eMMC */
+&sd1_cd {
+	samsung,pin-pud = <0>;
+	samsung,pin-drv = <0>;
+};
+
 &pinctrl_1 {
 &pinctrl_1 {
 	gpio_power_key: power_key {
 	gpio_power_key: power_key {
 		samsung,pins = "gpx1-3";
 		samsung,pins = "gpx1-3";

+ 54 - 3
arch/arm/boot/dts/exynos5250-snow.dts

@@ -29,6 +29,7 @@
 
 
 	chosen {
 	chosen {
 		bootargs = "console=tty1";
 		bootargs = "console=tty1";
+		stdout-path = "serial3:115200n8";
 	};
 	};
 
 
 	gpio-keys {
 	gpio-keys {
@@ -183,7 +184,20 @@
 			powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
 			powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
 			reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
 			reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
 			edid-emulation = <5>;
 			edid-emulation = <5>;
-			panel = <&panel>;
+
+			ports {
+				port@0 {
+					bridge_out: endpoint {
+						remote-endpoint = <&panel_in>;
+					};
+				};
+
+				port@1 {
+					bridge_in: endpoint {
+						remote-endpoint = <&dp_out>;
+					};
+				};
+			};
 		};
 		};
 	};
 	};
 
 
@@ -228,6 +242,20 @@
 		compatible = "auo,b116xw03";
 		compatible = "auo,b116xw03";
 		power-supply = <&fet6>;
 		power-supply = <&fet6>;
 		backlight = <&backlight>;
 		backlight = <&backlight>;
+
+		port {
+			panel_in: endpoint {
+				remote-endpoint = <&bridge_out>;
+			};
+		};
+	};
+
+	mmc3_pwrseq: mmc3_pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		reset-gpios = <&gpx0 2 GPIO_ACTIVE_LOW>, /* WIFI_RSTn */
+			      <&gpx0 1 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+		clocks = <&max77686 MAX77686_CLK_PMIC>;
+		clock-names = "ext_clock";
 	};
 	};
 };
 };
 
 
@@ -242,7 +270,14 @@
 	samsung,link-rate = <0x0a>;
 	samsung,link-rate = <0x0a>;
 	samsung,lane-count = <2>;
 	samsung,lane-count = <2>;
 	samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
 	samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
-	bridge = <&ptn3460>;
+
+	ports {
+		port@0 {
+			dp_out: endpoint {
+				remote-endpoint = <&bridge_in>;
+			};
+		};
+	};
 };
 };
 
 
 &ehci {
 &ehci {
@@ -531,17 +566,33 @@
 	status = "okay";
 	status = "okay";
 	num-slots = <1>;
 	num-slots = <1>;
 	broken-cd;
 	broken-cd;
+	cap-sdio-irq;
 	card-detect-delay = <200>;
 	card-detect-delay = <200>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
+	pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4 &wifi_en &wifi_rst>;
 	bus-width = <4>;
 	bus-width = <4>;
 	cap-sd-highspeed;
 	cap-sd-highspeed;
+	mmc-pwrseq = <&mmc3_pwrseq>;
 };
 };
 
 
 &pinctrl_0 {
 &pinctrl_0 {
+	wifi_en: wifi-en {
+		samsung,pins = "gpx0-1";
+		samsung,pin-function = <1>;
+		samsung,pin-pud = <0>;
+		samsung,pin-drv = <0>;
+	};
+
+	wifi_rst: wifi-rst {
+		samsung,pins = "gpx0-2";
+		samsung,pin-function = <1>;
+		samsung,pin-pud = <0>;
+		samsung,pin-drv = <0>;
+	};
+
 	power_key_irq: power-key-irq {
 	power_key_irq: power-key-irq {
 		samsung,pins = "gpx1-3";
 		samsung,pins = "gpx1-3";
 		samsung,pin-function = <0xf>;
 		samsung,pin-function = <0xf>;

+ 1 - 0
arch/arm/boot/dts/exynos5250-spring.dts

@@ -25,6 +25,7 @@
 
 
 	chosen {
 	chosen {
 		bootargs = "console=tty1";
 		bootargs = "console=tty1";
+		stdout-path = "serial3:115200n8";
 	};
 	};
 
 
 	gpio-keys {
 	gpio-keys {

+ 1 - 1
arch/arm/boot/dts/exynos5250.dtsi

@@ -143,7 +143,7 @@
 		compatible = "samsung,exynos4210-mct";
 		compatible = "samsung,exynos4210-mct";
 		reg = <0x101C0000 0x800>;
 		reg = <0x101C0000 0x800>;
 		interrupt-controller;
 		interrupt-controller;
-		#interrups-cells = <2>;
+		#interrupt-cells = <2>;
 		interrupt-parent = <&mct_map>;
 		interrupt-parent = <&mct_map>;
 		interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
 		interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
 			     <4 0>, <5 0>;
 			     <4 0>, <5 0>;

+ 2 - 2
arch/arm/boot/dts/exynos5420-arndale-octa.dts

@@ -55,7 +55,7 @@
 		samsung,dw-mshc-sdr-timing = <0 4>;
 		samsung,dw-mshc-sdr-timing = <0 4>;
 		samsung,dw-mshc-ddr-timing = <0 2>;
 		samsung,dw-mshc-ddr-timing = <0 2>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
-		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
+		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
 		vmmc-supply = <&ldo10_reg>;
 		vmmc-supply = <&ldo10_reg>;
 		bus-width = <8>;
 		bus-width = <8>;
 		cap-mmc-highspeed;
 		cap-mmc-highspeed;
@@ -68,7 +68,7 @@
 		samsung,dw-mshc-sdr-timing = <2 3>;
 		samsung,dw-mshc-sdr-timing = <2 3>;
 		samsung,dw-mshc-ddr-timing = <1 2>;
 		samsung,dw-mshc-ddr-timing = <1 2>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
-		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
+		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
 		vmmc-supply = <&ldo19_reg>;
 		vmmc-supply = <&ldo19_reg>;
 		vqmmc-supply = <&ldo13_reg>;
 		vqmmc-supply = <&ldo13_reg>;
 		bus-width = <4>;
 		bus-width = <4>;

+ 95 - 4
arch/arm/boot/dts/exynos5420-peach-pit.dts

@@ -43,6 +43,10 @@
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 	};
 	};
 
 
+	chosen {
+		stdout-path = "serial3:115200n8";
+	};
+
 	fixed-rate-clocks {
 	fixed-rate-clocks {
 		oscclk {
 		oscclk {
 			compatible = "samsung,exynos5420-oscclk";
 			compatible = "samsung,exynos5420-oscclk";
@@ -118,6 +122,19 @@
 		compatible = "auo,b116xw03";
 		compatible = "auo,b116xw03";
 		power-supply = <&tps65090_fet6>;
 		power-supply = <&tps65090_fet6>;
 		backlight = <&backlight>;
 		backlight = <&backlight>;
+
+		port {
+			panel_in: endpoint {
+				remote-endpoint = <&bridge_out>;
+			};
+		};
+	};
+
+	mmc1_pwrseq: mmc1_pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		reset-gpios = <&gpx0 0 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+		clocks = <&max77802 MAX77802_CLK_32K_CP>;
+		clock-names = "ext_clock";
 	};
 	};
 };
 };
 
 
@@ -137,7 +154,14 @@
 	samsung,link-rate = <0x06>;
 	samsung,link-rate = <0x06>;
 	samsung,lane-count = <2>;
 	samsung,lane-count = <2>;
 	samsung,hpd-gpio = <&gpx2 6 0>;
 	samsung,hpd-gpio = <&gpx2 6 0>;
-	bridge = <&ps8625>;
+
+	ports {
+		port@0 {
+			dp_out: endpoint {
+				remote-endpoint = <&bridge_in>;
+			};
+		};
+	};
 };
 };
 
 
 &fimd {
 &fimd {
@@ -581,6 +605,8 @@
 		interrupt-parent = <&gpx0>;
 		interrupt-parent = <&gpx0>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 		pinctrl-0 = <&max98090_irq>;
 		pinctrl-0 = <&max98090_irq>;
+		clocks = <&pmu_system_controller 0>;
+		clock-names = "mclk";
 	};
 	};
 
 
 	light-sensor@44 {
 	light-sensor@44 {
@@ -595,8 +621,22 @@
 		sleep-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>;
 		sleep-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>;
 		reset-gpios = <&gpy7 7 GPIO_ACTIVE_HIGH>;
 		reset-gpios = <&gpy7 7 GPIO_ACTIVE_HIGH>;
 		lane-count = <2>;
 		lane-count = <2>;
-		panel = <&panel>;
 		use-external-pwm;
 		use-external-pwm;
+
+		ports {
+			port@0 {
+				bridge_out: endpoint {
+					remote-endpoint = <&panel_in>;
+				};
+			};
+
+			port@1 {
+				bridge_in: endpoint {
+					remote-endpoint = <&dp_out>;
+				};
+			};
+		};
+
 	};
 	};
 };
 };
 
 
@@ -659,11 +699,32 @@
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
+	samsung,dw-mshc-hs400-timing = <0 2>;
+	samsung,read-strobe-delay = <90>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
+	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
 	bus-width = <8>;
 	bus-width = <8>;
 };
 };
 
 
+&mmc_1 {
+	status = "okay";
+	num-slots = <1>;
+	broken-cd;
+	cap-sdio-irq;
+	card-detect-delay = <200>;
+	clock-frequency = <400000000>;
+	samsung,dw-mshc-ciu-div = <1>;
+	samsung,dw-mshc-sdr-timing = <0 1>;
+	samsung,dw-mshc-ddr-timing = <0 2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_int>, <&sd1_bus1>,
+		    <&sd1_bus4>, <&sd1_bus8>, <&wifi_en>;
+	bus-width = <4>;
+	cap-sd-highspeed;
+	mmc-pwrseq = <&mmc1_pwrseq>;
+	vqmmc-supply = <&buck10_reg>;
+};
+
 &mmc_2 {
 &mmc_2 {
 	status = "okay";
 	status = "okay";
 	num-slots = <1>;
 	num-slots = <1>;
@@ -674,7 +735,7 @@
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
+	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
 	bus-width = <4>;
 	bus-width = <4>;
 };
 };
 
 
@@ -683,6 +744,13 @@
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 	pinctrl-0 = <&mask_tpm_reset>;
 	pinctrl-0 = <&mask_tpm_reset>;
 
 
+	wifi_en: wifi-en {
+		samsung,pins = "gpx0-0";
+		samsung,pin-function = <1>;
+		samsung,pin-pud = <0>;
+		samsung,pin-drv = <0>;
+	};
+
 	max98090_irq: max98090-irq {
 	max98090_irq: max98090-irq {
 		samsung,pins = "gpx0-2";
 		samsung,pins = "gpx0-2";
 		samsung,pin-function = <0>;
 		samsung,pin-function = <0>;
@@ -770,6 +838,29 @@
 	};
 	};
 };
 };
 
 
+&pinctrl_1 {
+	/* Adjust WiFi drive strengths lower for EMI */
+	sd1_clk: sd1-clk {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_cmd: sd1-cmd {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus1: sd1-bus-width1 {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus4: sd1-bus-width4 {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus8: sd1-bus-width8 {
+		samsung,pin-drv = <2>;
+	};
+};
+
 &pinctrl_2 {
 &pinctrl_2 {
 	pmic_dvs_2: pmic-dvs-2 {
 	pmic_dvs_2: pmic-dvs-2 {
 		samsung,pins = "gpj4-2";
 		samsung,pins = "gpj4-2";

+ 7 - 0
arch/arm/boot/dts/exynos5420-pinctrl.dtsi

@@ -201,6 +201,13 @@
 			samsung,pin-drv = <3>;
 			samsung,pin-drv = <3>;
 		};
 		};
 
 
+		sd0_rclk: sd0-rclk {
+			samsung,pins = "gpc0-7";
+			samsung,pin-function = <2>;
+			samsung,pin-pud = <1>;
+			samsung,pin-drv = <3>;
+		};
+
 		sd1_cmd: sd1-cmd {
 		sd1_cmd: sd1-cmd {
 			samsung,pins = "gpc1-1";
 			samsung,pins = "gpc1-1";
 			samsung,pin-function = <2>;
 			samsung,pin-function = <2>;

+ 5 - 2
arch/arm/boot/dts/exynos5420-smdk5420.dts

@@ -80,8 +80,11 @@
 		samsung,dw-mshc-ciu-div = <3>;
 		samsung,dw-mshc-ciu-div = <3>;
 		samsung,dw-mshc-sdr-timing = <0 4>;
 		samsung,dw-mshc-sdr-timing = <0 4>;
 		samsung,dw-mshc-ddr-timing = <0 2>;
 		samsung,dw-mshc-ddr-timing = <0 2>;
+		samsung,dw-mshc-hs400-timing = <0 2>;
+		samsung,read-strobe-delay = <90>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
-		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
+		pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8
+			     &sd0_rclk>;
 		bus-width = <8>;
 		bus-width = <8>;
 		cap-mmc-highspeed;
 		cap-mmc-highspeed;
 	};
 	};
@@ -93,7 +96,7 @@
 		samsung,dw-mshc-sdr-timing = <2 3>;
 		samsung,dw-mshc-sdr-timing = <2 3>;
 		samsung,dw-mshc-ddr-timing = <1 2>;
 		samsung,dw-mshc-ddr-timing = <1 2>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
-		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
+		pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
 		bus-width = <4>;
 		bus-width = <4>;
 		cap-sd-highspeed;
 		cap-sd-highspeed;
 	};
 	};

+ 7 - 3
arch/arm/boot/dts/exynos5420.dtsi

@@ -221,7 +221,7 @@
 		compatible = "samsung,exynos4210-mct";
 		compatible = "samsung,exynos4210-mct";
 		reg = <0x101C0000 0x800>;
 		reg = <0x101C0000 0x800>;
 		interrupt-controller;
 		interrupt-controller;
-		#interrups-cells = <1>;
+		#interrupt-cells = <1>;
 		interrupt-parent = <&mct_map>;
 		interrupt-parent = <&mct_map>;
 		interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
 		interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
 				<8>, <9>, <10>, <11>;
 				<8>, <9>, <10>, <11>;
@@ -251,6 +251,8 @@
 		compatible = "samsung,exynos4210-pd";
 		compatible = "samsung,exynos4210-pd";
 		reg = <0x10044000 0x20>;
 		reg = <0x10044000 0x20>;
 		#power-domain-cells = <0>;
 		#power-domain-cells = <0>;
+		clocks = <&clock CLK_GSCL0>, <&clock CLK_GSCL1>;
+		clock-names = "asb0", "asb1";
 	};
 	};
 
 
 	isp_pd: power-domain@10044020 {
 	isp_pd: power-domain@10044020 {
@@ -283,9 +285,11 @@
 			 <&clock CLK_MOUT_SW_ACLK300>,
 			 <&clock CLK_MOUT_SW_ACLK300>,
 			 <&clock CLK_MOUT_USER_ACLK300_DISP1>,
 			 <&clock CLK_MOUT_USER_ACLK300_DISP1>,
 			 <&clock CLK_MOUT_SW_ACLK400>,
 			 <&clock CLK_MOUT_SW_ACLK400>,
-			 <&clock CLK_MOUT_USER_ACLK400_DISP1>;
+			 <&clock CLK_MOUT_USER_ACLK400_DISP1>,
+			 <&clock CLK_FIMD1>, <&clock CLK_MIXER>;
 		clock-names = "oscclk", "pclk0", "clk0",
 		clock-names = "oscclk", "pclk0", "clk0",
-			      "pclk1", "clk1", "pclk2", "clk2";
+			      "pclk1", "clk1", "pclk2", "clk2",
+			      "asb0", "asb1";
 	};
 	};
 
 
 	pinctrl_0: pinctrl@13400000 {
 	pinctrl_0: pinctrl@13400000 {

+ 19 - 2
arch/arm/boot/dts/exynos5422-odroidxu3.dts

@@ -264,6 +264,13 @@
 		};
 		};
 	};
 	};
 
 
+	emmc_pwrseq: pwrseq {
+		pinctrl-0 = <&emmc_nrst_pin>;
+		pinctrl-names = "default";
+		compatible = "mmc-pwrseq-emmc";
+		reset-gpios = <&gpd1 0 1>;
+	};
+
 	i2c_2: i2c@12C80000 {
 	i2c_2: i2c@12C80000 {
 		samsung,i2c-sda-delay = <100>;
 		samsung,i2c-sda-delay = <100>;
 		samsung,i2c-max-bus-freq = <66000>;
 		samsung,i2c-max-bus-freq = <66000>;
@@ -298,13 +305,14 @@
 
 
 &mmc_0 {
 &mmc_0 {
 	status = "okay";
 	status = "okay";
+	mmc-pwrseq = <&emmc_pwrseq>;
 	broken-cd;
 	broken-cd;
 	card-detect-delay = <200>;
 	card-detect-delay = <200>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
+	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
 	bus-width = <8>;
 	bus-width = <8>;
 	cap-mmc-highspeed;
 	cap-mmc-highspeed;
 };
 };
@@ -316,7 +324,7 @@
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
+	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
 	bus-width = <4>;
 	bus-width = <4>;
 	cap-sd-highspeed;
 	cap-sd-highspeed;
 };
 };
@@ -330,6 +338,15 @@
 	};
 	};
 };
 };
 
 
+&pinctrl_1 {
+	emmc_nrst_pin: emmc-nrst {
+		samsung,pins = "gpd1-0";
+		samsung,pin-function = <0>;
+		samsung,pin-pud = <0>;
+		samsung,pin-drv = <0>;
+	};
+};
+
 &usbdrd_dwc3_0 {
 &usbdrd_dwc3_0 {
 	dr_mode = "host";
 	dr_mode = "host";
 };
 };

+ 68 - 3
arch/arm/boot/dts/exynos5800-peach-pi.dts

@@ -42,6 +42,10 @@
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 	};
 	};
 
 
+	chosen {
+		stdout-path = "serial3:115200n8";
+	};
+
 	fixed-rate-clocks {
 	fixed-rate-clocks {
 		oscclk {
 		oscclk {
 			compatible = "samsung,exynos5420-oscclk";
 			compatible = "samsung,exynos5420-oscclk";
@@ -119,6 +123,13 @@
 		power-supply = <&tps65090_fet6>;
 		power-supply = <&tps65090_fet6>;
 		backlight = <&backlight>;
 		backlight = <&backlight>;
 	};
 	};
+
+	mmc1_pwrseq: mmc1_pwrseq {
+		compatible = "mmc-pwrseq-simple";
+		reset-gpios = <&gpx0 0 GPIO_ACTIVE_LOW>; /* WIFI_EN */
+		clocks = <&max77802 MAX77802_CLK_32K_CP>;
+		clock-names = "ext_clock";
+	};
 };
 };
 
 
 &adc {
 &adc {
@@ -581,6 +592,8 @@
 		interrupt-parent = <&gpx0>;
 		interrupt-parent = <&gpx0>;
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 		pinctrl-0 = <&max98091_irq>;
 		pinctrl-0 = <&max98091_irq>;
+		clocks = <&pmu_system_controller 0>;
+		clock-names = "mclk";
 	};
 	};
 
 
 	light-sensor@44 {
 	light-sensor@44 {
@@ -641,18 +654,40 @@
 	num-slots = <1>;
 	num-slots = <1>;
 	broken-cd;
 	broken-cd;
 	mmc-hs200-1_8v;
 	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
 	cap-mmc-highspeed;
 	cap-mmc-highspeed;
 	non-removable;
 	non-removable;
 	card-detect-delay = <200>;
 	card-detect-delay = <200>;
-	clock-frequency = <400000000>;
+	clock-frequency = <800000000>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-ciu-div = <3>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-sdr-timing = <0 4>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
 	samsung,dw-mshc-ddr-timing = <0 2>;
+	samsung,dw-mshc-hs400-timing = <0 2>;
+	samsung,read-strobe-delay = <90>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
+	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
 	bus-width = <8>;
 	bus-width = <8>;
 };
 };
 
 
+&mmc_1 {
+	status = "okay";
+	num-slots = <1>;
+	broken-cd;
+	cap-sdio-irq;
+	card-detect-delay = <200>;
+	clock-frequency = <400000000>;
+	samsung,dw-mshc-ciu-div = <1>;
+	samsung,dw-mshc-sdr-timing = <0 1>;
+	samsung,dw-mshc-ddr-timing = <0 2>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_int>, <&sd1_bus1>,
+		    <&sd1_bus4>, <&sd1_bus8>, <&wifi_en>;
+	bus-width = <4>;
+	cap-sd-highspeed;
+	mmc-pwrseq = <&mmc1_pwrseq>;
+	vqmmc-supply = <&buck10_reg>;
+};
+
 &mmc_2 {
 &mmc_2 {
 	status = "okay";
 	status = "okay";
 	num-slots = <1>;
 	num-slots = <1>;
@@ -663,7 +698,7 @@
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-sdr-timing = <2 3>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	samsung,dw-mshc-ddr-timing = <1 2>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
-	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
+	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
 	bus-width = <4>;
 	bus-width = <4>;
 };
 };
 
 
@@ -672,6 +707,13 @@
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 	pinctrl-0 = <&mask_tpm_reset>;
 	pinctrl-0 = <&mask_tpm_reset>;
 
 
+	wifi_en: wifi-en {
+		samsung,pins = "gpx0-0";
+		samsung,pin-function = <1>;
+		samsung,pin-pud = <0>;
+		samsung,pin-drv = <0>;
+	};
+
 	max98091_irq: max98091-irq {
 	max98091_irq: max98091-irq {
 		samsung,pins = "gpx0-2";
 		samsung,pins = "gpx0-2";
 		samsung,pin-function = <0>;
 		samsung,pin-function = <0>;
@@ -759,6 +801,29 @@
 	};
 	};
 };
 };
 
 
+&pinctrl_1 {
+	/* Adjust WiFi drive strengths lower for EMI */
+	sd1_clk: sd1-clk {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_cmd: sd1-cmd {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus1: sd1-bus-width1 {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus4: sd1-bus-width4 {
+		samsung,pin-drv = <2>;
+	};
+
+	sd1_bus8: sd1-bus-width8 {
+		samsung,pin-drv = <2>;
+	};
+};
+
 &pinctrl_2 {
 &pinctrl_2 {
 	pmic_dvs_2: pmic-dvs-2 {
 	pmic_dvs_2: pmic-dvs-2 {
 		samsung,pins = "gpj4-2";
 		samsung,pins = "gpj4-2";