diff -ruN a/arch/arm/boot/dts/kirkwood-6282.dtsi b/arch/arm/boot/dts/kirkwood-6282.dtsi --- a/arch/arm/boot/dts/kirkwood-6282.dtsi 2012-12-21 20:19:00.000000000 -0500 +++ b/arch/arm/boot/dts/kirkwood-6282.dtsi 2012-12-25 14:07:54.000000000 -0500 @@ -5,6 +5,10 @@ compatible = "marvell,88f6282-pinctrl"; reg = <0x10000 0x20>; + pmx_nand: pmx-nand { + marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3","mpp4", "mpp5", "mpp18", "mpp19"; + marvell,function = "nand"; + }; pmx_sata0: pmx-sata0 { marvell,pins = "mpp5", "mpp21", "mpp23"; marvell,function = "sata0"; @@ -21,11 +25,14 @@ marvell,pins = "mpp8", "mpp9"; marvell,function = "twsi0"; }; + pmx_twsi1: pmx-twsi1 { + marvell,pins = "mpp36", "mpp37"; + marvell,function = "twsi1"; + }; pmx_uart0: pmx-uart0 { marvell,pins = "mpp10", "mpp11"; marvell,function = "uart0"; }; - pmx_uart1: pmx-uart1 { marvell,pins = "mpp13", "mpp14"; marvell,function = "uart1"; @@ -39,6 +46,7 @@ #size-cells = <0>; interrupts = <32>; clock-frequency = <100000>; + clocks = <&gate_clk 7>; status = "disabled"; }; }; diff -ruN a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts --- a/arch/arm/boot/dts/kirkwood-topkick.dts 2012-12-21 20:19:00.000000000 -0500 +++ b/arch/arm/boot/dts/kirkwood-topkick.dts 2012-12-25 14:00:09.000000000 -0500 @@ -82,4 +82,21 @@ gpios = <&gpio1 16 1>; }; }; + regulators { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <0>; + + sata0_power: regulator@1 { + compatible = "regulator-fixed"; + reg = <1>; + regulator-name = "SATA0 Power"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + gpio = <&gpio1 4 0>; + }; + }; }; diff -ruN a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi --- a/arch/arm/boot/dts/kirkwood.dtsi 2012-12-21 20:19:00.000000000 -0500 +++ b/arch/arm/boot/dts/kirkwood.dtsi 2012-12-25 14:01:42.000000000 -0500 @@ -144,6 +144,7 @@ compatible = "marvell,orion-ehci"; reg = <0x50000 0x1000>; interrupts = <19>; + clocks = <&gate_clk 3>; status = "okay"; }; diff -ruN a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c --- a/arch/arm/mach-kirkwood/board-dt.c 2012-12-21 20:19:00.000000000 -0500 +++ b/arch/arm/mach-kirkwood/board-dt.c 2012-12-25 13:58:18.000000000 -0500 @@ -67,6 +67,9 @@ orion_clkdev_add(NULL, "mv643xx_eth_port.1", of_clk_get_from_provider(&clkspec)); + clkspec.args[0] = CGC_BIT_SDIO; + orion_clkdev_add(NULL, "mvsdio", + of_clk_get_from_provider(&clkspec)); } static void __init kirkwood_of_clk_init(void) diff -ruN a/arch/arm/mach-kirkwood/board-usi_topkick.c b/arch/arm/mach-kirkwood/board-usi_topkick.c --- a/arch/arm/mach-kirkwood/board-usi_topkick.c 2012-12-21 20:19:00.000000000 -0500 +++ b/arch/arm/mach-kirkwood/board-usi_topkick.c 2012-12-25 14:01:01.000000000 -0500 @@ -64,8 +64,6 @@ 0 }; -#define TOPKICK_SATA0_PWR_ENABLE 36 - void __init usi_topkick_init(void) { /* @@ -73,9 +71,6 @@ */ kirkwood_mpp_conf(topkick_mpp_config); - /* SATA0 power enable */ - gpio_set_value(TOPKICK_SATA0_PWR_ENABLE, 1); - kirkwood_ge00_init(&topkick_ge00_data); kirkwood_sdio_init(&topkick_mvsdio_data); }