diff options
Diffstat (limited to 'target/linux/sunxi')
111 files changed, 686 insertions, 2737 deletions
diff --git a/target/linux/sunxi/Makefile b/target/linux/sunxi/Makefile index 84dc334..4f59f3e 100644 --- a/target/linux/sunxi/Makefile +++ b/target/linux/sunxi/Makefile @@ -15,7 +15,7 @@ CPU_TYPE:=cortex-a8 CPU_SUBTYPE:=vfpv3 MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu> -LINUX_VERSION:=3.14.16 +LINUX_VERSION:=3.14.18 KERNELNAME:="zImage dtbs" DEFAULT_PACKAGES += uboot-envtools uboot-sunxi kmod-eeprom-sunxi kmod-wdt-sunxi diff --git a/target/linux/sunxi/patches-3.14/100-dt-sun4i-add-missing-serial-aliases.patch b/target/linux/sunxi/patches-3.14/100-dt-sun4i-add-missing-serial-aliases.patch index 5048f85..caa5d15 100644 --- a/target/linux/sunxi/patches-3.14/100-dt-sun4i-add-missing-serial-aliases.patch +++ b/target/linux/sunxi/patches-3.14/100-dt-sun4i-add-missing-serial-aliases.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index d4d2763..64fc716 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -19,6 +19,12 @@ @@ -28,6 +26,3 @@ index d4d2763..64fc716 100644 }; cpus { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/101-dt-sun6i-add-missing-serial-aliases.patch b/target/linux/sunxi/patches-3.14/101-dt-sun6i-add-missing-serial-aliases.patch index e2ba3c1..dd0f741 100644 --- a/target/linux/sunxi/patches-3.14/101-dt-sun6i-add-missing-serial-aliases.patch +++ b/target/linux/sunxi/patches-3.14/101-dt-sun6i-add-missing-serial-aliases.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun6i-a31.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index 5256ad9..092bf97 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -16,6 +16,16 @@ @@ -32,6 +30,3 @@ index 5256ad9..092bf97 100644 cpus { #address-cells = <1>; #size-cells = <0>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/102-dt-sun7i-add-missing-serial-aliases.patch b/target/linux/sunxi/patches-3.14/102-dt-sun7i-add-missing-serial-aliases.patch index a979036..80daddc 100644 --- a/target/linux/sunxi/patches-3.14/102-dt-sun7i-add-missing-serial-aliases.patch +++ b/target/linux/sunxi/patches-3.14/102-dt-sun7i-add-missing-serial-aliases.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 6f25cf5..0b6e610 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -18,6 +18,14 @@ @@ -30,6 +28,3 @@ index 6f25cf5..0b6e610 100644 }; cpus { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/103-dt-sun5i-add-missing-serial-aliases.patch b/target/linux/sunxi/patches-3.14/103-dt-sun5i-add-missing-serial-aliases.patch index c262dfe..cd991dd 100644 --- a/target/linux/sunxi/patches-3.14/103-dt-sun5i-add-missing-serial-aliases.patch +++ b/target/linux/sunxi/patches-3.14/103-dt-sun5i-add-missing-serial-aliases.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun5i-a13.dtsi | 5 +++++ 1 file changed, 5 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index c463fd7..d8207b0 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -16,6 +16,11 @@ @@ -27,6 +25,3 @@ index c463fd7..d8207b0 100644 cpus { #address-cells = <1>; #size-cells = <0>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/104-dt-sun7i-add-pinmuxing-for-uart2.patch b/target/linux/sunxi/patches-3.14/104-dt-sun7i-add-pinmuxing-for-uart2.patch index cd34328..84baf39 100644 --- a/target/linux/sunxi/patches-3.14/104-dt-sun7i-add-pinmuxing-for-uart2.patch +++ b/target/linux/sunxi/patches-3.14/104-dt-sun7i-add-pinmuxing-for-uart2.patch @@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 0b6e610..2139e0f 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -381,6 +381,13 @@ @@ -30,6 +28,3 @@ index 0b6e610..2139e0f 100644 uart6_pins_a: uart6@0 { allwinner,pins = "PI12", "PI13"; allwinner,function = "uart6"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/105-dt-sun4i-add-linksprite-pcduino.patch b/target/linux/sunxi/patches-3.14/105-dt-sun4i-add-linksprite-pcduino.patch index 713c922..5463819 100644 --- a/target/linux/sunxi/patches-3.14/105-dt-sun4i-add-linksprite-pcduino.patch +++ b/target/linux/sunxi/patches-3.14/105-dt-sun4i-add-linksprite-pcduino.patch @@ -15,8 +15,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> 2 files changed, 49 insertions(+) create mode 100644 arch/arm/boot/dts/sun4i-a10-pcduino.dts -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 0320303..8e1d636 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -284,6 +284,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ @@ -27,9 +25,6 @@ index 0320303..8e1d636 100644 sun5i-a10s-olinuxino-micro.dtb \ sun5i-a13-olinuxino.dtb \ sun5i-a13-olinuxino-micro.dtb \ -diff --git a/arch/arm/boot/dts/sun4i-a10-pcduino.dts b/arch/arm/boot/dts/sun4i-a10-pcduino.dts -new file mode 100644 -index 0000000..f5692a3 --- /dev/null +++ b/arch/arm/boot/dts/sun4i-a10-pcduino.dts @@ -0,0 +1,48 @@ @@ -81,6 +76,3 @@ index 0000000..f5692a3 + }; + }; +}; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/106-dt-sun7i-add-arch-timer-node.patch b/target/linux/sunxi/patches-3.14/106-dt-sun7i-add-arch-timer-node.patch index 4ded898..386f042 100644 --- a/target/linux/sunxi/patches-3.14/106-dt-sun7i-add-arch-timer-node.patch +++ b/target/linux/sunxi/patches-3.14/106-dt-sun7i-add-arch-timer-node.patch @@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 822a816..911d4e4 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -49,6 +49,14 @@ @@ -31,6 +29,3 @@ index 822a816..911d4e4 100644 clocks { #address-cells = <1>; #size-cells = <1>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/107-dt-sun4i-add-a10-lime.patch b/target/linux/sunxi/patches-3.14/107-dt-sun4i-add-a10-lime.patch index c6f9edb..d50f362 100644 --- a/target/linux/sunxi/patches-3.14/107-dt-sun4i-add-a10-lime.patch +++ b/target/linux/sunxi/patches-3.14/107-dt-sun4i-add-a10-lime.patch @@ -15,8 +15,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> 2 files changed, 112 insertions(+) create mode 100644 arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 8e1d636..66d6df3 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -284,6 +284,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ @@ -27,9 +25,6 @@ index 8e1d636..66d6df3 100644 sun4i-a10-pcduino.dtb \ sun5i-a10s-olinuxino-micro.dtb \ sun5i-a13-olinuxino.dtb \ -diff --git a/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts -new file mode 100644 -index 0000000..66cf0c7 --- /dev/null +++ b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts @@ -0,0 +1,111 @@ @@ -144,6 +139,3 @@ index 0000000..66cf0c7 + status = "okay"; + }; +}; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/110-dt-sun6i-add-pll-and-spi-modclocks.patch b/target/linux/sunxi/patches-3.14/110-dt-sun6i-add-pll-and-spi-modclocks.patch index 75c0bd8..7d8c2cf 100644 --- a/target/linux/sunxi/patches-3.14/110-dt-sun6i-add-pll-and-spi-modclocks.patch +++ b/target/linux/sunxi/patches-3.14/110-dt-sun6i-add-pll-and-spi-modclocks.patch @@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun6i-a31.dtsi | 46 ++++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index 092bf97..93d7bb6 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -83,16 +83,12 @@ @@ -77,6 +75,3 @@ index 092bf97..93d7bb6 100644 }; soc@01c00000 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/111-dt-sun4i-rename-clocknodes.patch b/target/linux/sunxi/patches-3.14/111-dt-sun4i-rename-clocknodes.patch index 51280b5..9846d5c 100644 --- a/target/linux/sunxi/patches-3.14/111-dt-sun4i-rename-clocknodes.patch +++ b/target/linux/sunxi/patches-3.14/111-dt-sun4i-rename-clocknodes.patch @@ -13,8 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 64fc716..132b261 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -58,34 +58,38 @@ @@ -134,6 +132,3 @@ index 64fc716..132b261 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-apb1-gates-clk"; reg = <0x01c2006c 0x4>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/112-dt-sun5i-rename-clocknodes.patch b/target/linux/sunxi/patches-3.14/112-dt-sun5i-rename-clocknodes.patch index 4ed1f2d..d3e65a5 100644 --- a/target/linux/sunxi/patches-3.14/112-dt-sun5i-rename-clocknodes.patch +++ b/target/linux/sunxi/patches-3.14/112-dt-sun5i-rename-clocknodes.patch @@ -14,11 +14,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun5i-a13.dtsi | 30 ++++++++++++++++++++---------- 2 files changed, 40 insertions(+), 20 deletions(-) -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index 848baaa..99a5120 100644 --- a/arch/arm/boot/dts/sun5i-a10s.dtsi +++ b/arch/arm/boot/dts/sun5i-a10s.dtsi -@@ -51,34 +51,38 @@ +@@ -47,34 +47,38 @@ clock-frequency = <0>; }; @@ -62,7 +60,7 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-pll5-clk"; reg = <0x01c20020 0x4>; -@@ -86,7 +90,7 @@ +@@ -82,7 +86,7 @@ clock-output-names = "pll5_ddr", "pll5_other"; }; @@ -71,7 +69,7 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-pll6-clk"; reg = <0x01c20028 0x4>; -@@ -100,6 +104,7 @@ +@@ -96,6 +100,7 @@ compatible = "allwinner,sun4i-cpu-clk"; reg = <0x01c20054 0x4>; clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>; @@ -79,7 +77,7 @@ index 848baaa..99a5120 100644 }; axi: axi@01c20054 { -@@ -107,9 +112,10 @@ +@@ -103,9 +108,10 @@ compatible = "allwinner,sun4i-axi-clk"; reg = <0x01c20054 0x4>; clocks = <&cpu>; @@ -91,7 +89,7 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-axi-gates-clk"; reg = <0x01c2005c 0x4>; -@@ -122,9 +128,10 @@ +@@ -118,9 +124,10 @@ compatible = "allwinner,sun4i-ahb-clk"; reg = <0x01c20054 0x4>; clocks = <&axi>; @@ -103,7 +101,7 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun5i-a10s-ahb-gates-clk"; reg = <0x01c20060 0x8>; -@@ -143,9 +150,10 @@ +@@ -139,9 +146,10 @@ compatible = "allwinner,sun4i-apb0-clk"; reg = <0x01c20054 0x4>; clocks = <&ahb>; @@ -115,7 +113,7 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun5i-a10s-apb0-gates-clk"; reg = <0x01c20068 0x4>; -@@ -159,6 +167,7 @@ +@@ -155,6 +163,7 @@ compatible = "allwinner,sun4i-apb1-mux-clk"; reg = <0x01c20058 0x4>; clocks = <&osc24M>, <&pll6 1>, <&osc32k>; @@ -123,7 +121,7 @@ index 848baaa..99a5120 100644 }; apb1: apb1@01c20058 { -@@ -166,9 +175,10 @@ +@@ -162,9 +171,10 @@ compatible = "allwinner,sun4i-apb1-clk"; reg = <0x01c20058 0x4>; clocks = <&apb1_mux>; @@ -135,8 +133,6 @@ index 848baaa..99a5120 100644 #clock-cells = <1>; compatible = "allwinner,sun5i-a10s-apb1-gates-clk"; reg = <0x01c2006c 0x4>; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index d8207b0..b776baa 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -52,34 +52,38 @@ @@ -256,6 +252,3 @@ index d8207b0..b776baa 100644 #clock-cells = <1>; compatible = "allwinner,sun5i-a13-apb1-gates-clk"; reg = <0x01c2006c 0x4>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/113-dt-sun6i-rename-clocknodes.patch b/target/linux/sunxi/patches-3.14/113-dt-sun6i-rename-clocknodes.patch index 56c0208..b0f7648 100644 --- a/target/linux/sunxi/patches-3.14/113-dt-sun6i-rename-clocknodes.patch +++ b/target/linux/sunxi/patches-3.14/113-dt-sun6i-rename-clocknodes.patch @@ -13,8 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun6i-a31.dtsi | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index fc07f70..d3f1995 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -70,17 +70,19 @@ @@ -107,6 +105,3 @@ index fc07f70..d3f1995 100644 #clock-cells = <1>; compatible = "allwinner,sun6i-a31-apb2-gates-clk"; reg = <0x01c2006c 0x4>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/114-dt-sun7i-rename-clocknodes.patch b/target/linux/sunxi/patches-3.14/114-dt-sun7i-rename-clocknodes.patch index a1786fc..a8a6993 100644 --- a/target/linux/sunxi/patches-3.14/114-dt-sun7i-rename-clocknodes.patch +++ b/target/linux/sunxi/patches-3.14/114-dt-sun7i-rename-clocknodes.patch @@ -13,11 +13,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 2139e0f..78f562a 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -54,11 +54,12 @@ +@@ -62,11 +62,12 @@ #size-cells = <1>; ranges; @@ -31,7 +29,7 @@ index 2139e0f..78f562a 100644 }; osc32k: clk@0 { -@@ -68,21 +69,23 @@ +@@ -76,21 +77,23 @@ clock-output-names = "osc32k"; }; @@ -58,7 +56,7 @@ index 2139e0f..78f562a 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-pll5-clk"; reg = <0x01c20020 0x4>; -@@ -90,7 +93,7 @@ +@@ -98,7 +101,7 @@ clock-output-names = "pll5_ddr", "pll5_other"; }; @@ -67,7 +65,7 @@ index 2139e0f..78f562a 100644 #clock-cells = <1>; compatible = "allwinner,sun4i-pll6-clk"; reg = <0x01c20028 0x4>; -@@ -103,6 +106,7 @@ +@@ -111,6 +114,7 @@ compatible = "allwinner,sun4i-cpu-clk"; reg = <0x01c20054 0x4>; clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>; @@ -75,7 +73,7 @@ index 2139e0f..78f562a 100644 }; axi: axi@01c20054 { -@@ -110,6 +114,7 @@ +@@ -118,6 +122,7 @@ compatible = "allwinner,sun4i-axi-clk"; reg = <0x01c20054 0x4>; clocks = <&cpu>; @@ -83,7 +81,7 @@ index 2139e0f..78f562a 100644 }; ahb: ahb@01c20054 { -@@ -117,9 +122,10 @@ +@@ -125,9 +130,10 @@ compatible = "allwinner,sun4i-ahb-clk"; reg = <0x01c20054 0x4>; clocks = <&axi>; @@ -95,7 +93,7 @@ index 2139e0f..78f562a 100644 #clock-cells = <1>; compatible = "allwinner,sun7i-a20-ahb-gates-clk"; reg = <0x01c20060 0x8>; -@@ -144,9 +150,10 @@ +@@ -152,9 +158,10 @@ compatible = "allwinner,sun4i-apb0-clk"; reg = <0x01c20054 0x4>; clocks = <&ahb>; @@ -107,7 +105,7 @@ index 2139e0f..78f562a 100644 #clock-cells = <1>; compatible = "allwinner,sun7i-a20-apb0-gates-clk"; reg = <0x01c20068 0x4>; -@@ -162,6 +169,7 @@ +@@ -170,6 +177,7 @@ compatible = "allwinner,sun4i-apb1-mux-clk"; reg = <0x01c20058 0x4>; clocks = <&osc24M>, <&pll6 1>, <&osc32k>; @@ -115,7 +113,7 @@ index 2139e0f..78f562a 100644 }; apb1: apb1@01c20058 { -@@ -169,9 +177,10 @@ +@@ -177,9 +185,10 @@ compatible = "allwinner,sun4i-apb1-clk"; reg = <0x01c20058 0x4>; clocks = <&apb1_mux>; @@ -127,6 +125,3 @@ index 2139e0f..78f562a 100644 #clock-cells = <1>; compatible = "allwinner,sun7i-a20-apb1-gates-clk"; reg = <0x01c2006c 0x4>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/115-dt-sun6i-fix-mod0-compat.patch b/target/linux/sunxi/patches-3.14/115-dt-sun6i-fix-mod0-compat.patch index 6b14459..f2644a1 100644 --- a/target/linux/sunxi/patches-3.14/115-dt-sun6i-fix-mod0-compat.patch +++ b/target/linux/sunxi/patches-3.14/115-dt-sun6i-fix-mod0-compat.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun6i-a31.dtsi | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index af6f87c..42f310a 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -200,7 +200,7 @@ @@ -51,6 +49,3 @@ index af6f87c..42f310a 100644 reg = <0x01c200ac 0x4>; clocks = <&osc24M>, <&pll6>; clock-output-names = "spi3"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/120-dt-sun7i-add-gmac-clocknode.patch b/target/linux/sunxi/patches-3.14/120-dt-sun7i-add-gmac-clocknode.patch index 47dab70..9a1e485 100644 --- a/target/linux/sunxi/patches-3.14/120-dt-sun7i-add-gmac-clocknode.patch +++ b/target/linux/sunxi/patches-3.14/120-dt-sun7i-add-gmac-clocknode.patch @@ -12,11 +12,9 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20.dtsi | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 78f562a..f6ae357 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -322,6 +322,34 @@ +@@ -330,6 +330,34 @@ }; /* @@ -51,6 +49,3 @@ index 78f562a..f6ae357 100644 * Dummy clock used by output clocks */ osc24M_32k: clk@1 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/121-dt-sun7i-add-gmac-ctrlnode.patch b/target/linux/sunxi/patches-3.14/121-dt-sun7i-add-gmac-ctrlnode.patch index bf2d384..3ddb55e 100644 --- a/target/linux/sunxi/patches-3.14/121-dt-sun7i-add-gmac-ctrlnode.patch +++ b/target/linux/sunxi/patches-3.14/121-dt-sun7i-add-gmac-ctrlnode.patch @@ -8,11 +8,9 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20.dtsi | 15 +++++++++++++++ 1 file changed, 15 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index f6ae357..fa489fe 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -645,6 +645,21 @@ +@@ -653,6 +653,21 @@ status = "disabled"; }; @@ -34,6 +32,3 @@ index f6ae357..fa489fe 100644 hstimer@01c60000 { compatible = "allwinner,sun7i-a20-hstimer"; reg = <0x01c60000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/122-dt-sun7i-add-pinmuxing-for-gmac.patch b/target/linux/sunxi/patches-3.14/122-dt-sun7i-add-pinmuxing-for-gmac.patch index 7fa7b9c..d539af2 100644 --- a/target/linux/sunxi/patches-3.14/122-dt-sun7i-add-pinmuxing-for-gmac.patch +++ b/target/linux/sunxi/patches-3.14/122-dt-sun7i-add-pinmuxing-for-gmac.patch @@ -11,11 +11,9 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20.dtsi | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index fa489fe..679dc50 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -484,6 +484,32 @@ +@@ -492,6 +492,32 @@ allwinner,drive = <0>; allwinner,pull = <0>; }; @@ -48,6 +46,3 @@ index fa489fe..679dc50 100644 }; timer@01c20c00 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/123-dt-sun7i-cubietruck-enable-gmac.patch b/target/linux/sunxi/patches-3.14/123-dt-sun7i-cubietruck-enable-gmac.patch index 4bc4a76..9551fa8 100644 --- a/target/linux/sunxi/patches-3.14/123-dt-sun7i-cubietruck-enable-gmac.patch +++ b/target/linux/sunxi/patches-3.14/123-dt-sun7i-cubietruck-enable-gmac.patch @@ -10,12 +10,10 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 12 ++++++++++++ 1 file changed, 12 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index f9dcb61..025ce52 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -@@ -51,6 +51,18 @@ - pinctrl-0 = <&i2c2_pins_a>; +@@ -47,6 +47,18 @@ + pinctrl-0 = <&uart0_pins_a>; status = "okay"; }; + @@ -33,6 +31,3 @@ index f9dcb61..025ce52 100644 }; leds { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/124-dt-sun7i-cubieboard2-enable-gmac.patch b/target/linux/sunxi/patches-3.14/124-dt-sun7i-cubieboard2-enable-gmac.patch index 5116064..c4744e9 100644 --- a/target/linux/sunxi/patches-3.14/124-dt-sun7i-cubieboard2-enable-gmac.patch +++ b/target/linux/sunxi/patches-3.14/124-dt-sun7i-cubieboard2-enable-gmac.patch @@ -11,8 +11,6 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20-cubieboard2.dts | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index 5c51cb8..7bf4935 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts @@ -19,21 +19,6 @@ @@ -56,6 +54,3 @@ index 5c51cb8..7bf4935 100644 }; leds { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/125-dt-sun7i-olinuxinom-enable-gmac.patch b/target/linux/sunxi/patches-3.14/125-dt-sun7i-olinuxinom-enable-gmac.patch index 756400a..b4648c8 100644 --- a/target/linux/sunxi/patches-3.14/125-dt-sun7i-olinuxinom-enable-gmac.patch +++ b/target/linux/sunxi/patches-3.14/125-dt-sun7i-olinuxinom-enable-gmac.patch @@ -12,8 +12,6 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 27 +++++++++++-------------- 1 file changed, 12 insertions(+), 15 deletions(-) -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index ead3013..b02a796 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -19,21 +19,6 @@ @@ -57,6 +55,3 @@ index ead3013..b02a796 100644 }; leds { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/126-dt-sun7i-add-eth-alias-for-gmac.patch b/target/linux/sunxi/patches-3.14/126-dt-sun7i-add-eth-alias-for-gmac.patch index 0fe2087..0140588 100644 --- a/target/linux/sunxi/patches-3.14/126-dt-sun7i-add-eth-alias-for-gmac.patch +++ b/target/linux/sunxi/patches-3.14/126-dt-sun7i-add-eth-alias-for-gmac.patch @@ -13,8 +13,6 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 679dc50..bfc3a95 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -17,7 +17,7 @@ @@ -26,6 +24,3 @@ index 679dc50..bfc3a95 100644 serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/130-dt-sun4i-add-usbclock-bindings.patch b/target/linux/sunxi/patches-3.14/130-dt-sun4i-add-usbclock-bindings.patch index 71d97c6..b94aeaf 100644 --- a/target/linux/sunxi/patches-3.14/130-dt-sun4i-add-usbclock-bindings.patch +++ b/target/linux/sunxi/patches-3.14/130-dt-sun4i-add-usbclock-bindings.patch @@ -10,8 +10,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 132b261..2d623d0 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -315,6 +315,15 @@ @@ -30,6 +28,3 @@ index 132b261..2d623d0 100644 spi3_clk: clk@01c200d4 { #clock-cells = <0>; compatible = "allwinner,sun4i-mod0-clk"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/131-dt-sun5i-add-usbclock-bindings.patch b/target/linux/sunxi/patches-3.14/131-dt-sun5i-add-usbclock-bindings.patch index 337710c..366adb4 100644 --- a/target/linux/sunxi/patches-3.14/131-dt-sun5i-add-usbclock-bindings.patch +++ b/target/linux/sunxi/patches-3.14/131-dt-sun5i-add-usbclock-bindings.patch @@ -11,11 +11,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun5i-a13.dtsi | 9 +++++++++ 2 files changed, 18 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index 99a5120..905317e 100644 --- a/arch/arm/boot/dts/sun5i-a10s.dtsi +++ b/arch/arm/boot/dts/sun5i-a10s.dtsi -@@ -276,6 +276,15 @@ +@@ -272,6 +272,15 @@ clock-output-names = "ir0"; }; @@ -31,8 +29,6 @@ index 99a5120..905317e 100644 mbus_clk: clk@01c2015c { #clock-cells = <0>; compatible = "allwinner,sun4i-mod0-clk"; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index b776baa..d196ebc6 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -274,6 +274,15 @@ @@ -51,6 +47,3 @@ index b776baa..d196ebc6 100644 mbus_clk: clk@01c2015c { #clock-cells = <0>; compatible = "allwinner,sun4i-mod0-clk"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/132-dt-sun7i-add-usbclock-bindings.patch b/target/linux/sunxi/patches-3.14/132-dt-sun7i-add-usbclock-bindings.patch index 151aa46..1a97fae 100644 --- a/target/linux/sunxi/patches-3.14/132-dt-sun7i-add-usbclock-bindings.patch +++ b/target/linux/sunxi/patches-3.14/132-dt-sun7i-add-usbclock-bindings.patch @@ -10,11 +10,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 9 +++++++++ 1 file changed, 9 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index bfc3a95..822a816 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -305,6 +305,15 @@ +@@ -313,6 +313,15 @@ clock-output-names = "ir1"; }; @@ -30,6 +28,3 @@ index bfc3a95..822a816 100644 spi3_clk: clk@01c200d4 { #clock-cells = <0>; compatible = "allwinner,sun4i-mod0-clk"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch b/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch index e653fe9..5eb1fab 100644 --- a/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch +++ b/target/linux/sunxi/patches-3.14/135-pinctrl-fixes.patch @@ -13,11 +13,9 @@ Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> drivers/pinctrl/pinctrl-sunxi-pins.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) -diff --git a/drivers/pinctrl/pinctrl-sunxi-pins.h b/drivers/pinctrl/pinctrl-sunxi-pins.h -index 6fd8d4d..3d60669 100644 --- a/drivers/pinctrl/pinctrl-sunxi-pins.h +++ b/drivers/pinctrl/pinctrl-sunxi-pins.h -@@ -1932,27 +1932,27 @@ static const struct sunxi_desc_pin sun5i_a13_pins[] = { +@@ -1932,27 +1932,27 @@ static const struct sunxi_desc_pin sun5i SUNXI_PIN(SUNXI_PINCTRL_PIN_PF0, SUNXI_FUNCTION(0x0, "gpio_in"), SUNXI_FUNCTION(0x1, "gpio_out"), @@ -51,24 +49,6 @@ index 6fd8d4d..3d60669 100644 /* Hole */ SUNXI_PIN(SUNXI_PINCTRL_PIN_PG0, SUNXI_FUNCTION(0x0, "gpio_in"), --- -2.0.3 - -From 8d2c11e63a3302bbbdac41fc765c881da8a8eb37 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Sat, 15 Feb 2014 12:58:17 +0100 -Subject: [PATCH] pinctrl-sunxi: Fix hang on gpio irq - -Our irq handler was missing chained_irq_enter / exit calls, causing a -hard hang as soon as a gpio irq happened. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/pinctrl/pinctrl-sunxi.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c -index f9fabe9..d16da53 100644 --- a/drivers/pinctrl/pinctrl-sunxi.c +++ b/drivers/pinctrl/pinctrl-sunxi.c @@ -13,6 +13,7 @@ @@ -79,7 +59,7 @@ index f9fabe9..d16da53 100644 #include <linux/irqdomain.h> #include <linux/irqchip/chained_irq.h> #include <linux/module.h> -@@ -670,6 +671,8 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) +@@ -670,6 +671,8 @@ static void sunxi_pinctrl_irq_handler(un struct sunxi_pinctrl *pctl = irq_get_handler_data(irq); const unsigned long reg = readl(pctl->membase + IRQ_STATUS_REG); @@ -88,7 +68,7 @@ index f9fabe9..d16da53 100644 /* Clear all interrupts */ writel(reg, pctl->membase + IRQ_STATUS_REG); -@@ -683,6 +686,7 @@ static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) +@@ -683,6 +686,7 @@ static void sunxi_pinctrl_irq_handler(un } chained_irq_exit(chip, desc); } @@ -96,6 +76,3 @@ index f9fabe9..d16da53 100644 } static struct of_device_id sunxi_pinctrl_match[] = { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/136-1-irqchip-sun4i-fixes.patch b/target/linux/sunxi/patches-3.14/136-1-irqchip-sun4i-fixes.patch index 5a8c83c..4345d3e 100644 --- a/target/linux/sunxi/patches-3.14/136-1-irqchip-sun4i-fixes.patch +++ b/target/linux/sunxi/patches-3.14/136-1-irqchip-sun4i-fixes.patch @@ -17,8 +17,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> kernel/irq/manage.c | 2 +- 4 files changed, 45 insertions(+), 9 deletions(-) -diff --git a/include/linux/irq.h b/include/linux/irq.h -index 7dc1003..0f036fb 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -349,6 +349,8 @@ struct irq_chip { @@ -38,8 +36,6 @@ index 7dc1003..0f036fb 100644 }; /* This include will go away once we isolated irq_desc usage to core code */ -diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c -index dc04c16..6397df2 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -281,6 +281,19 @@ void unmask_irq(struct irq_desc *desc) @@ -62,7 +58,7 @@ index dc04c16..6397df2 100644 /* * handle_nested_irq - Handle a nested irq from a irq thread * @irq: the interrupt number -@@ -435,6 +448,27 @@ static inline void preflow_handler(struct irq_desc *desc) +@@ -435,6 +448,27 @@ static inline void preflow_handler(struc static inline void preflow_handler(struct irq_desc *desc) { } #endif @@ -90,7 +86,7 @@ index dc04c16..6397df2 100644 /** * handle_fasteoi_irq - irq handler for transparent controllers * @irq: the interrupt number -@@ -448,6 +482,8 @@ static inline void preflow_handler(struct irq_desc *desc) { } +@@ -448,6 +482,8 @@ static inline void preflow_handler(struc void handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc) { @@ -99,7 +95,7 @@ index dc04c16..6397df2 100644 raw_spin_lock(&desc->lock); if (unlikely(irqd_irq_inprogress(&desc->irq_data))) -@@ -473,18 +509,14 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc) +@@ -473,18 +509,14 @@ handle_fasteoi_irq(unsigned int irq, str preflow_handler(desc); handle_irq_event(desc); @@ -122,11 +118,9 @@ index dc04c16..6397df2 100644 } /** -diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h -index 001fa5b..e98bb56 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h -@@ -73,6 +73,7 @@ extern void irq_percpu_enable(struct irq_desc *desc, unsigned int cpu); +@@ -73,6 +73,7 @@ extern void irq_percpu_enable(struct irq extern void irq_percpu_disable(struct irq_desc *desc, unsigned int cpu); extern void mask_irq(struct irq_desc *desc); extern void unmask_irq(struct irq_desc *desc); @@ -134,11 +128,9 @@ index 001fa5b..e98bb56 100644 extern void init_kstat_irqs(struct irq_desc *desc, int node, int nr); -diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c -index d3bf660..7593958 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c -@@ -718,7 +718,7 @@ static void irq_finalize_oneshot(struct irq_desc *desc, +@@ -713,7 +713,7 @@ again: if (!desc->threads_oneshot && !irqd_irq_disabled(&desc->irq_data) && irqd_irq_masked(&desc->irq_data)) @@ -147,35 +139,56 @@ index d3bf660..7593958 100644 out_unlock: raw_spin_unlock_irq(&desc->lock); --- -2.0.3 - -From d000f9a5348e6d6c8b620a9c2d0b97c69d6d6153 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 11 Mar 2014 16:47:46 +0100 -Subject: [PATCH] irqchip: sun4i: Fix irq 0 not working - -SUN4I_IRQ_VECTOR_REG containing 0 can mean one of 3 things: -1) no more irqs pending -2) irq 0 pending -3) spurious irq - -So if we immediately get a reading of 0, check the irq-pending reg -to differentiate between 2 and 3. We only do this once to avoid -the extra check in the common case of 1) hapening after having -read the vector-reg once. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> ---- - drivers/irqchip/irq-sun4i.c | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c -index a5438d8..5c25048 100644 --- a/drivers/irqchip/irq-sun4i.c +++ b/drivers/irqchip/irq-sun4i.c -@@ -140,10 +140,24 @@ static asmlinkage void __exception_irq_entry sun4i_handle_irq(struct pt_regs *re +@@ -41,13 +41,11 @@ static asmlinkage void __exception_irq_e + static void sun4i_irq_ack(struct irq_data *irqd) + { + unsigned int irq = irqd_to_hwirq(irqd); +- unsigned int irq_off = irq % 32; +- int reg = irq / 32; +- u32 val; + +- val = readl(sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); +- writel(val | (1 << irq_off), +- sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); ++ if (irq != 0) ++ return; /* Only IRQ 0 / the ENMI needs to be acked */ ++ ++ writel(BIT(0), sun4i_irq_base + SUN4I_IRQ_PENDING_REG(0)); + } + + static void sun4i_irq_mask(struct irq_data *irqd) +@@ -76,16 +74,16 @@ static void sun4i_irq_unmask(struct irq_ + + static struct irq_chip sun4i_irq_chip = { + .name = "sun4i_irq", +- .irq_ack = sun4i_irq_ack, ++ .irq_eoi = sun4i_irq_ack, + .irq_mask = sun4i_irq_mask, + .irq_unmask = sun4i_irq_unmask, ++ .flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED, + }; + + static int sun4i_irq_map(struct irq_domain *d, unsigned int virq, + irq_hw_number_t hw) + { +- irq_set_chip_and_handler(virq, &sun4i_irq_chip, +- handle_level_irq); ++ irq_set_chip_and_handler(virq, &sun4i_irq_chip, handle_fasteoi_irq); + set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); + + return 0; +@@ -109,7 +107,7 @@ static int __init sun4i_of_init(struct d + writel(0, sun4i_irq_base + SUN4I_IRQ_ENABLE_REG(1)); + writel(0, sun4i_irq_base + SUN4I_IRQ_ENABLE_REG(2)); + +- /* Mask all the interrupts */ ++ /* Unmask all the interrupts, ENABLE_REG(x) is used for masking */ + writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(0)); + writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(1)); + writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(2)); +@@ -140,10 +138,24 @@ static asmlinkage void __exception_irq_e { u32 irq, hwirq; @@ -202,214 +215,3 @@ index a5438d8..5c25048 100644 - } + } while (hwirq != 0); } --- -2.0.3 - -From b37587009473582d9fc080e8b8b99b67b0077a90 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 11 Mar 2014 16:53:23 +0100 -Subject: [PATCH] irqchip: sun4i: Fix a comment about mask register - initialization - -The comment was claiming that we were masking all irqs, while the code actually -*un*masks all of them. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> ---- - drivers/irqchip/irq-sun4i.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c -index 5c25048..8a2fbee 100644 ---- a/drivers/irqchip/irq-sun4i.c -+++ b/drivers/irqchip/irq-sun4i.c -@@ -109,7 +109,7 @@ static int __init sun4i_of_init(struct device_node *node, - writel(0, sun4i_irq_base + SUN4I_IRQ_ENABLE_REG(1)); - writel(0, sun4i_irq_base + SUN4I_IRQ_ENABLE_REG(2)); - -- /* Mask all the interrupts */ -+ /* Unmask all the interrupts, ENABLE_REG(x) is used for masking */ - writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(0)); - writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(1)); - writel(0, sun4i_irq_base + SUN4I_IRQ_MASK_REG(2)); --- -2.0.3 - -From c8865ee82b74b2d95339370972a0d9bfdbac09cf Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Wed, 12 Mar 2014 17:43:45 +0100 -Subject: [PATCH] irqchip: sun4i: Don't ack IRQs != 0, fix acking of IRQ 0 - -All IRQs except for IRQ 0 seem to not need acking, so drop acking for them. - -The ENMI needs to have the ack done *after* clearing the interrupt source, -otherwise we will get a spurious interrupt for each real interrupt. - -So use the new IRQCHIP_EOI_THREADED flag for this in combination with -handle_fasteoi_irq. This uses a separate irq_chip struct for IRQ 0, -since we only want this behavior for IRQ 0. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/irqchip/irq-sun4i.c | 19 ++++++++++++++++--- - 1 file changed, 16 insertions(+), 3 deletions(-) - -diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c -index 8a2fbee..a0ed1ea 100644 ---- a/drivers/irqchip/irq-sun4i.c -+++ b/drivers/irqchip/irq-sun4i.c -@@ -76,16 +76,29 @@ static void sun4i_irq_unmask(struct irq_data *irqd) - - static struct irq_chip sun4i_irq_chip = { - .name = "sun4i_irq", -- .irq_ack = sun4i_irq_ack, - .irq_mask = sun4i_irq_mask, - .irq_unmask = sun4i_irq_unmask, - }; - -+/* IRQ 0 / the ENMI needs a late eoi call */ -+static struct irq_chip sun4i_irq_chip_enmi = { -+ .name = "sun4i_irq", -+ .irq_eoi = sun4i_irq_ack, -+ .irq_mask = sun4i_irq_mask, -+ .irq_unmask = sun4i_irq_unmask, -+ .flags = IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED, -+}; -+ - static int sun4i_irq_map(struct irq_domain *d, unsigned int virq, - irq_hw_number_t hw) - { -- irq_set_chip_and_handler(virq, &sun4i_irq_chip, -- handle_level_irq); -+ if (hw == 0) -+ irq_set_chip_and_handler(virq, &sun4i_irq_chip_enmi, -+ handle_fasteoi_irq); -+ else -+ irq_set_chip_and_handler(virq, &sun4i_irq_chip, -+ handle_level_irq); -+ - set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); - - return 0; --- -2.0.3 - -From f8b4347aa12d7a30aa1d3e5bfcdccece52d17af3 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Thu, 13 Mar 2014 19:38:26 +0100 -Subject: [PATCH] irqchip: sun4i: Use handle_fasteoi_irq for all interrupts - -Since the sun4i irq chip does not require any action and clears the interrupt -when the level goes back to inactive, we don't need to mask / unmask for -non oneshot IRQs, to achieve this we make sun4i_irq_ack a nop for all irqs -except irq 0 and use handle_fasteoi_irq for all interrupts. - -Now there might be a case when the device reactivates the interrupt -before the RETI. But that does not matter as we run the primary -interrupt handlers with interrupts disabled. - -This also allows us to get rid of needing to use 2 irq_chip structs, this -means that the IRQCHIP_EOI_THREADED | IRQCHIP_EOI_IF_HANDLED will now influence -all interrupts rather then just irq 0, but that does not matter as the eoi -is now a nop anyways for all interrupts but irq 0. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> ---- - drivers/irqchip/irq-sun4i.c | 18 ++++-------------- - 1 file changed, 4 insertions(+), 14 deletions(-) - -diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c -index a0ed1ea..6a8c88d 100644 ---- a/drivers/irqchip/irq-sun4i.c -+++ b/drivers/irqchip/irq-sun4i.c -@@ -45,6 +45,9 @@ static void sun4i_irq_ack(struct irq_data *irqd) - int reg = irq / 32; - u32 val; - -+ if (irq != 0) -+ return; /* Only IRQ 0 / the ENMI needs to be acked */ -+ - val = readl(sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); - writel(val | (1 << irq_off), - sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); -@@ -76,13 +79,6 @@ static void sun4i_irq_unmask(struct irq_data *irqd) - - static struct irq_chip sun4i_irq_chip = { - .name = "sun4i_irq", -- .irq_mask = sun4i_irq_mask, -- .irq_unmask = sun4i_irq_unmask, --}; -- --/* IRQ 0 / the ENMI needs a late eoi call */ --static struct irq_chip sun4i_irq_chip_enmi = { -- .name = "sun4i_irq", - .irq_eoi = sun4i_irq_ack, - .irq_mask = sun4i_irq_mask, - .irq_unmask = sun4i_irq_unmask, -@@ -92,13 +88,7 @@ static struct irq_chip sun4i_irq_chip_enmi = { - static int sun4i_irq_map(struct irq_domain *d, unsigned int virq, - irq_hw_number_t hw) - { -- if (hw == 0) -- irq_set_chip_and_handler(virq, &sun4i_irq_chip_enmi, -- handle_fasteoi_irq); -- else -- irq_set_chip_and_handler(virq, &sun4i_irq_chip, -- handle_level_irq); -- -+ irq_set_chip_and_handler(virq, &sun4i_irq_chip, handle_fasteoi_irq); - set_irq_flags(virq, IRQF_VALID | IRQF_PROBE); - - return 0; --- -2.0.3 - -From de39bc31eaa554bd044e6adefacd3da6da5bf6e3 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Thu, 13 Mar 2014 20:41:20 +0100 -Subject: [PATCH] irqchip: sun4i: simplify sun4i_irq_ack - -Now that we only ack irq 0 the code can be simplified a lot. - -Also switch from read / modify / write to a simple write clear: -1) This is what the android code does (it has a hack for acking irq 0 - in its unmask code doing this) -2) read / modify / write simply does not make sense for an irq status - register like this, if the other bits are writeable (and the data sheet says - they are not) they should be write 1 to clear, since otherwise a read / - modify / write can race with a device raising an interrupt and then clear - the pending bit unintentionally - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> -Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> ---- - drivers/irqchip/irq-sun4i.c | 7 +------ - 1 file changed, 1 insertion(+), 6 deletions(-) - -diff --git a/drivers/irqchip/irq-sun4i.c b/drivers/irqchip/irq-sun4i.c -index 6a8c88d..75615b5 100644 ---- a/drivers/irqchip/irq-sun4i.c -+++ b/drivers/irqchip/irq-sun4i.c -@@ -41,16 +41,11 @@ static asmlinkage void __exception_irq_entry sun4i_handle_irq(struct pt_regs *re - static void sun4i_irq_ack(struct irq_data *irqd) - { - unsigned int irq = irqd_to_hwirq(irqd); -- unsigned int irq_off = irq % 32; -- int reg = irq / 32; -- u32 val; - - if (irq != 0) - return; /* Only IRQ 0 / the ENMI needs to be acked */ - -- val = readl(sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); -- writel(val | (1 << irq_off), -- sun4i_irq_base + SUN4I_IRQ_PENDING_REG(reg)); -+ writel(BIT(0), sun4i_irq_base + SUN4I_IRQ_PENDING_REG(0)); - } - - static void sun4i_irq_mask(struct irq_data *irqd) --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch b/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch index cd209cd..1e4f1c7 100644 --- a/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch +++ b/target/linux/sunxi/patches-3.14/137-1-pinctrl-create-irq-pin-mapping.patch @@ -13,11 +13,9 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> drivers/pinctrl/pinctrl-sunxi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c -index d16da53..067e7e10 100644 --- a/drivers/pinctrl/pinctrl-sunxi.c +++ b/drivers/pinctrl/pinctrl-sunxi.c -@@ -531,8 +531,6 @@ static int sunxi_pinctrl_gpio_to_irq(struct gpio_chip *chip, unsigned offset) +@@ -531,8 +531,6 @@ static int sunxi_pinctrl_gpio_to_irq(str if (!desc) return -EINVAL; @@ -26,7 +24,7 @@ index d16da53..067e7e10 100644 dev_dbg(chip->dev, "%s: request IRQ for GPIO %d, return %d\n", chip->label, offset + chip->base, desc->irqnum); -@@ -759,6 +757,9 @@ static int sunxi_pinctrl_build_state(struct platform_device *pdev) +@@ -759,6 +757,9 @@ static int sunxi_pinctrl_build_state(str struct sunxi_desc_function *func = pin->functions; while (func->name) { @@ -36,6 +34,3 @@ index d16da53..067e7e10 100644 sunxi_pinctrl_add_function(pctl, func->name); func++; } --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/137-2-pinctrl-add-IRQCHIP_SKIP_SET_WAKE.patch b/target/linux/sunxi/patches-3.14/137-2-pinctrl-add-IRQCHIP_SKIP_SET_WAKE.patch index 8db59a4..58e1394 100644 --- a/target/linux/sunxi/patches-3.14/137-2-pinctrl-add-IRQCHIP_SKIP_SET_WAKE.patch +++ b/target/linux/sunxi/patches-3.14/137-2-pinctrl-add-IRQCHIP_SKIP_SET_WAKE.patch @@ -13,11 +13,9 @@ Also add a name to the irq chip. drivers/pinctrl/pinctrl-sunxi.c | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c -index 067e7e10..d7a41a8 100644 --- a/drivers/pinctrl/pinctrl-sunxi.c +++ b/drivers/pinctrl/pinctrl-sunxi.c -@@ -661,6 +661,8 @@ static struct irq_chip sunxi_pinctrl_irq_chip = { +@@ -661,6 +661,8 @@ static struct irq_chip sunxi_pinctrl_irq .irq_mask_ack = sunxi_pinctrl_irq_mask_ack, .irq_unmask = sunxi_pinctrl_irq_unmask, .irq_set_type = sunxi_pinctrl_irq_set_type, @@ -26,6 +24,3 @@ index 067e7e10..d7a41a8 100644 }; static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc) --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/137-3-dt-sun7i-add-interrupt-cells.patch b/target/linux/sunxi/patches-3.14/137-3-dt-sun7i-add-interrupt-cells.patch index 31cf5e4..fb3b5cd 100644 --- a/target/linux/sunxi/patches-3.14/137-3-dt-sun7i-add-interrupt-cells.patch +++ b/target/linux/sunxi/patches-3.14/137-3-dt-sun7i-add-interrupt-cells.patch @@ -13,11 +13,9 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> arch/arm/boot/dts/sun7i-a20.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 0c57ac5..30b9aba 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -572,7 +572,7 @@ +@@ -424,7 +424,7 @@ clocks = <&apb0_gates 5>; gpio-controller; interrupt-controller; @@ -26,6 +24,3 @@ index 0c57ac5..30b9aba 100644 #size-cells = <0>; #gpio-cells = <3>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/140-dt-sunxi-convert-to-new-clock-compats.patch b/target/linux/sunxi/patches-3.14/140-dt-sunxi-convert-to-new-clock-compats.patch index 443a652..875aea1 100644 --- a/target/linux/sunxi/patches-3.14/140-dt-sunxi-convert-to-new-clock-compats.patch +++ b/target/linux/sunxi/patches-3.14/140-dt-sunxi-convert-to-new-clock-compats.patch @@ -15,8 +15,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 54 +++++++++++++++++------------------ 5 files changed, 110 insertions(+), 110 deletions(-) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 2d623d0..f6f41d6 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -60,7 +60,7 @@ @@ -289,11 +287,9 @@ index 2d623d0..f6f41d6 100644 reg = <0x01c200d4 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "spi3"; -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index 905317e..df90a29 100644 --- a/arch/arm/boot/dts/sun5i-a10s.dtsi +++ b/arch/arm/boot/dts/sun5i-a10s.dtsi -@@ -53,7 +53,7 @@ +@@ -49,7 +49,7 @@ osc24M: clk@01c20050 { #clock-cells = <0>; @@ -302,7 +298,7 @@ index 905317e..df90a29 100644 reg = <0x01c20050 0x4>; clock-frequency = <24000000>; clock-output-names = "osc24M"; -@@ -68,7 +68,7 @@ +@@ -64,7 +64,7 @@ pll1: clk@01c20000 { #clock-cells = <0>; @@ -311,7 +307,7 @@ index 905317e..df90a29 100644 reg = <0x01c20000 0x4>; clocks = <&osc24M>; clock-output-names = "pll1"; -@@ -76,7 +76,7 @@ +@@ -72,7 +72,7 @@ pll4: clk@01c20018 { #clock-cells = <0>; @@ -320,7 +316,7 @@ index 905317e..df90a29 100644 reg = <0x01c20018 0x4>; clocks = <&osc24M>; clock-output-names = "pll4"; -@@ -84,7 +84,7 @@ +@@ -80,7 +80,7 @@ pll5: clk@01c20020 { #clock-cells = <1>; @@ -329,7 +325,7 @@ index 905317e..df90a29 100644 reg = <0x01c20020 0x4>; clocks = <&osc24M>; clock-output-names = "pll5_ddr", "pll5_other"; -@@ -92,7 +92,7 @@ +@@ -88,7 +88,7 @@ pll6: clk@01c20028 { #clock-cells = <1>; @@ -338,7 +334,7 @@ index 905317e..df90a29 100644 reg = <0x01c20028 0x4>; clocks = <&osc24M>; clock-output-names = "pll6_sata", "pll6_other", "pll6"; -@@ -101,7 +101,7 @@ +@@ -97,7 +97,7 @@ /* dummy is 200M */ cpu: cpu@01c20054 { #clock-cells = <0>; @@ -347,7 +343,7 @@ index 905317e..df90a29 100644 reg = <0x01c20054 0x4>; clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>; clock-output-names = "cpu"; -@@ -109,7 +109,7 @@ +@@ -105,7 +105,7 @@ axi: axi@01c20054 { #clock-cells = <0>; @@ -356,7 +352,7 @@ index 905317e..df90a29 100644 reg = <0x01c20054 0x4>; clocks = <&cpu>; clock-output-names = "axi"; -@@ -117,7 +117,7 @@ +@@ -113,7 +113,7 @@ axi_gates: clk@01c2005c { #clock-cells = <1>; @@ -365,7 +361,7 @@ index 905317e..df90a29 100644 reg = <0x01c2005c 0x4>; clocks = <&axi>; clock-output-names = "axi_dram"; -@@ -125,7 +125,7 @@ +@@ -121,7 +121,7 @@ ahb: ahb@01c20054 { #clock-cells = <0>; @@ -374,7 +370,7 @@ index 905317e..df90a29 100644 reg = <0x01c20054 0x4>; clocks = <&axi>; clock-output-names = "ahb"; -@@ -147,7 +147,7 @@ +@@ -143,7 +143,7 @@ apb0: apb0@01c20054 { #clock-cells = <0>; @@ -383,7 +379,7 @@ index 905317e..df90a29 100644 reg = <0x01c20054 0x4>; clocks = <&ahb>; clock-output-names = "apb0"; -@@ -164,7 +164,7 @@ +@@ -160,7 +160,7 @@ apb1_mux: apb1_mux@01c20058 { #clock-cells = <0>; @@ -392,7 +388,7 @@ index 905317e..df90a29 100644 reg = <0x01c20058 0x4>; clocks = <&osc24M>, <&pll6 1>, <&osc32k>; clock-output-names = "apb1_mux"; -@@ -172,7 +172,7 @@ +@@ -168,7 +168,7 @@ apb1: apb1@01c20058 { #clock-cells = <0>; @@ -401,7 +397,7 @@ index 905317e..df90a29 100644 reg = <0x01c20058 0x4>; clocks = <&apb1_mux>; clock-output-names = "apb1"; -@@ -190,7 +190,7 @@ +@@ -186,7 +186,7 @@ nand_clk: clk@01c20080 { #clock-cells = <0>; @@ -410,7 +406,7 @@ index 905317e..df90a29 100644 reg = <0x01c20080 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "nand"; -@@ -198,7 +198,7 @@ +@@ -194,7 +194,7 @@ ms_clk: clk@01c20084 { #clock-cells = <0>; @@ -419,7 +415,7 @@ index 905317e..df90a29 100644 reg = <0x01c20084 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "ms"; -@@ -206,7 +206,7 @@ +@@ -202,7 +202,7 @@ mmc0_clk: clk@01c20088 { #clock-cells = <0>; @@ -428,7 +424,7 @@ index 905317e..df90a29 100644 reg = <0x01c20088 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "mmc0"; -@@ -214,7 +214,7 @@ +@@ -210,7 +210,7 @@ mmc1_clk: clk@01c2008c { #clock-cells = <0>; @@ -437,7 +433,7 @@ index 905317e..df90a29 100644 reg = <0x01c2008c 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "mmc1"; -@@ -222,7 +222,7 @@ +@@ -218,7 +218,7 @@ mmc2_clk: clk@01c20090 { #clock-cells = <0>; @@ -446,7 +442,7 @@ index 905317e..df90a29 100644 reg = <0x01c20090 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "mmc2"; -@@ -230,7 +230,7 @@ +@@ -226,7 +226,7 @@ ts_clk: clk@01c20098 { #clock-cells = <0>; @@ -455,7 +451,7 @@ index 905317e..df90a29 100644 reg = <0x01c20098 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "ts"; -@@ -238,7 +238,7 @@ +@@ -234,7 +234,7 @@ ss_clk: clk@01c2009c { #clock-cells = <0>; @@ -464,7 +460,7 @@ index 905317e..df90a29 100644 reg = <0x01c2009c 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "ss"; -@@ -246,7 +246,7 @@ +@@ -242,7 +242,7 @@ spi0_clk: clk@01c200a0 { #clock-cells = <0>; @@ -473,7 +469,7 @@ index 905317e..df90a29 100644 reg = <0x01c200a0 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "spi0"; -@@ -254,7 +254,7 @@ +@@ -250,7 +250,7 @@ spi1_clk: clk@01c200a4 { #clock-cells = <0>; @@ -482,7 +478,7 @@ index 905317e..df90a29 100644 reg = <0x01c200a4 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "spi1"; -@@ -262,7 +262,7 @@ +@@ -258,7 +258,7 @@ spi2_clk: clk@01c200a8 { #clock-cells = <0>; @@ -491,7 +487,7 @@ index 905317e..df90a29 100644 reg = <0x01c200a8 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "spi2"; -@@ -270,7 +270,7 @@ +@@ -266,7 +266,7 @@ ir0_clk: clk@01c200b0 { #clock-cells = <0>; @@ -500,7 +496,7 @@ index 905317e..df90a29 100644 reg = <0x01c200b0 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "ir0"; -@@ -287,7 +287,7 @@ +@@ -283,7 +283,7 @@ mbus_clk: clk@01c2015c { #clock-cells = <0>; @@ -509,8 +505,6 @@ index 905317e..df90a29 100644 reg = <0x01c2015c 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "mbus"; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index d196ebc6..24cd86cb 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -54,7 +54,7 @@ @@ -729,8 +723,6 @@ index d196ebc6..24cd86cb 100644 reg = <0x01c2015c 0x4>; clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; clock-output-names = "mbus"; -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index d3f1995..af6f87c 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -95,7 +95,7 @@ @@ -778,8 +770,6 @@ index d3f1995..af6f87c 100644 reg = <0x01c20058 0x4>; clocks = <&osc32k>, <&osc24M>, <&pll6>, <&pll6>; clock-output-names = "apb2_mux"; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 911d4e4..d00fbf8 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -64,7 +64,7 @@ @@ -1025,6 +1015,3 @@ index 911d4e4..d00fbf8 100644 reg = <0x01c2015c 0x4>; clocks = <&osc24M>, <&pll6 2>, <&pll5 1>; clock-output-names = "mbus"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/141-dt-sunxi-add-common-regulator-include.patch b/target/linux/sunxi/patches-3.14/141-dt-sunxi-add-common-regulator-include.patch index 07dda97..32f4f72 100644 --- a/target/linux/sunxi/patches-3.14/141-dt-sunxi-add-common-regulator-include.patch +++ b/target/linux/sunxi/patches-3.14/141-dt-sunxi-add-common-regulator-include.patch @@ -17,9 +17,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> 1 file changed, 75 insertions(+) create mode 100644 arch/arm/boot/dts/sunxi-common-regulators.dtsi -diff --git a/arch/arm/boot/dts/sunxi-common-regulators.dtsi b/arch/arm/boot/dts/sunxi-common-regulators.dtsi -new file mode 100644 -index 0000000..18eeac0 --- /dev/null +++ b/arch/arm/boot/dts/sunxi-common-regulators.dtsi @@ -0,0 +1,75 @@ @@ -98,6 +95,3 @@ index 0000000..18eeac0 + status = "disabled"; + }; +}; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/145-1-dt-sun7i-add-a20-spi.patch b/target/linux/sunxi/patches-3.14/145-1-dt-sun7i-add-a20-spi.patch index 47e342c..45dc8ba 100644 --- a/target/linux/sunxi/patches-3.14/145-1-dt-sun7i-add-a20-spi.patch +++ b/target/linux/sunxi/patches-3.14/145-1-dt-sun7i-add-a20-spi.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index d00fbf8..0f0ee58 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -401,6 +401,28 @@ @@ -44,10 +42,12 @@ index d00fbf8..0f0ee58 100644 emac: ethernet@01c0b000 { compatible = "allwinner,sun4i-a10-emac"; reg = <0x01c0b000 0x1000>; -@@ -417,6 +439,28 @@ +@@ -415,6 +437,28 @@ + status = "disabled"; + #address-cells = <1>; #size-cells = <0>; - }; - ++ }; ++ + spi2: spi@01c17000 { + compatible = "allwinner,sun4i-a10-spi"; + reg = <0x01c17000 0x1000>; @@ -68,11 +68,6 @@ index d00fbf8..0f0ee58 100644 + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ }; -+ + }; + pio: pinctrl@01c20800 { - compatible = "allwinner,sun7i-a20-pinctrl"; - reg = <0x01c20800 0x400>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/145-2-dt-sun4i-add-a10-spi.patch b/target/linux/sunxi/patches-3.14/145-2-dt-sun4i-add-a10-spi.patch index d39b6ee..1505e66 100644 --- a/target/linux/sunxi/patches-3.14/145-2-dt-sun4i-add-a10-spi.patch +++ b/target/linux/sunxi/patches-3.14/145-2-dt-sun4i-add-a10-spi.patch @@ -10,8 +10,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index f6f41d6..157bc09 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -339,6 +339,28 @@ @@ -43,10 +41,12 @@ index f6f41d6..157bc09 100644 emac: ethernet@01c0b000 { compatible = "allwinner,sun4i-a10-emac"; reg = <0x01c0b000 0x1000>; -@@ -355,6 +377,28 @@ +@@ -353,6 +375,28 @@ + status = "disabled"; + #address-cells = <1>; #size-cells = <0>; - }; - ++ }; ++ + spi2: spi@01c17000 { + compatible = "allwinner,sun4i-a10-spi"; + reg = <0x01c17000 0x1000>; @@ -67,11 +67,6 @@ index f6f41d6..157bc09 100644 + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; -+ }; -+ + }; + intc: interrupt-controller@01c20400 { - compatible = "allwinner,sun4i-ic"; - reg = <0x01c20400 0x400>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/145-3-dt-sun5i-add-a13-spi.patch b/target/linux/sunxi/patches-3.14/145-3-dt-sun5i-add-a13-spi.patch index 75cbcee..7558d56 100644 --- a/target/linux/sunxi/patches-3.14/145-3-dt-sun5i-add-a13-spi.patch +++ b/target/linux/sunxi/patches-3.14/145-3-dt-sun5i-add-a13-spi.patch @@ -11,8 +11,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun5i-a13.dtsi | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 24cd86cb..7102d12 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -298,6 +298,39 @@ @@ -55,6 +53,3 @@ index 24cd86cb..7102d12 100644 intc: interrupt-controller@01c20400 { compatible = "allwinner,sun4i-ic"; reg = <0x01c20400 0x400>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/146-1-spi-add-a31-spi.patch b/target/linux/sunxi/patches-3.14/146-1-spi-add-a31-spi.patch index 3d52020..761ecc1 100644 --- a/target/linux/sunxi/patches-3.14/146-1-spi-add-a31-spi.patch +++ b/target/linux/sunxi/patches-3.14/146-1-spi-add-a31-spi.patch @@ -19,9 +19,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> create mode 100644 Documentation/devicetree/bindings/spi/spi-sun6i.txt create mode 100644 drivers/spi/spi-sun6i.c -diff --git a/Documentation/devicetree/bindings/spi/spi-sun6i.txt b/Documentation/devicetree/bindings/spi/spi-sun6i.txt -new file mode 100644 -index 0000000..21de73d --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun6i.txt @@ -0,0 +1,24 @@ @@ -49,11 +46,9 @@ index 0000000..21de73d + clock-names = "ahb", "mod"; + resets = <&ahb1_rst 21>; +}; -diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 581ee2a..58530d3 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig -@@ -446,6 +446,12 @@ config SPI_SIRF +@@ -455,6 +455,12 @@ config SPI_SIRF help SPI driver for CSR SiRFprimaII SoCs @@ -66,11 +61,9 @@ index 581ee2a..58530d3 100644 config SPI_MXS tristate "Freescale MXS SPI controller" depends on ARCH_MXS -diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile -index 95af48d..13b6ccf9 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile -@@ -70,6 +70,7 @@ obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hspi.o +@@ -71,6 +71,7 @@ obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hsp obj-$(CONFIG_SPI_SH_MSIOF) += spi-sh-msiof.o obj-$(CONFIG_SPI_SH_SCI) += spi-sh-sci.o obj-$(CONFIG_SPI_SIRF) += spi-sirf.o @@ -78,9 +71,6 @@ index 95af48d..13b6ccf9 100644 obj-$(CONFIG_SPI_TEGRA114) += spi-tegra114.o obj-$(CONFIG_SPI_TEGRA20_SFLASH) += spi-tegra20-sflash.o obj-$(CONFIG_SPI_TEGRA20_SLINK) += spi-tegra20-slink.o -diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c -new file mode 100644 -index 0000000..94d38d0 --- /dev/null +++ b/drivers/spi/spi-sun6i.c @@ -0,0 +1,483 @@ @@ -567,6 +557,3 @@ index 0000000..94d38d0 +MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>"); +MODULE_DESCRIPTION("Allwinner A31 SPI controller driver"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/146-2-spi-add-a10-spi.patch b/target/linux/sunxi/patches-3.14/146-2-spi-add-a10-spi.patch index 38461d4..483d216 100644 --- a/target/linux/sunxi/patches-3.14/146-2-spi-add-a10-spi.patch +++ b/target/linux/sunxi/patches-3.14/146-2-spi-add-a10-spi.patch @@ -24,9 +24,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> create mode 100644 Documentation/devicetree/bindings/spi/spi-sun4i.txt create mode 100644 drivers/spi/spi-sun4i.c -diff --git a/Documentation/devicetree/bindings/spi/spi-sun4i.txt b/Documentation/devicetree/bindings/spi/spi-sun4i.txt -new file mode 100644 -index 0000000..de827f5 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-sun4i.txt @@ -0,0 +1,24 @@ @@ -54,11 +51,9 @@ index 0000000..de827f5 + #address-cells = <1>; + #size-cells = <0>; +}; -diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig -index 58530d3..78adfae 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig -@@ -446,6 +446,12 @@ config SPI_SIRF +@@ -455,6 +455,12 @@ config SPI_SIRF help SPI driver for CSR SiRFprimaII SoCs @@ -71,11 +66,9 @@ index 58530d3..78adfae 100644 config SPI_SUN6I tristate "Allwinner A31 SPI controller" depends on ARCH_SUNXI || COMPILE_TEST -diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile -index 13b6ccf9..65f4993 100644 --- a/drivers/spi/Makefile +++ b/drivers/spi/Makefile -@@ -70,6 +70,7 @@ obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hspi.o +@@ -71,6 +71,7 @@ obj-$(CONFIG_SPI_SH_HSPI) += spi-sh-hsp obj-$(CONFIG_SPI_SH_MSIOF) += spi-sh-msiof.o obj-$(CONFIG_SPI_SH_SCI) += spi-sh-sci.o obj-$(CONFIG_SPI_SIRF) += spi-sirf.o @@ -83,9 +76,6 @@ index 13b6ccf9..65f4993 100644 obj-$(CONFIG_SPI_SUN6I) += spi-sun6i.o obj-$(CONFIG_SPI_TEGRA114) += spi-tegra114.o obj-$(CONFIG_SPI_TEGRA20_SFLASH) += spi-tegra20-sflash.o -diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c -new file mode 100644 -index 0000000..3f82705 --- /dev/null +++ b/drivers/spi/spi-sun4i.c @@ -0,0 +1,477 @@ @@ -566,6 +556,3 @@ index 0000000..3f82705 +MODULE_AUTHOR("Maxime Ripard <maxime.ripard@free-electrons.com>"); +MODULE_DESCRIPTION("Allwinner A1X/A20 SPI controller driver"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/147-sun6i-enable-spi-in-defconfig.patch b/target/linux/sunxi/patches-3.14/147-sun6i-enable-spi-in-defconfig.patch index 2eac6a4..6f2dbe5 100644 --- a/target/linux/sunxi/patches-3.14/147-sun6i-enable-spi-in-defconfig.patch +++ b/target/linux/sunxi/patches-3.14/147-sun6i-enable-spi-in-defconfig.patch @@ -8,8 +8,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/configs/sunxi_defconfig | 3 +++ 1 file changed, 3 insertions(+) -diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig -index 3e2259b..b5df4a5 100644 --- a/arch/arm/configs/sunxi_defconfig +++ b/arch/arm/configs/sunxi_defconfig @@ -24,6 +24,7 @@ CONFIG_IP_PNP_BOOTP=y @@ -29,6 +27,3 @@ index 3e2259b..b5df4a5 100644 CONFIG_GPIO_SYSFS=y # CONFIG_HWMON is not set CONFIG_WATCHDOG=y --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/148-dt-sun7i-add-spi-muxing.patch b/target/linux/sunxi/patches-3.14/148-dt-sun7i-add-spi-muxing.patch index f554267..0c78fa4 100644 --- a/target/linux/sunxi/patches-3.14/148-dt-sun7i-add-spi-muxing.patch +++ b/target/linux/sunxi/patches-3.14/148-dt-sun7i-add-spi-muxing.patch @@ -8,8 +8,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 0f0ee58..6161fd8 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -571,6 +571,20 @@ @@ -33,6 +31,3 @@ index 0f0ee58..6161fd8 100644 }; timer@01c20c00 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/149-dt-sun7i-add-spi-on-olinuxinom.patch b/target/linux/sunxi/patches-3.14/149-dt-sun7i-add-spi-on-olinuxinom.patch index e814af5..cbcfea7 100644 --- a/target/linux/sunxi/patches-3.14/149-dt-sun7i-add-spi-on-olinuxinom.patch +++ b/target/linux/sunxi/patches-3.14/149-dt-sun7i-add-spi-on-olinuxinom.patch @@ -12,8 +12,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index b02a796..9d98316 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -18,7 +18,24 @@ @@ -41,6 +39,3 @@ index b02a796..9d98316 100644 pinctrl@01c20800 { led_pins_olinuxino: led_pins@0 { allwinner,pins = "PH2"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/150-dt-sun4i-add-ahci.patch b/target/linux/sunxi/patches-3.14/150-dt-sun4i-add-ahci.patch index f82261d..6c10a98 100644 --- a/target/linux/sunxi/patches-3.14/150-dt-sun4i-add-ahci.patch +++ b/target/linux/sunxi/patches-3.14/150-dt-sun4i-add-ahci.patch @@ -15,8 +15,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10.dtsi | 8 ++++++++ 3 files changed, 22 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10-a1000.dts b/arch/arm/boot/dts/sun4i-a10-a1000.dts -index cbd2e13..d6ec839 100644 --- a/arch/arm/boot/dts/sun4i-a10-a1000.dts +++ b/arch/arm/boot/dts/sun4i-a10-a1000.dts @@ -35,6 +35,10 @@ @@ -30,8 +28,6 @@ index cbd2e13..d6ec839 100644 pinctrl@01c20800 { emac_power_pin_a1000: emac_power_pin@0 { allwinner,pins = "PH15"; -diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -index b139ee6..20407ac 100644 --- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts +++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts @@ -12,6 +12,7 @@ @@ -63,8 +59,6 @@ index b139ee6..20407ac 100644 + status = "okay"; + }; }; -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 157bc09..18e09b41 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -388,6 +388,14 @@ @@ -82,6 +76,3 @@ index 157bc09..18e09b41 100644 spi3: spi@01c1f000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c1f000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/151-dt-sun7i-add-ahci.patch b/target/linux/sunxi/patches-3.14/151-dt-sun7i-add-ahci.patch index d4685d9..2872202 100644 --- a/target/linux/sunxi/patches-3.14/151-dt-sun7i-add-ahci.patch +++ b/target/linux/sunxi/patches-3.14/151-dt-sun7i-add-ahci.patch @@ -16,8 +16,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 8 ++++++++ 4 files changed, 47 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index 7bf4935..4bed115 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts @@ -13,12 +13,18 @@ @@ -48,8 +46,6 @@ index 7bf4935..4bed115 100644 + status = "okay"; + }; }; -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 025ce52..ef5fed8 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts @@ -13,13 +13,26 @@ @@ -79,7 +75,7 @@ index 025ce52..ef5fed8 100644 led_pins_cubietruck: led_pins@0 { allwinner,pins = "PH7", "PH11", "PH20", "PH21"; allwinner,function = "gpio_out"; -@@ -90,4 +103,10 @@ +@@ -86,4 +99,10 @@ gpios = <&pio 7 7 0>; }; }; @@ -90,8 +86,6 @@ index 025ce52..ef5fed8 100644 + status = "okay"; + }; }; -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index 9d98316..c9b0f37 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -13,6 +13,7 @@ @@ -123,8 +117,6 @@ index 9d98316..c9b0f37 100644 + status = "okay"; + }; }; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 6161fd8..864b7c6 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -450,6 +450,14 @@ @@ -142,6 +134,3 @@ index 6161fd8..864b7c6 100644 spi3: spi@01c1f000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c1f000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/155-wdt-add-new-compats.patch b/target/linux/sunxi/patches-3.14/155-wdt-add-new-compats.patch index 1635025..75c444d 100644 --- a/target/linux/sunxi/patches-3.14/155-wdt-add-new-compats.patch +++ b/target/linux/sunxi/patches-3.14/155-wdt-add-new-compats.patch @@ -14,8 +14,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> drivers/watchdog/sunxi_wdt.c | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) -diff --git a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt -index e39cb26..6e8c937 100644 --- a/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt +++ b/Documentation/devicetree/bindings/watchdog/sunxi-wdt.txt @@ -2,13 +2,14 @@ Allwinner SoCs Watchdog timer @@ -36,11 +34,9 @@ index e39cb26..6e8c937 100644 + compatible = "allwinner,sun4i-a10-wdt"; reg = <0x01c20c90 0x10>; }; -diff --git a/drivers/watchdog/sunxi_wdt.c b/drivers/watchdog/sunxi_wdt.c -index 76332d89..7c8923d 100644 --- a/drivers/watchdog/sunxi_wdt.c +++ b/drivers/watchdog/sunxi_wdt.c -@@ -206,6 +206,7 @@ static void sunxi_wdt_shutdown(struct platform_device *pdev) +@@ -206,6 +206,7 @@ static void sunxi_wdt_shutdown(struct pl static const struct of_device_id sunxi_wdt_dt_ids[] = { { .compatible = "allwinner,sun4i-wdt" }, @@ -48,6 +44,3 @@ index 76332d89..7c8923d 100644 { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, sunxi_wdt_dt_ids); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/156-dt-sunxi-update-wdt-compats.patch b/target/linux/sunxi/patches-3.14/156-dt-sunxi-update-wdt-compats.patch index 6ac1a7e..235550b 100644 --- a/target/linux/sunxi/patches-3.14/156-dt-sunxi-update-wdt-compats.patch +++ b/target/linux/sunxi/patches-3.14/156-dt-sunxi-update-wdt-compats.patch @@ -16,11 +16,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 3ce650b..4b90a18 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -597,7 +597,7 @@ +@@ -487,7 +487,7 @@ }; wdt: watchdog@01c20c90 { @@ -29,11 +27,9 @@ index 3ce650b..4b90a18 100644 reg = <0x01c20c90 0x10>; }; -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index 1795c26..45300a6 100644 --- a/arch/arm/boot/dts/sun5i-a10s.dtsi +++ b/arch/arm/boot/dts/sun5i-a10s.dtsi -@@ -508,7 +508,7 @@ +@@ -392,7 +392,7 @@ }; wdt: watchdog@01c20c90 { @@ -42,11 +38,9 @@ index 1795c26..45300a6 100644 reg = <0x01c20c90 0x10>; }; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 8bc8e14..280ffee 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi -@@ -454,7 +454,7 @@ +@@ -393,7 +393,7 @@ }; wdt: watchdog@01c20c90 { @@ -55,8 +49,6 @@ index 8bc8e14..280ffee 100644 reg = <0x01c20c90 0x10>; }; -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index e4267bd..8441733 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi @@ -289,7 +289,7 @@ @@ -68,11 +60,9 @@ index e4267bd..8441733 100644 reg = <0x01c20ca0 0x20>; }; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 30b9aba..4981f5e 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -725,7 +725,7 @@ +@@ -608,7 +608,7 @@ }; wdt: watchdog@01c20c90 { @@ -81,6 +71,3 @@ index 30b9aba..4981f5e 100644 reg = <0x01c20c90 0x10>; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/160-dt-sun4i-add-usb-host-bindings.patch b/target/linux/sunxi/patches-3.14/160-dt-sun4i-add-usb-host-bindings.patch index 9ca7345..f1853df 100644 --- a/target/linux/sunxi/patches-3.14/160-dt-sun4i-add-usb-host-bindings.patch +++ b/target/linux/sunxi/patches-3.14/160-dt-sun4i-add-usb-host-bindings.patch @@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10.dtsi | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 18e09b41..27dc6ee 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -377,6 +377,38 @@ @@ -81,6 +79,3 @@ index 18e09b41..27dc6ee 100644 spi3: spi@01c1f000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c1f000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/161-dt-sun5i-add-usb-host-bindings.patch b/target/linux/sunxi/patches-3.14/161-dt-sun5i-add-usb-host-bindings.patch index 1beb5e1..7b01495 100644 --- a/target/linux/sunxi/patches-3.14/161-dt-sun5i-add-usb-host-bindings.patch +++ b/target/linux/sunxi/patches-3.14/161-dt-sun5i-add-usb-host-bindings.patch @@ -12,10 +12,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun5i-a13.dtsi | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index b2cb5dc..f34e0d8 100644 -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 7102d12..0e9c239 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -320,6 +320,38 @@ @@ -57,6 +53,3 @@ index 7102d12..0e9c239 100644 spi2: spi@01c17000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c17000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/162-dt-sun7i-add-usb-host-bindings.patch b/target/linux/sunxi/patches-3.14/162-dt-sun7i-add-usb-host-bindings.patch index b2b9d33..a8d0f17 100644 --- a/target/linux/sunxi/patches-3.14/162-dt-sun7i-add-usb-host-bindings.patch +++ b/target/linux/sunxi/patches-3.14/162-dt-sun7i-add-usb-host-bindings.patch @@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 52 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 864b7c6..4cc2f5f 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -439,6 +439,38 @@ @@ -81,6 +79,3 @@ index 864b7c6..4cc2f5f 100644 spi3: spi@01c1f000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c1f000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/163-dt-sun4i-add-usb-host-to-boards.patch b/target/linux/sunxi/patches-3.14/163-dt-sun4i-add-usb-host-to-boards.patch index 220bed6..ce78cb7 100644 --- a/target/linux/sunxi/patches-3.14/163-dt-sun4i-add-usb-host-to-boards.patch +++ b/target/linux/sunxi/patches-3.14/163-dt-sun4i-add-usb-host-to-boards.patch @@ -19,8 +19,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10-hackberry.dts | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10-hackberry.dts b/arch/arm/boot/dts/sun4i-a10-hackberry.dts -index 6692d336..d7c17e4 100644 --- a/arch/arm/boot/dts/sun4i-a10-hackberry.dts +++ b/arch/arm/boot/dts/sun4i-a10-hackberry.dts @@ -13,6 +13,7 @@ @@ -74,9 +72,9 @@ index 6692d336..d7c17e4 100644 }; uart0: serial@01c28000 { -@@ -62,4 +92,14 @@ - enable-active-high; - gpio = <&pio 7 19 0>; +@@ -66,4 +96,14 @@ + gpio = <&pio 7 19 0>; + }; }; + + reg_usb1_vbus: usb1-vbus { @@ -89,23 +87,6 @@ index 6692d336..d7c17e4 100644 + status = "okay"; + }; }; --- -2.0.3 - -From dbf6ffa0b3832d91c2509e6753f485cedc791051 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Sat, 11 Jan 2014 05:15:06 +0100 -Subject: [PATCH] ARM: sun4i: dt: Add USB host nodes to mini-xplus dts - -Add nodes for the usb-phy and ehci- and ohci-usb-host controllers. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun4i-a10-mini-xplus.dts | 31 ++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts -index 70b3323..dd84a9e3 100644 --- a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts +++ b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts @@ -13,16 +13,47 @@ @@ -156,21 +137,6 @@ index 70b3323..dd84a9e3 100644 + status = "okay"; + }; }; --- -2.0.3 - -From 528808ae38fee761be9f3451f51b457cb56d33ee Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 17 Feb 2014 20:41:04 +0100 -Subject: [PATCH] ARM: sun4i: dt: Add USB host nodes to pcduino.dts - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun4i-a10-pcduino.dts | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - -diff --git a/arch/arm/boot/dts/sun4i-a10-pcduino.dts b/arch/arm/boot/dts/sun4i-a10-pcduino.dts -index f5692a3..255b47e 100644 --- a/arch/arm/boot/dts/sun4i-a10-pcduino.dts +++ b/arch/arm/boot/dts/sun4i-a10-pcduino.dts @@ -12,6 +12,7 @@ @@ -223,24 +189,6 @@ index f5692a3..255b47e 100644 + status = "okay"; + }; }; --- -2.0.3 - -From 58b778ce8cbc6fdb1fda5a6998fdd114a2b77cc9 Mon Sep 17 00:00:00 2001 -From: Roman Byshko <rbyshko@gmail.com> -Date: Wed, 18 Sep 2013 22:45:06 +0200 -Subject: [PATCH] ARM: sun4i: dt: Add USB host nodes to cubieboard dts - -Add nodes for the usb-phy and ehci- and ohci-usb-host controllers. - -Signed-off-by: Roman Byshko <rbyshko@gmail.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun4i-a10-cubieboard.dts | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -index 20407ac..4684cbe 100644 --- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts +++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts @@ -34,11 +34,33 @@ @@ -290,6 +238,3 @@ index 20407ac..4684cbe 100644 + status = "okay"; + }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/164-dt-sun5i-add-usb-host-to-boards.patch b/target/linux/sunxi/patches-3.14/164-dt-sun5i-add-usb-host-to-boards.patch index 203b185..9776f5b 100644 --- a/target/linux/sunxi/patches-3.14/164-dt-sun5i-add-usb-host-to-boards.patch +++ b/target/linux/sunxi/patches-3.14/164-dt-sun5i-add-usb-host-to-boards.patch @@ -11,8 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun5i-a13-olinuxino.dts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -index a4ba5ff..7a9187b 100644 --- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts +++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts @@ -13,12 +13,26 @@ @@ -67,23 +65,6 @@ index a4ba5ff..7a9187b 100644 + status = "okay"; + }; }; --- -2.0.3 - -From a3396ca280066e9a1ee74b36f5e376c945382bff Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Sat, 11 Jan 2014 05:21:43 +0100 -Subject: [PATCH] ARM: sun5i: dt: Add USB host nodes to a13-olinuxino-micro - -Add nodes for the usb-phy and ehci- and ohci-usb-host controllers. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts | 27 +++++++++++++++++++++++++ - 1 file changed, 27 insertions(+) - -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts -index fe2ce0a..11169d5 100644 --- a/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts @@ -14,12 +14,26 @@ @@ -138,6 +119,3 @@ index fe2ce0a..11169d5 100644 + status = "okay"; + }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/165-dt-sun7i-add-usb-host-to-boards.patch b/target/linux/sunxi/patches-3.14/165-dt-sun7i-add-usb-host-to-boards.patch index d720f64..00d28e7 100644 --- a/target/linux/sunxi/patches-3.14/165-dt-sun7i-add-usb-host-to-boards.patch +++ b/target/linux/sunxi/patches-3.14/165-dt-sun7i-add-usb-host-to-boards.patch @@ -10,8 +10,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index ef5fed8..cb25d3c 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts @@ -20,11 +20,33 @@ @@ -48,7 +46,7 @@ index ef5fed8..cb25d3c 100644 pinctrl@01c20800 { ahci_pwr_pin_cubietruck: ahci_pwr_pin@1 { allwinner,pins = "PH12"; -@@ -109,4 +131,12 @@ +@@ -105,4 +127,12 @@ gpio = <&pio 7 12 0>; status = "okay"; }; @@ -61,24 +59,6 @@ index ef5fed8..cb25d3c 100644 + status = "okay"; + }; }; --- -2.0.3 - -From 8ce7da7026a24fe522abb3d7798cea12358946c0 Mon Sep 17 00:00:00 2001 -From: Roman Byshko <rbyshko@gmail.com> -Date: Thu, 19 Sep 2013 21:29:45 +0200 -Subject: [PATCH] ARM: sun7i: dt: Add USB host nodes to cubieboard2 dts - -Add nodes for the usb-phy and ehci- and ohci-usb-host controllers. - -Signed-off-by: Roman Byshko <rbyshko@gmail.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun7i-a20-cubieboard2.dts | 30 +++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index 4bed115..68de89f 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts @@ -20,11 +20,33 @@ @@ -128,23 +108,6 @@ index 4bed115..68de89f 100644 + status = "okay"; + }; }; --- -2.0.3 - -From e0e1a55781f7ba89a776456c8764782165e5efcc Mon Sep 17 00:00:00 2001 -From: Zalan Blenessy <zalan.blenessy@gmail.com> -Date: Sun, 22 Dec 2013 17:08:10 +0100 -Subject: [PATCH] ARM: sun7i: dt: Add USB host nodes to a20-olinuxino-micro dts - -Add nodes for the usb-phy and ehci- and ohci-usb-host controllers. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 30 +++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index c9b0f37..eeadf76 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -31,6 +31,20 @@ @@ -196,6 +159,3 @@ index c9b0f37..eeadf76 100644 + status = "okay"; + }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/170-input-add-sun4i-ts-driver.patch b/target/linux/sunxi/patches-3.14/170-input-add-sun4i-ts-driver.patch index d97b02a..bde35b1 100644 --- a/target/linux/sunxi/patches-3.14/170-input-add-sun4i-ts-driver.patch +++ b/target/linux/sunxi/patches-3.14/170-input-add-sun4i-ts-driver.patch @@ -27,9 +27,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> create mode 100644 Documentation/devicetree/bindings/input/touchscreen/sun4i.txt create mode 100644 drivers/input/touchscreen/sun4i-ts.c -diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt -new file mode 100644 -index 0000000..e45927e --- /dev/null +++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt @@ -0,0 +1,15 @@ @@ -48,8 +45,6 @@ index 0000000..e45927e + reg = <0x01c25000 0x100>; + interrupts = <29>; + }; -diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig -index 07e9e82..f4c5ca3 100644 --- a/drivers/input/touchscreen/Kconfig +++ b/drivers/input/touchscreen/Kconfig @@ -906,6 +906,16 @@ config TOUCHSCREEN_STMPE @@ -69,11 +64,9 @@ index 07e9e82..f4c5ca3 100644 config TOUCHSCREEN_SUR40 tristate "Samsung SUR40 (Surface 2.0/PixelSense) touchscreen" depends on USB -diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile -index 62801f2..c8f7375 100644 --- a/drivers/input/touchscreen/Makefile +++ b/drivers/input/touchscreen/Makefile -@@ -54,6 +54,7 @@ obj-$(CONFIG_TOUCHSCREEN_PIXCIR) += pixcir_i2c_ts.o +@@ -54,6 +54,7 @@ obj-$(CONFIG_TOUCHSCREEN_PIXCIR) += pixc obj-$(CONFIG_TOUCHSCREEN_S3C2410) += s3c2410_ts.o obj-$(CONFIG_TOUCHSCREEN_ST1232) += st1232.o obj-$(CONFIG_TOUCHSCREEN_STMPE) += stmpe-ts.o @@ -81,9 +74,6 @@ index 62801f2..c8f7375 100644 obj-$(CONFIG_TOUCHSCREEN_SUR40) += sur40.o obj-$(CONFIG_TOUCHSCREEN_TI_AM335X_TSC) += ti_am335x_tsc.o obj-$(CONFIG_TOUCHSCREEN_TNETV107X) += tnetv107x-ts.o -diff --git a/drivers/input/touchscreen/sun4i-ts.c b/drivers/input/touchscreen/sun4i-ts.c -new file mode 100644 -index 0000000..5945219 --- /dev/null +++ b/drivers/input/touchscreen/sun4i-ts.c @@ -0,0 +1,262 @@ @@ -349,6 +339,3 @@ index 0000000..5945219 +MODULE_DESCRIPTION("Allwinner sun4i resistive touchscreen controller driver"); +MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/171-input-add-temp-sensor-support.patch b/target/linux/sunxi/patches-3.14/171-input-add-temp-sensor-support.patch index 3d0bdad..bad8df7 100644 --- a/target/linux/sunxi/patches-3.14/171-input-add-temp-sensor-support.patch +++ b/target/linux/sunxi/patches-3.14/171-input-add-temp-sensor-support.patch @@ -17,8 +17,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> drivers/input/touchscreen/sun4i-ts.c | 140 ++++++++++++++++----- 2 files changed, 114 insertions(+), 31 deletions(-) -diff --git a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt -index e45927e..6bac67b 100644 --- a/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt +++ b/Documentation/devicetree/bindings/input/touchscreen/sun4i.txt @@ -6,10 +6,15 @@ Required properties: @@ -37,8 +35,6 @@ index e45927e..6bac67b 100644 interrupts = <29>; + allwinner,ts-attached; }; -diff --git a/drivers/input/touchscreen/sun4i-ts.c b/drivers/input/touchscreen/sun4i-ts.c -index 5945219..16cbb01 100644 --- a/drivers/input/touchscreen/sun4i-ts.c +++ b/drivers/input/touchscreen/sun4i-ts.c @@ -3,6 +3,9 @@ @@ -77,7 +73,7 @@ index 5945219..16cbb01 100644 if (reg_val & FIFO_DATA_PENDING) { x = readl(ts->base + TP_DATA); -@@ -139,6 +141,20 @@ static irqreturn_t sun4i_ts_irq(int irq, void *dev_id) +@@ -139,6 +141,20 @@ static irqreturn_t sun4i_ts_irq(int irq, input_report_key(ts->input, BTN_TOUCH, 0); input_sync(ts->input); } @@ -98,7 +94,7 @@ index 5945219..16cbb01 100644 writel(reg_val, ts->base + TP_INT_FIFOS); -@@ -149,9 +165,9 @@ static int sun4i_ts_open(struct input_dev *dev) +@@ -149,9 +165,9 @@ static int sun4i_ts_open(struct input_de { struct sun4i_ts_data *ts = input_get_drvdata(dev); @@ -111,7 +107,7 @@ index 5945219..16cbb01 100644 return 0; } -@@ -160,15 +176,48 @@ static void sun4i_ts_close(struct input_dev *dev) +@@ -160,15 +176,48 @@ static void sun4i_ts_close(struct input_ { struct sun4i_ts_data *ts = input_get_drvdata(dev); @@ -162,11 +158,12 @@ index 5945219..16cbb01 100644 ts = devm_kzalloc(dev, sizeof(struct sun4i_ts_data), GFP_KERNEL); if (!ts) -@@ -176,24 +225,27 @@ static int sun4i_ts_probe(struct platform_device *pdev) +@@ -176,24 +225,27 @@ static int sun4i_ts_probe(struct platfor ts->dev = dev; ts->ignore_fifo_data = true; -- ++ ts->temp_data = -1; + - ts->input = devm_input_allocate_device(dev); - if (!ts->input) - return -ENOMEM; @@ -184,8 +181,6 @@ index 5945219..16cbb01 100644 - input_set_abs_params(ts->input, ABS_X, 0, 4095, 0, 0); - input_set_abs_params(ts->input, ABS_Y, 0, 4095, 0, 0); - input_set_drvdata(ts->input, ts); -+ ts->temp_data = -1; -+ + if (ts_attached) { + ts->input = devm_input_allocate_device(dev); + if (!ts->input) @@ -208,7 +203,7 @@ index 5945219..16cbb01 100644 ts->base = devm_ioremap_resource(dev, platform_get_resource(pdev, IORESOURCE_MEM, 0)); -@@ -232,14 +284,39 @@ static int sun4i_ts_probe(struct platform_device *pdev) +@@ -232,14 +284,39 @@ static int sun4i_ts_probe(struct platfor writel(STYLUS_UP_DEBOUN(5) | STYLUS_UP_DEBOUN_EN(1) | TP_MODE_EN(1), ts->base + TP_CTRL1); @@ -251,7 +246,7 @@ index 5945219..16cbb01 100644 static const struct of_device_id sun4i_ts_of_match[] = { { .compatible = "allwinner,sun4i-ts", }, { /* sentinel */ } -@@ -253,6 +330,7 @@ static struct platform_driver sun4i_ts_driver = { +@@ -253,6 +330,7 @@ static struct platform_driver sun4i_ts_d .of_match_table = of_match_ptr(sun4i_ts_of_match), }, .probe = sun4i_ts_probe, @@ -259,6 +254,3 @@ index 5945219..16cbb01 100644 }; module_platform_driver(sun4i_ts_driver); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/172-input-add-lradc-keys-driver.patch b/target/linux/sunxi/patches-3.14/172-input-add-lradc-keys-driver.patch index ee8f806..859a7f1 100644 --- a/target/linux/sunxi/patches-3.14/172-input-add-lradc-keys-driver.patch +++ b/target/linux/sunxi/patches-3.14/172-input-add-lradc-keys-driver.patch @@ -24,9 +24,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> create mode 100644 Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt create mode 100644 drivers/input/keyboard/sun4i-lradc-keys.c -diff --git a/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt -new file mode 100644 -index 0000000..7801264 --- /dev/null +++ b/Documentation/devicetree/bindings/input/sun4i-lradc-keys.txt @@ -0,0 +1,22 @@ @@ -52,8 +49,6 @@ index 0000000..7801264 + linux,chan0-keycodes = <KEY_VOLUMEUP KEY_VOLUMEDOWN + KEY_MENU KEY_ENTER KEY_HOME>; + }; -diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig -index a673c9f..d8a51cd 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -544,6 +544,16 @@ config KEYBOARD_STMPE @@ -73,11 +68,9 @@ index a673c9f..d8a51cd 100644 config KEYBOARD_DAVINCI tristate "TI DaVinci Key Scan" depends on ARCH_DAVINCI_DM365 -diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile -index a699b61..f3265bd 100644 --- a/drivers/input/keyboard/Makefile +++ b/drivers/input/keyboard/Makefile -@@ -50,6 +50,7 @@ obj-$(CONFIG_KEYBOARD_SH_KEYSC) += sh_keysc.o +@@ -50,6 +50,7 @@ obj-$(CONFIG_KEYBOARD_SH_KEYSC) += sh_k obj-$(CONFIG_KEYBOARD_SPEAR) += spear-keyboard.o obj-$(CONFIG_KEYBOARD_STMPE) += stmpe-keypad.o obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o @@ -85,9 +78,6 @@ index a699b61..f3265bd 100644 obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o obj-$(CONFIG_KEYBOARD_TC3589X) += tc3589x-keypad.o obj-$(CONFIG_KEYBOARD_TEGRA) += tegra-kbc.o -diff --git a/drivers/input/keyboard/sun4i-lradc-keys.c b/drivers/input/keyboard/sun4i-lradc-keys.c -new file mode 100644 -index 0000000..5c55e17 --- /dev/null +++ b/drivers/input/keyboard/sun4i-lradc-keys.c @@ -0,0 +1,243 @@ @@ -334,6 +324,3 @@ index 0000000..5c55e17 +MODULE_DESCRIPTION("Allwinner sun4i low res adc attached tablet keys driver"); +MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/173-1-dt-sun4i-add-lradc-node.patch b/target/linux/sunxi/patches-3.14/173-1-dt-sun4i-add-lradc-node.patch index 1c7bc81..544528d 100644 --- a/target/linux/sunxi/patches-3.14/173-1-dt-sun4i-add-lradc-node.patch +++ b/target/linux/sunxi/patches-3.14/173-1-dt-sun4i-add-lradc-node.patch @@ -8,11 +8,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 7014518..3ce650b 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -607,6 +607,13 @@ +@@ -549,6 +549,13 @@ interrupts = <24>; }; @@ -26,6 +24,3 @@ index 7014518..3ce650b 100644 sid: eeprom@01c23800 { compatible = "allwinner,sun4i-sid"; reg = <0x01c23800 0x10>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/173-2-dt-sun5i-add-lradc-node.patch b/target/linux/sunxi/patches-3.14/173-2-dt-sun5i-add-lradc-node.patch index fbb0a32..6fa1c2b 100644 --- a/target/linux/sunxi/patches-3.14/173-2-dt-sun5i-add-lradc-node.patch +++ b/target/linux/sunxi/patches-3.14/173-2-dt-sun5i-add-lradc-node.patch @@ -11,12 +11,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun5i-a13.dtsi | 7 +++++++ 4 files changed, 30 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts b/arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts -index 5bc25c7..93c6778 100644 -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index 8ba1ed7..1795c26 100644 -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -index 177196c..c2c455d 100644 --- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts +++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts @@ -14,6 +14,7 @@ @@ -27,7 +21,7 @@ index 177196c..c2c455d 100644 / { model = "Olimex A13-Olinuxino"; -@@ -64,6 +65,13 @@ +@@ -49,6 +50,13 @@ }; }; @@ -41,11 +35,9 @@ index 177196c..c2c455d 100644 uart1: serial@01c28400 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins_b>; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 6fc84a4..8bc8e14 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi -@@ -458,6 +458,13 @@ +@@ -429,6 +429,13 @@ reg = <0x01c20c90 0x10>; }; @@ -59,6 +51,3 @@ index 6fc84a4..8bc8e14 100644 sid: eeprom@01c23800 { compatible = "allwinner,sun4i-sid"; reg = <0x01c23800 0x10>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/173-3-dt-sun7i-add-lradc-node.patch b/target/linux/sunxi/patches-3.14/173-3-dt-sun7i-add-lradc-node.patch index 417dddc..44e9f53 100644 --- a/target/linux/sunxi/patches-3.14/173-3-dt-sun7i-add-lradc-node.patch +++ b/target/linux/sunxi/patches-3.14/173-3-dt-sun7i-add-lradc-node.patch @@ -9,8 +9,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 7 +++++++ 2 files changed, 16 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index 822cbe2..15f1f3f 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -14,6 +14,7 @@ @@ -21,7 +19,7 @@ index 822cbe2..15f1f3f 100644 / { model = "Olimex A20-Olinuxino Micro"; -@@ -96,6 +97,14 @@ +@@ -73,6 +74,14 @@ }; }; @@ -36,11 +34,9 @@ index 822cbe2..15f1f3f 100644 uart0: serial@01c28000 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pins_a>; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 1d9b314..0c57ac5 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -735,6 +735,13 @@ +@@ -670,6 +670,13 @@ interrupts = <0 24 4>; }; @@ -54,6 +50,3 @@ index 1d9b314..0c57ac5 100644 sid: eeprom@01c23800 { compatible = "allwinner,sun7i-a20-sid"; reg = <0x01c23800 0x200>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/175-reset-add-of_reset_control_get.patch b/target/linux/sunxi/patches-3.14/175-reset-add-of_reset_control_get.patch index 7bf9511..3b6db99 100644 --- a/target/linux/sunxi/patches-3.14/175-reset-add-of_reset_control_get.patch +++ b/target/linux/sunxi/patches-3.14/175-reset-add-of_reset_control_get.patch @@ -15,11 +15,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> include/linux/reset.h | 4 ++++ 2 files changed, 34 insertions(+), 9 deletions(-) -diff --git a/drivers/reset/core.c b/drivers/reset/core.c -index d1b6089..4f3dda7 100644 --- a/drivers/reset/core.c +++ b/drivers/reset/core.c -@@ -127,15 +127,16 @@ int reset_control_deassert(struct reset_control *rstc) +@@ -127,15 +127,16 @@ int reset_control_deassert(struct reset_ EXPORT_SYMBOL_GPL(reset_control_deassert); /** @@ -39,7 +37,7 @@ index d1b6089..4f3dda7 100644 { struct reset_control *rstc = ERR_PTR(-EPROBE_DEFER); struct reset_controller_dev *r, *rcdev; -@@ -144,13 +145,10 @@ struct reset_control *reset_control_get(struct device *dev, const char *id) +@@ -144,13 +145,10 @@ struct reset_control *reset_control_get( int rstc_id; int ret; @@ -55,7 +53,7 @@ index d1b6089..4f3dda7 100644 index, &args); if (ret) return ERR_PTR(ret); -@@ -185,12 +183,35 @@ struct reset_control *reset_control_get(struct device *dev, const char *id) +@@ -185,12 +183,35 @@ struct reset_control *reset_control_get( return ERR_PTR(-ENOMEM); } @@ -92,8 +90,6 @@ index d1b6089..4f3dda7 100644 EXPORT_SYMBOL_GPL(reset_control_get); /** -diff --git a/include/linux/reset.h b/include/linux/reset.h -index 6082247..a398025 100644 --- a/include/linux/reset.h +++ b/include/linux/reset.h @@ -1,6 +1,8 @@ @@ -105,7 +101,7 @@ index 6082247..a398025 100644 struct device; struct reset_control; -@@ -8,6 +10,8 @@ int reset_control_reset(struct reset_control *rstc); +@@ -8,6 +10,8 @@ int reset_control_reset(struct reset_con int reset_control_assert(struct reset_control *rstc); int reset_control_deassert(struct reset_control *rstc); @@ -114,6 +110,3 @@ index 6082247..a398025 100644 struct reset_control *reset_control_get(struct device *dev, const char *id); void reset_control_put(struct reset_control *rstc); struct reset_control *devm_reset_control_get(struct device *dev, const char *id); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/176-clk-sun5i-add-support-for-reset-ctrler.patch b/target/linux/sunxi/patches-3.14/176-clk-sun5i-add-support-for-reset-ctrler.patch index 6d322c7..3986d19 100644 --- a/target/linux/sunxi/patches-3.14/176-clk-sun5i-add-support-for-reset-ctrler.patch +++ b/target/linux/sunxi/patches-3.14/176-clk-sun5i-add-support-for-reset-ctrler.patch @@ -13,8 +13,6 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> drivers/clocksource/timer-sun5i.c | 6 ++++++ 2 files changed, 10 insertions(+) -diff --git a/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt b/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt -index 7c26154..27cfc7d 100644 --- a/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt +++ b/Documentation/devicetree/bindings/timer/allwinner,sun5i-a13-hstimer.txt @@ -9,6 +9,9 @@ Required properties: @@ -33,8 +31,6 @@ index 7c26154..27cfc7d 100644 clocks = <&ahb1_gates 19>; + resets = <&ahb1rst 19>; }; -diff --git a/drivers/clocksource/timer-sun5i.c b/drivers/clocksource/timer-sun5i.c -index deebcd6..0226844 100644 --- a/drivers/clocksource/timer-sun5i.c +++ b/drivers/clocksource/timer-sun5i.c @@ -16,6 +16,7 @@ @@ -53,7 +49,7 @@ index deebcd6..0226844 100644 unsigned long rate; struct clk *clk; int ret, irq; -@@ -162,6 +164,10 @@ static void __init sun5i_timer_init(struct device_node *node) +@@ -162,6 +164,10 @@ static void __init sun5i_timer_init(stru clk_prepare_enable(clk); rate = clk_get_rate(clk); @@ -64,6 +60,3 @@ index deebcd6..0226844 100644 writel(~0, timer_base + TIMER_INTVAL_LO_REG(1)); writel(TIMER_CTL_ENABLE | TIMER_CTL_RELOAD, timer_base + TIMER_CTL_REG(1)); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/180-clk-sunxi-add-clock-output-names-dt-prop-support.patch b/target/linux/sunxi/patches-3.14/180-clk-sunxi-add-clock-output-names-dt-prop-support.patch index 4f7d275..73caeb9 100644 --- a/target/linux/sunxi/patches-3.14/180-clk-sunxi-add-clock-output-names-dt-prop-support.patch +++ b/target/linux/sunxi/patches-3.14/180-clk-sunxi-add-clock-output-names-dt-prop-support.patch @@ -19,11 +19,9 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index abb6c5a..0ed9794 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -51,6 +51,8 @@ static void __init sun4i_osc_clk_setup(struct device_node *node) +@@ -51,6 +51,8 @@ static void __init sun4i_osc_clk_setup(s if (!gate) goto err_free_fixed; @@ -32,7 +30,7 @@ index abb6c5a..0ed9794 100644 /* set up gate and fixed rate properties */ gate->reg = of_iomap(node, 0); gate->bit_idx = SUNXI_OSC24M_GATE; -@@ -601,6 +603,8 @@ static void __init sunxi_mux_clk_setup(struct device_node *node, +@@ -601,6 +603,8 @@ static void __init sunxi_mux_clk_setup(s (parents[i] = of_clk_get_parent_name(node, i)) != NULL) i++; @@ -41,7 +39,7 @@ index abb6c5a..0ed9794 100644 clk = clk_register_mux(NULL, clk_name, parents, i, CLK_SET_RATE_NO_REPARENT, reg, data->shift, SUNXI_MUX_GATE_WIDTH, -@@ -660,6 +664,8 @@ static void __init sunxi_divider_clk_setup(struct device_node *node, +@@ -660,6 +664,8 @@ static void __init sunxi_divider_clk_set clk_parent = of_clk_get_parent_name(node, 0); @@ -50,6 +48,3 @@ index abb6c5a..0ed9794 100644 clk = clk_register_divider(NULL, clk_name, clk_parent, 0, reg, data->shift, data->width, data->pow ? CLK_DIVIDER_POWER_OF_TWO : 0, --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/181-clk-sunxi-add-names-for-pll56.patch b/target/linux/sunxi/patches-3.14/181-clk-sunxi-add-names-for-pll56.patch index 879462b..4229fa4 100644 --- a/target/linux/sunxi/patches-3.14/181-clk-sunxi-add-names-for-pll56.patch +++ b/target/linux/sunxi/patches-3.14/181-clk-sunxi-add-names-for-pll56.patch @@ -19,8 +19,6 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 0ed9794..7a2ed98 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c @@ -389,6 +389,7 @@ struct factors_data { @@ -31,7 +29,7 @@ index 0ed9794..7a2ed98 100644 }; static struct clk_factors_config sun4i_pll1_config = { -@@ -457,6 +458,14 @@ static const struct factors_data sun4i_pll5_data __initconst = { +@@ -457,6 +458,14 @@ static const struct factors_data sun4i_p .enable = 31, .table = &sun4i_pll5_config, .getter = sun4i_get_pll5_factors, @@ -46,7 +44,7 @@ index 0ed9794..7a2ed98 100644 }; static const struct factors_data sun4i_apb1_data __initconst = { -@@ -499,14 +508,14 @@ static struct clk * __init sunxi_factors_clk_setup(struct device_node *node, +@@ -499,14 +508,14 @@ static struct clk * __init sunxi_factors (parents[i] = of_clk_get_parent_name(node, i)) != NULL) i++; @@ -69,7 +67,7 @@ index 0ed9794..7a2ed98 100644 factors = kzalloc(sizeof(struct clk_factors), GFP_KERNEL); if (!factors) -@@ -838,7 +847,7 @@ static const struct divs_data pll5_divs_data __initconst = { +@@ -838,7 +847,7 @@ static const struct divs_data pll5_divs_ }; static const struct divs_data pll6_divs_data __initconst = { @@ -78,6 +76,3 @@ index 0ed9794..7a2ed98 100644 .div = { { .shift = 0, .table = pll6_sata_tbl, .gate = 14 }, /* M, SATA */ { .fixed = 2 }, /* P, other */ --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/182-clk-sunxi-add-support-for-usb-clockreg-reset.patch b/target/linux/sunxi/patches-3.14/182-clk-sunxi-add-support-for-usb-clockreg-reset.patch index 533b601..e897736 100644 --- a/target/linux/sunxi/patches-3.14/182-clk-sunxi-add-support-for-usb-clockreg-reset.patch +++ b/target/linux/sunxi/patches-3.14/182-clk-sunxi-add-support-for-usb-clockreg-reset.patch @@ -18,8 +18,6 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 736fb60..23beb6e 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c @@ -18,6 +18,7 @@ @@ -30,7 +28,7 @@ index 736fb60..23beb6e 100644 #include "clk-factors.h" -@@ -688,6 +689,59 @@ static void __init sunxi_divider_clk_setup(struct device_node *node, +@@ -688,6 +689,59 @@ static void __init sunxi_divider_clk_set /** @@ -90,7 +88,7 @@ index 736fb60..23beb6e 100644 * sunxi_gates_clk_setup() - Setup function for leaf gates on clocks */ -@@ -695,6 +749,7 @@ static void __init sunxi_divider_clk_setup(struct device_node *node, +@@ -695,6 +749,7 @@ static void __init sunxi_divider_clk_set struct gates_data { DECLARE_BITMAP(mask, SUNXI_GATES_MAX_SIZE); @@ -98,7 +96,7 @@ index 736fb60..23beb6e 100644 }; static const struct gates_data sun4i_axi_gates_data __initconst = { -@@ -765,6 +820,7 @@ static void __init sunxi_gates_clk_setup(struct device_node *node, +@@ -765,6 +820,7 @@ static void __init sunxi_gates_clk_setup struct gates_data *data) { struct clk_onecell_data *clk_data; @@ -106,7 +104,7 @@ index 736fb60..23beb6e 100644 const char *clk_parent; const char *clk_name; void *reg; -@@ -808,6 +864,21 @@ static void __init sunxi_gates_clk_setup(struct device_node *node, +@@ -808,6 +864,21 @@ static void __init sunxi_gates_clk_setup clk_data->clk_num = i; of_clk_add_provider(node, of_clk_src_onecell_get, clk_data); @@ -128,6 +126,3 @@ index 736fb60..23beb6e 100644 } --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/182-clk-sunxi-get-divs-parent-clockname.patch b/target/linux/sunxi/patches-3.14/182-clk-sunxi-get-divs-parent-clockname.patch index 53f2217..777dfde 100644 --- a/target/linux/sunxi/patches-3.14/182-clk-sunxi-get-divs-parent-clockname.patch +++ b/target/linux/sunxi/patches-3.14/182-clk-sunxi-get-divs-parent-clockname.patch @@ -19,11 +19,9 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 7a2ed98..736fb60 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -869,7 +869,7 @@ static void __init sunxi_divs_clk_setup(struct device_node *node, +@@ -940,7 +940,7 @@ static void __init sunxi_divs_clk_setup( struct divs_data *data) { struct clk_onecell_data *clk_data; @@ -32,7 +30,7 @@ index 7a2ed98..736fb60 100644 const char *clk_name; struct clk **clks, *pclk; struct clk_hw *gate_hw, *rate_hw; -@@ -883,6 +883,7 @@ static void __init sunxi_divs_clk_setup(struct device_node *node, +@@ -954,6 +954,7 @@ static void __init sunxi_divs_clk_setup( /* Set up factor clock that we will be dividing */ pclk = sunxi_factors_clk_setup(node, data->factors); @@ -40,6 +38,3 @@ index 7a2ed98..736fb60 100644 reg = of_iomap(node, 0); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/183-clk-sunxi-add-usb-clockreg-defs.patch b/target/linux/sunxi/patches-3.14/183-clk-sunxi-add-usb-clockreg-defs.patch index 07e8879..c79f803 100644 --- a/target/linux/sunxi/patches-3.14/183-clk-sunxi-add-usb-clockreg-defs.patch +++ b/target/linux/sunxi/patches-3.14/183-clk-sunxi-add-usb-clockreg-defs.patch @@ -18,8 +18,6 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) -diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt -index 0cf679b..ca2b692 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt @@ -37,6 +37,8 @@ Required properties: @@ -31,9 +29,9 @@ index 0cf679b..ca2b692 100644 Required properties for all clocks: - reg : shall be the control register address for the clock. -@@ -50,6 +52,9 @@ Required properties for all clocks: - If the clock module only has one output, the name shall be the - module name. +@@ -49,6 +51,9 @@ Required properties for all clocks: + Additionally, "allwinner,*-gates-clk" clocks require: + - clock-output-names : the corresponding gate names that the clock controls +And "allwinner,*-usb-clk" clocks also require: +- reset-cells : shall be set to 1 @@ -41,11 +39,9 @@ index 0cf679b..ca2b692 100644 Clock consumers should specify the desired clocks they use with a "clocks" phandle cell. Consumers that are using a gated clock should provide an additional ID in their clock property. This ID is the -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 23beb6e..a779c31 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -816,6 +816,16 @@ static const struct gates_data sun7i_a20_apb1_gates_data __initconst = { +@@ -816,6 +816,16 @@ static const struct gates_data sun7i_a20 .mask = { 0xff80ff }, }; @@ -62,7 +58,7 @@ index 23beb6e..a779c31 100644 static void __init sunxi_gates_clk_setup(struct device_node *node, struct gates_data *data) { -@@ -1107,6 +1117,8 @@ static const struct of_device_id clk_gates_match[] __initconst = { +@@ -1107,6 +1117,8 @@ static const struct of_device_id clk_gat {.compatible = "allwinner,sun6i-a31-apb1-gates-clk", .data = &sun6i_a31_apb1_gates_data,}, {.compatible = "allwinner,sun7i-a20-apb1-gates-clk", .data = &sun7i_a20_apb1_gates_data,}, {.compatible = "allwinner,sun6i-a31-apb2-gates-clk", .data = &sun6i_a31_apb2_gates_data,}, @@ -71,6 +67,3 @@ index 23beb6e..a779c31 100644 {} }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/184-clk-sunxi-add-pll6-on-a31.patch b/target/linux/sunxi/patches-3.14/184-clk-sunxi-add-pll6-on-a31.patch index 4d71742..7193c50 100644 --- a/target/linux/sunxi/patches-3.14/184-clk-sunxi-add-pll6-on-a31.patch +++ b/target/linux/sunxi/patches-3.14/184-clk-sunxi-add-pll6-on-a31.patch @@ -16,8 +16,6 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 45 +++++++++++++++++++++++ 2 files changed, 46 insertions(+) -diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt -index ca2b692..c37c764 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt @@ -11,6 +11,7 @@ Required properties: @@ -28,11 +26,9 @@ index ca2b692..c37c764 100644 "allwinner,sun4i-cpu-clk" - for the CPU multiplexer clock "allwinner,sun4i-axi-clk" - for the AXI clock "allwinner,sun4i-axi-gates-clk" - for the AXI gates -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index a779c31..d4cf297 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -252,7 +252,38 @@ static void sun4i_get_pll5_factors(u32 *freq, u32 parent_rate, +@@ -252,7 +252,38 @@ static void sun4i_get_pll5_factors(u32 * *n = DIV_ROUND_UP(div, (*k+1)); } @@ -61,17 +57,17 @@ index a779c31..d4cf297 100644 + /* we were called to round the frequency, we can now return */ + if (n == NULL) + return; -+ + + *k = div / 32; + if (*k > 3) + *k = 3; - ++ + *n = DIV_ROUND_UP(div, (*k+1)); +} /** * sun4i_get_apb1_factors() - calculates m, p factors for APB1 -@@ -420,6 +451,13 @@ static struct clk_factors_config sun4i_pll5_config = { +@@ -420,6 +451,13 @@ static struct clk_factors_config sun4i_p .kwidth = 2, }; @@ -85,7 +81,7 @@ index a779c31..d4cf297 100644 static struct clk_factors_config sun4i_apb1_config = { .mshift = 0, .mwidth = 5, -@@ -469,6 +507,12 @@ static const struct factors_data sun4i_pll6_data __initconst = { +@@ -469,6 +507,12 @@ static const struct factors_data sun4i_p .name = "pll6", }; @@ -98,7 +94,7 @@ index a779c31..d4cf297 100644 static const struct factors_data sun4i_apb1_data __initconst = { .table = &sun4i_apb1_config, .getter = sun4i_get_apb1_factors, -@@ -1069,6 +1113,7 @@ static void __init sunxi_divs_clk_setup(struct device_node *node, +@@ -1069,6 +1113,7 @@ free_clkdata: static const struct of_device_id clk_factors_match[] __initconst = { {.compatible = "allwinner,sun4i-pll1-clk", .data = &sun4i_pll1_data,}, {.compatible = "allwinner,sun6i-a31-pll1-clk", .data = &sun6i_a31_pll1_data,}, @@ -106,6 +102,3 @@ index a779c31..d4cf297 100644 {.compatible = "allwinner,sun4i-apb1-clk", .data = &sun4i_apb1_data,}, {.compatible = "allwinner,sun4i-mod0-clk", .data = &sun4i_mod0_data,}, {.compatible = "allwinner,sun7i-a20-out-clk", .data = &sun7i_a20_out_data,}, --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/185-clk-sunxi-add-a20-a31-gmac-clock.patch b/target/linux/sunxi/patches-3.14/185-clk-sunxi-add-a20-a31-gmac-clock.patch index e105c25..86d6301 100644 --- a/target/linux/sunxi/patches-3.14/185-clk-sunxi-add-a20-a31-gmac-clock.patch +++ b/target/linux/sunxi/patches-3.14/185-clk-sunxi-add-a20-a31-gmac-clock.patch @@ -18,8 +18,6 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 96 +++++++++++++++++++++++ 2 files changed, 126 insertions(+) -diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt -index c37c764..256a908 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt @@ -38,6 +38,7 @@ Required properties: @@ -30,7 +28,7 @@ index c37c764..256a908 100644 "allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20 "allwinner,sun5i-a13-usb-clk" - for usb gates + resets on A13 -@@ -56,6 +57,9 @@ Required properties for all clocks: +@@ -55,6 +56,9 @@ Additionally, "allwinner,*-gates-clk" cl And "allwinner,*-usb-clk" clocks also require: - reset-cells : shall be set to 1 @@ -40,9 +38,9 @@ index c37c764..256a908 100644 Clock consumers should specify the desired clocks they use with a "clocks" phandle cell. Consumers that are using a gated clock should provide an additional ID in their clock property. This ID is the -@@ -102,3 +106,29 @@ mmc0_clk: clk@01c20088 { - clocks = <&osc24M>, <&pll6 1>, <&pll5 1>; - clock-output-names = "mmc0"; +@@ -82,3 +86,29 @@ cpu: cpu@01c20054 { + reg = <0x01c20054 0x4>; + clocks = <&osc32k>, <&osc24M>, <&pll1>; }; + +mii_phy_tx_clk: clk@2 { @@ -70,11 +68,9 @@ index c37c764..256a908 100644 + clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>; + clock-output-names = "gmac"; +}; -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index d4cf297..335c987 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -411,6 +411,102 @@ static void sun7i_a20_get_out_factors(u32 *freq, u32 parent_rate, +@@ -411,6 +411,102 @@ static void sun7i_a20_get_out_factors(u3 /** @@ -177,6 +173,3 @@ index d4cf297..335c987 100644 * sunxi_factors_clk_setup() - Setup function for factor clocks */ --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/186-clk-sunxi-add-new-clock-compats.patch b/target/linux/sunxi/patches-3.14/186-clk-sunxi-add-new-clock-compats.patch index 728fca8..f842a23 100644 --- a/target/linux/sunxi/patches-3.14/186-clk-sunxi-add-new-clock-compats.patch +++ b/target/linux/sunxi/patches-3.14/186-clk-sunxi-add-new-clock-compats.patch @@ -18,11 +18,9 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-sunxi.c | 30 +++++++++---------- 2 files changed, 33 insertions(+), 33 deletions(-) -diff --git a/Documentation/devicetree/bindings/clock/sunxi.txt b/Documentation/devicetree/bindings/clock/sunxi.txt -index 256a908..a5160d8 100644 --- a/Documentation/devicetree/bindings/clock/sunxi.txt +++ b/Documentation/devicetree/bindings/clock/sunxi.txt -@@ -6,37 +6,37 @@ This binding uses the common clock binding[1]. +@@ -6,37 +6,37 @@ This binding uses the common clock bindi Required properties: - compatible : shall be one of the following: @@ -75,25 +73,23 @@ index 256a908..a5160d8 100644 "allwinner,sun7i-a20-out-clk" - for the external output clocks "allwinner,sun7i-a20-gmac-clk" - for the GMAC clock module on A20/A31 "allwinner,sun4i-a10-usb-clk" - for usb gates + resets on A10 / A20 -@@ -69,7 +69,7 @@ For example: +@@ -68,21 +68,21 @@ For example: - osc24M: clk@01c20050 { + osc24M: osc24M@01c20050 { #clock-cells = <0>; - compatible = "allwinner,sun4i-osc-clk"; + compatible = "allwinner,sun4i-a10-osc-clk"; reg = <0x01c20050 0x4>; clocks = <&osc24M_fixed>; - clock-output-names = "osc24M"; -@@ -77,7 +77,7 @@ osc24M: clk@01c20050 { + }; - pll1: clk@01c20000 { + pll1: pll1@01c20000 { #clock-cells = <0>; - compatible = "allwinner,sun4i-pll1-clk"; + compatible = "allwinner,sun4i-a10-pll1-clk"; reg = <0x01c20000 0x4>; clocks = <&osc24M>; - clock-output-names = "pll1"; -@@ -93,7 +93,7 @@ pll5: clk@01c20020 { + }; cpu: cpu@01c20054 { #clock-cells = <0>; @@ -101,12 +97,10 @@ index 256a908..a5160d8 100644 + compatible = "allwinner,sun4i-a10-cpu-clk"; reg = <0x01c20054 0x4>; clocks = <&osc32k>, <&osc24M>, <&pll1>; - clock-output-names = "cpu"; -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 335c987..23baad9 100644 + }; --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -80,7 +80,7 @@ static void __init sun4i_osc_clk_setup(struct device_node *node) +@@ -80,7 +80,7 @@ err_free_gate: err_free_fixed: kfree(fixed); } @@ -115,7 +109,7 @@ index 335c987..23baad9 100644 -@@ -1207,52 +1207,52 @@ static void __init sunxi_divs_clk_setup(struct device_node *node, +@@ -1207,52 +1207,52 @@ free_clkdata: /* Matches for factors clocks */ static const struct of_device_id clk_factors_match[] __initconst = { @@ -182,6 +176,3 @@ index 335c987..23baad9 100644 {.compatible = "allwinner,sun5i-a10s-apb1-gates-clk", .data = &sun5i_a10s_apb1_gates_data,}, {.compatible = "allwinner,sun5i-a13-apb1-gates-clk", .data = &sun5i_a13_apb1_gates_data,}, {.compatible = "allwinner,sun6i-a31-apb1-gates-clk", .data = &sun6i_a31_apb1_gates_data,}, --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/187-clk-sunxi-automatic-reparenting.patch b/target/linux/sunxi/patches-3.14/187-clk-sunxi-automatic-reparenting.patch index b78b661..2cd8a26 100644 --- a/target/linux/sunxi/patches-3.14/187-clk-sunxi-automatic-reparenting.patch +++ b/target/linux/sunxi/patches-3.14/187-clk-sunxi-automatic-reparenting.patch @@ -14,11 +14,9 @@ Signed-off-by: Emilio López <emilio@elopez.com.ar> drivers/clk/sunxi/clk-factors.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) -diff --git a/drivers/clk/sunxi/clk-factors.c b/drivers/clk/sunxi/clk-factors.c -index 9e23264..3806d97 100644 --- a/drivers/clk/sunxi/clk-factors.c +++ b/drivers/clk/sunxi/clk-factors.c -@@ -77,6 +77,41 @@ static long clk_factors_round_rate(struct clk_hw *hw, unsigned long rate, +@@ -77,6 +77,41 @@ static long clk_factors_round_rate(struc return rate; } @@ -60,7 +58,7 @@ index 9e23264..3806d97 100644 static int clk_factors_set_rate(struct clk_hw *hw, unsigned long rate, unsigned long parent_rate) { -@@ -113,6 +148,7 @@ static int clk_factors_set_rate(struct clk_hw *hw, unsigned long rate, +@@ -113,6 +148,7 @@ static int clk_factors_set_rate(struct c } const struct clk_ops clk_factors_ops = { @@ -68,6 +66,3 @@ index 9e23264..3806d97 100644 .recalc_rate = clk_factors_recalc_rate, .round_rate = clk_factors_round_rate, .set_rate = clk_factors_set_rate, --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/188-clk-sunxi-implement-mmc-phasectrl.patch b/target/linux/sunxi/patches-3.14/188-clk-sunxi-implement-mmc-phasectrl.patch index 1288f8f..c191b35 100644 --- a/target/linux/sunxi/patches-3.14/188-clk-sunxi-implement-mmc-phasectrl.patch +++ b/target/linux/sunxi/patches-3.14/188-clk-sunxi-implement-mmc-phasectrl.patch @@ -16,11 +16,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> 2 files changed, 57 insertions(+) create mode 100644 include/linux/clk/sunxi.h -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 23baad9..9afd8dd 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -507,6 +507,41 @@ CLK_OF_DECLARE(sun7i_a20_gmac, "allwinner,sun7i-a20-gmac-clk", +@@ -507,6 +507,41 @@ CLK_OF_DECLARE(sun7i_a20_gmac, "allwinne /** @@ -62,9 +60,6 @@ index 23baad9..9afd8dd 100644 * sunxi_factors_clk_setup() - Setup function for factor clocks */ -diff --git a/include/linux/clk/sunxi.h b/include/linux/clk/sunxi.h -new file mode 100644 -index 0000000..1ef5c89 --- /dev/null +++ b/include/linux/clk/sunxi.h @@ -0,0 +1,22 @@ @@ -90,6 +85,3 @@ index 0000000..1ef5c89 +void clk_sunxi_mmc_phase_control(struct clk_hw *hw, u8 sample, u8 output); + +#endif --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/190-ahci-libahci-changes.patch b/target/linux/sunxi/patches-3.14/190-ahci-libahci-changes.patch index 21a119f..9600e95 100644 --- a/target/linux/sunxi/patches-3.14/190-ahci-libahci-changes.patch +++ b/target/linux/sunxi/patches-3.14/190-ahci-libahci-changes.patch @@ -20,11 +20,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> drivers/ata/sata_highbank.c | 3 ++- 4 files changed, 31 insertions(+), 10 deletions(-) -diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c -index c81d809..8bfc477 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c -@@ -578,6 +578,7 @@ static int ahci_vt8251_hardreset(struct ata_link *link, unsigned int *class, +@@ -583,6 +583,7 @@ static int ahci_vt8251_hardreset(struct unsigned long deadline) { struct ata_port *ap = link->ap; @@ -32,7 +30,7 @@ index c81d809..8bfc477 100644 bool online; int rc; -@@ -588,7 +589,7 @@ static int ahci_vt8251_hardreset(struct ata_link *link, unsigned int *class, +@@ -593,7 +594,7 @@ static int ahci_vt8251_hardreset(struct rc = sata_link_hardreset(link, sata_ehc_deb_timing(&link->eh_context), deadline, &online, NULL); @@ -41,7 +39,7 @@ index c81d809..8bfc477 100644 DPRINTK("EXIT, rc=%d, class=%u\n", rc, *class); -@@ -603,6 +604,7 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class, +@@ -608,6 +609,7 @@ static int ahci_p5wdh_hardreset(struct a { struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; @@ -49,7 +47,7 @@ index c81d809..8bfc477 100644 u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; -@@ -618,7 +620,7 @@ static int ahci_p5wdh_hardreset(struct ata_link *link, unsigned int *class, +@@ -623,7 +625,7 @@ static int ahci_p5wdh_hardreset(struct a rc = sata_link_hardreset(link, sata_ehc_deb_timing(&link->eh_context), deadline, &online, NULL); @@ -58,13 +56,31 @@ index c81d809..8bfc477 100644 /* The pseudo configuration device on SIMG4726 attached to * ASUS P5W-DH Deluxe doesn't send signature FIS after -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index 2289efd..64d1a99d 100644 --- a/drivers/ata/ahci.h +++ b/drivers/ata/ahci.h -@@ -323,6 +323,12 @@ struct ahci_host_priv { +@@ -37,6 +37,7 @@ + + #include <linux/clk.h> + #include <linux/libata.h> ++#include <linux/regulator/consumer.h> + + /* Enclosure Management Control */ + #define EM_CTRL_MSG_TYPE 0x000f0000 +@@ -51,6 +52,7 @@ + + enum { + AHCI_MAX_PORTS = 32, ++ AHCI_MAX_CLKS = 3, + AHCI_MAX_SG = 168, /* hardware max is 64K */ + AHCI_DMA_BOUNDARY = 0xffffffff, + AHCI_MAX_CMDS = 32, +@@ -322,8 +324,15 @@ struct ahci_host_priv { + u32 em_loc; /* enclosure management location */ + u32 em_buf_sz; /* EM buffer size in byte */ u32 em_msg_type; /* EM message type */ - struct clk *clk; /* Only for platforms supporting clk */ +- struct clk *clk; /* Only for platforms supporting clk */ ++ struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ ++ struct regulator *target_pwr; /* Optional */ void *plat_data; /* Other platform data */ + /* + * Optional ahci_start_engine override, if not set this gets set to the @@ -75,11 +91,9 @@ index 2289efd..64d1a99d 100644 }; extern int ahci_ignore_sss; -diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c -index 36605ab..f839bb3 100644 --- a/drivers/ata/libahci.c +++ b/drivers/ata/libahci.c -@@ -394,6 +394,9 @@ static ssize_t ahci_show_em_supported(struct device *dev, +@@ -394,6 +394,9 @@ static ssize_t ahci_show_em_supported(st * * If inconsistent, config values are fixed up by this function. * @@ -89,7 +103,7 @@ index 36605ab..f839bb3 100644 * LOCKING: * None. */ -@@ -500,6 +503,9 @@ void ahci_save_initial_config(struct device *dev, +@@ -500,6 +503,9 @@ void ahci_save_initial_config(struct dev hpriv->cap = cap; hpriv->cap2 = cap2; hpriv->port_map = port_map; @@ -99,7 +113,7 @@ index 36605ab..f839bb3 100644 } EXPORT_SYMBOL_GPL(ahci_save_initial_config); -@@ -766,7 +772,7 @@ static void ahci_start_port(struct ata_port *ap) +@@ -766,7 +772,7 @@ static void ahci_start_port(struct ata_p /* enable DMA */ if (!(hpriv->flags & AHCI_HFLAG_DELAY_ENGINE)) @@ -108,7 +122,7 @@ index 36605ab..f839bb3 100644 /* turn on LEDs */ if (ap->flags & ATA_FLAG_EM) { -@@ -1234,7 +1240,7 @@ int ahci_kick_engine(struct ata_port *ap) +@@ -1234,7 +1240,7 @@ int ahci_kick_engine(struct ata_port *ap /* restart engine */ out_restart: @@ -117,7 +131,7 @@ index 36605ab..f839bb3 100644 return rc; } EXPORT_SYMBOL_GPL(ahci_kick_engine); -@@ -1426,6 +1432,7 @@ static int ahci_hardreset(struct ata_link *link, unsigned int *class, +@@ -1426,6 +1432,7 @@ static int ahci_hardreset(struct ata_lin const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context); struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; @@ -125,7 +139,7 @@ index 36605ab..f839bb3 100644 u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; -@@ -1443,7 +1450,7 @@ static int ahci_hardreset(struct ata_link *link, unsigned int *class, +@@ -1443,7 +1450,7 @@ static int ahci_hardreset(struct ata_lin rc = sata_link_hardreset(link, timing, deadline, &online, ahci_check_ready); @@ -134,7 +148,7 @@ index 36605ab..f839bb3 100644 if (online) *class = ahci_dev_classify(ap); -@@ -2007,10 +2014,12 @@ static void ahci_thaw(struct ata_port *ap) +@@ -2007,10 +2014,12 @@ static void ahci_thaw(struct ata_port *a void ahci_error_handler(struct ata_port *ap) { @@ -148,7 +162,7 @@ index 36605ab..f839bb3 100644 } sata_pmp_error_handler(ap); -@@ -2031,6 +2040,7 @@ static void ahci_post_internal_cmd(struct ata_queued_cmd *qc) +@@ -2031,6 +2040,7 @@ static void ahci_post_internal_cmd(struc static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep) { @@ -156,7 +170,7 @@ index 36605ab..f839bb3 100644 void __iomem *port_mmio = ahci_port_base(ap); struct ata_device *dev = ap->link.device; u32 devslp, dm, dito, mdat, deto; -@@ -2094,7 +2104,7 @@ static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep) +@@ -2094,7 +2104,7 @@ static void ahci_set_aggressive_devslp(s PORT_DEVSLP_ADSE); writel(devslp, port_mmio + PORT_DEVSLP); @@ -165,7 +179,7 @@ index 36605ab..f839bb3 100644 /* enable device sleep feature for the drive */ err_mask = ata_dev_set_feature(dev, -@@ -2106,6 +2116,7 @@ static void ahci_set_aggressive_devslp(struct ata_port *ap, bool sleep) +@@ -2106,6 +2116,7 @@ static void ahci_set_aggressive_devslp(s static void ahci_enable_fbs(struct ata_port *ap) { @@ -173,7 +187,7 @@ index 36605ab..f839bb3 100644 struct ahci_port_priv *pp = ap->private_data; void __iomem *port_mmio = ahci_port_base(ap); u32 fbs; -@@ -2134,11 +2145,12 @@ static void ahci_enable_fbs(struct ata_port *ap) +@@ -2134,11 +2145,12 @@ static void ahci_enable_fbs(struct ata_p } else dev_err(ap->host->dev, "Failed to enable FBS\n"); @@ -187,7 +201,7 @@ index 36605ab..f839bb3 100644 struct ahci_port_priv *pp = ap->private_data; void __iomem *port_mmio = ahci_port_base(ap); u32 fbs; -@@ -2166,7 +2178,7 @@ static void ahci_disable_fbs(struct ata_port *ap) +@@ -2166,7 +2178,7 @@ static void ahci_disable_fbs(struct ata_ pp->fbs_enabled = false; } @@ -196,11 +210,9 @@ index 36605ab..f839bb3 100644 } static void ahci_pmp_attach(struct ata_port *ap) -diff --git a/drivers/ata/sata_highbank.c b/drivers/ata/sata_highbank.c -index 870b11e..b3b18d1 100644 --- a/drivers/ata/sata_highbank.c +++ b/drivers/ata/sata_highbank.c -@@ -403,6 +403,7 @@ static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, +@@ -403,6 +403,7 @@ static int ahci_highbank_hardreset(struc static const unsigned long timing[] = { 5, 100, 500}; struct ata_port *ap = link->ap; struct ahci_port_priv *pp = ap->private_data; @@ -208,7 +220,7 @@ index 870b11e..b3b18d1 100644 u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; struct ata_taskfile tf; bool online; -@@ -431,7 +432,7 @@ static int ahci_highbank_hardreset(struct ata_link *link, unsigned int *class, +@@ -431,7 +432,7 @@ static int ahci_highbank_hardreset(struc break; } while (!online && retry--); @@ -217,66 +229,24 @@ index 870b11e..b3b18d1 100644 if (online) *class = ahci_dev_classify(ap); --- -2.0.3 - -From fcc3a79f048480e6723b0cfd294f9eecbf73dfd9 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Thu, 16 Jan 2014 14:32:35 +0100 -Subject: [PATCH] ahci-platform: Add support for devices with more then 1 clock - -The allwinner-sun4i AHCI controller needs 2 clocks to be enabled and the -imx AHCI controller needs 3 clocks to be enabled. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - .../devicetree/bindings/ata/ahci-platform.txt | 1 + - drivers/ata/ahci.h | 3 +- - drivers/ata/ahci_platform.c | 119 ++++++++++++++++----- - include/linux/ahci_platform.h | 4 + - 4 files changed, 99 insertions(+), 28 deletions(-) - -diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt -index 89de156..3ced07d 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt -@@ -10,6 +10,7 @@ Required properties: +@@ -10,6 +10,8 @@ Required properties: Optional properties: - dma-coherent : Present if dma operations are coherent +- clocks : a list of phandle + clock specifier pairs ++- target-supply : regulator for SATA target power Example: sata@ffe08000 { -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index 64d1a99d..c12862b 100644 ---- a/drivers/ata/ahci.h -+++ b/drivers/ata/ahci.h -@@ -51,6 +51,7 @@ - - enum { - AHCI_MAX_PORTS = 32, -+ AHCI_MAX_CLKS = 3, - AHCI_MAX_SG = 168, /* hardware max is 64K */ - AHCI_DMA_BOUNDARY = 0xffffffff, - AHCI_MAX_CMDS = 32, -@@ -321,7 +322,7 @@ struct ahci_host_priv { - u32 em_loc; /* enclosure management location */ - u32 em_buf_sz; /* EM buffer size in byte */ - u32 em_msg_type; /* EM message type */ -- struct clk *clk; /* Only for platforms supporting clk */ -+ struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ - void *plat_data; /* Other platform data */ - /* - * Optional ahci_start_engine override, if not set this gets set to the -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 4b231ba..609975d 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c -@@ -87,6 +87,66 @@ static struct scsi_host_template ahci_platform_sht = { +@@ -87,78 +87,252 @@ static struct scsi_host_template ahci_pl AHCI_SHT("ahci_platform"), }; +-static int ahci_probe(struct platform_device *pdev) +/** + * ahci_platform_enable_clks - Enable platform clocks + * @hpriv: host private area to store config values @@ -292,23 +262,46 @@ index 4b231ba..609975d 100644 + * 0 on success otherwise a negative error code + */ +int ahci_platform_enable_clks(struct ahci_host_priv *hpriv) -+{ + { +- struct device *dev = &pdev->dev; +- struct ahci_platform_data *pdata = dev_get_platdata(dev); +- const struct platform_device_id *id = platform_get_device_id(pdev); +- struct ata_port_info pi = ahci_port_info[id ? id->driver_data : 0]; +- const struct ata_port_info *ppi[] = { &pi, NULL }; +- struct ahci_host_priv *hpriv; +- struct ata_host *host; +- struct resource *mem; +- int irq; +- int n_ports; +- int i; +- int rc; + int c, rc; -+ + +- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); +- if (!mem) { +- dev_err(dev, "no mmio space\n"); +- return -EINVAL; + for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) { + rc = clk_prepare_enable(hpriv->clks[c]); + if (rc) + goto disable_unprepare_clk; -+ } + } + return 0; -+ + +- irq = platform_get_irq(pdev, 0); +- if (irq <= 0) { +- dev_err(dev, "no irq\n"); +- return -EINVAL; +- } +disable_unprepare_clk: + while (--c >= 0) + clk_disable_unprepare(hpriv->clks[c]); + return rc; +} +EXPORT_SYMBOL_GPL(ahci_platform_enable_clks); -+ + +- if (pdata && pdata->ata_port_info) +- pi = *pdata->ata_port_info; +/** + * ahci_platform_disable_clks - Disable platform clocks + * @hpriv: host private area to store config values @@ -322,320 +315,17 @@ index 4b231ba..609975d 100644 +void ahci_platform_disable_clks(struct ahci_host_priv *hpriv) +{ + int c; -+ + +- hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL); +- if (!hpriv) { +- dev_err(dev, "can't alloc ahci_host_priv\n"); +- return -ENOMEM; + for (c = AHCI_MAX_CLKS - 1; c >= 0; c--) + if (hpriv->clks[c]) + clk_disable_unprepare(hpriv->clks[c]); +} +EXPORT_SYMBOL_GPL(ahci_platform_disable_clks); + -+static void ahci_put_clks(struct ahci_host_priv *hpriv) -+{ -+ int c; -+ -+ for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) -+ clk_put(hpriv->clks[c]); -+} -+ - static int ahci_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -97,6 +157,7 @@ static int ahci_probe(struct platform_device *pdev) - struct ahci_host_priv *hpriv; - struct ata_host *host; - struct resource *mem; -+ struct clk *clk; - int irq; - int n_ports; - int i; -@@ -131,17 +192,31 @@ static int ahci_probe(struct platform_device *pdev) - return -ENOMEM; - } - -- hpriv->clk = clk_get(dev, NULL); -- if (IS_ERR(hpriv->clk)) { -- dev_err(dev, "can't get clock\n"); -- } else { -- rc = clk_prepare_enable(hpriv->clk); -- if (rc) { -- dev_err(dev, "clock prepare enable failed"); -- goto free_clk; -+ for (i = 0; i < AHCI_MAX_CLKS; i++) { -+ /* -+ * For now we must use clk_get(dev, NULL) for the first clock, -+ * because some platforms (da850, spear13xx) are not yet -+ * converted to use devicetree for clocks. For new platforms -+ * this is equivalent to of_clk_get(dev->of_node, 0). -+ */ -+ if (i == 0) -+ clk = clk_get(dev, NULL); -+ else -+ clk = of_clk_get(dev->of_node, i); -+ -+ if (IS_ERR(clk)) { -+ rc = PTR_ERR(clk); -+ if (rc == -EPROBE_DEFER) -+ goto free_clk; -+ break; - } -+ hpriv->clks[i] = clk; - } - -+ rc = ahci_enable_clks(dev, hpriv); -+ if (rc) -+ goto free_clk; -+ - /* - * Some platforms might need to prepare for mmio region access, - * which could be done in the following init call. So, the mmio -@@ -222,11 +297,9 @@ static int ahci_probe(struct platform_device *pdev) - if (pdata && pdata->exit) - pdata->exit(dev); - disable_unprepare_clk: -- if (!IS_ERR(hpriv->clk)) -- clk_disable_unprepare(hpriv->clk); -+ ahci_disable_clks(hpriv); - free_clk: -- if (!IS_ERR(hpriv->clk)) -- clk_put(hpriv->clk); -+ ahci_put_clks(hpriv); - return rc; - } - -@@ -239,10 +312,8 @@ static void ahci_host_stop(struct ata_host *host) - if (pdata && pdata->exit) - pdata->exit(dev); - -- if (!IS_ERR(hpriv->clk)) { -- clk_disable_unprepare(hpriv->clk); -- clk_put(hpriv->clk); -- } -+ ahci_disable_clks(hpriv); -+ ahci_put_clks(hpriv); - } - - #ifdef CONFIG_PM_SLEEP -@@ -277,8 +348,7 @@ static int ahci_suspend(struct device *dev) - if (pdata && pdata->suspend) - return pdata->suspend(dev); - -- if (!IS_ERR(hpriv->clk)) -- clk_disable_unprepare(hpriv->clk); -+ ahci_disable_clks(hpriv); - - return 0; - } -@@ -290,13 +360,9 @@ static int ahci_resume(struct device *dev) - struct ahci_host_priv *hpriv = host->private_data; - int rc; - -- if (!IS_ERR(hpriv->clk)) { -- rc = clk_prepare_enable(hpriv->clk); -- if (rc) { -- dev_err(dev, "clock prepare enable failed"); -- return rc; -- } -- } -+ rc = ahci_enable_clks(dev, hpriv); -+ if (rc) -+ return rc; - - if (pdata && pdata->resume) { - rc = pdata->resume(dev); -@@ -317,8 +383,7 @@ static int ahci_resume(struct device *dev) - return 0; - - disable_unprepare_clk: -- if (!IS_ERR(hpriv->clk)) -- clk_disable_unprepare(hpriv->clk); -+ ahci_disable_clks(hpriv); - - return rc; - } -diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h -index 73a2500..769d065 100644 ---- a/include/linux/ahci_platform.h -+++ b/include/linux/ahci_platform.h -@@ -19,6 +19,7 @@ - - struct device; - struct ata_port_info; -+struct ahci_host_priv; - - struct ahci_platform_data { - int (*init)(struct device *dev, void __iomem *addr); -@@ -30,4 +31,7 @@ struct ahci_platform_data { - unsigned int mask_port_map; - }; - -+int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); -+void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); -+ - #endif /* _AHCI_PLATFORM_H */ --- -2.0.3 - -From 3dc53b267843b6dfeb2eb67e52e17915dc2347ab Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Fri, 17 Jan 2014 13:23:21 +0100 -Subject: [PATCH] ahci-platform: Add support for an optional regulator for - sata-target power - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - .../devicetree/bindings/ata/ahci-platform.txt | 1 + - drivers/ata/ahci.h | 2 ++ - drivers/ata/ahci_platform.c | 36 ++++++++++++++++++++-- - 3 files changed, 37 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt -index 3ced07d..1ac807f 100644 ---- a/Documentation/devicetree/bindings/ata/ahci-platform.txt -+++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt -@@ -11,6 +11,7 @@ Required properties: - Optional properties: - - dma-coherent : Present if dma operations are coherent - - clocks : a list of phandle + clock specifier pairs -+- target-supply : regulator for SATA target power - - Example: - sata@ffe08000 { -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index c12862b..bf8100c 100644 ---- a/drivers/ata/ahci.h -+++ b/drivers/ata/ahci.h -@@ -37,6 +37,7 @@ - - #include <linux/clk.h> - #include <linux/libata.h> -+#include <linux/regulator/consumer.h> - - /* Enclosure Management Control */ - #define EM_CTRL_MSG_TYPE 0x000f0000 -@@ -323,6 +324,7 @@ struct ahci_host_priv { - u32 em_buf_sz; /* EM buffer size in byte */ - u32 em_msg_type; /* EM message type */ - struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ -+ struct regulator *target_pwr; /* Optional */ - void *plat_data; /* Other platform data */ - /* - * Optional ahci_start_engine override, if not set this gets set to the -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 609975d..907c076 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -192,6 +192,14 @@ static int ahci_probe(struct platform_device *pdev) - return -ENOMEM; - } - -+ hpriv->target_pwr = devm_regulator_get_optional(dev, "target"); -+ if (IS_ERR(hpriv->target_pwr)) { -+ rc = PTR_ERR(hpriv->target_pwr); -+ if (rc == -EPROBE_DEFER) -+ return -EPROBE_DEFER; -+ hpriv->target_pwr = NULL; -+ } -+ - for (i = 0; i < AHCI_MAX_CLKS; i++) { - /* - * For now we must use clk_get(dev, NULL) for the first clock, -@@ -213,9 +221,15 @@ static int ahci_probe(struct platform_device *pdev) - hpriv->clks[i] = clk; - } - -+ if (hpriv->target_pwr) { -+ rc = regulator_enable(hpriv->target_pwr); -+ if (rc) -+ goto free_clk; -+ } -+ - rc = ahci_enable_clks(dev, hpriv); - if (rc) -- goto free_clk; -+ goto disable_regulator; - - /* - * Some platforms might need to prepare for mmio region access, -@@ -298,6 +312,9 @@ static int ahci_probe(struct platform_device *pdev) - pdata->exit(dev); - disable_unprepare_clk: - ahci_disable_clks(hpriv); -+disable_regulator: -+ if (hpriv->target_pwr) -+ regulator_disable(hpriv->target_pwr); - free_clk: - ahci_put_clks(hpriv); - return rc; -@@ -314,6 +331,9 @@ static void ahci_host_stop(struct ata_host *host) - - ahci_disable_clks(hpriv); - ahci_put_clks(hpriv); -+ -+ if (hpriv->target_pwr) -+ regulator_disable(hpriv->target_pwr); - } - - #ifdef CONFIG_PM_SLEEP -@@ -350,6 +370,9 @@ static int ahci_suspend(struct device *dev) - - ahci_disable_clks(hpriv); - -+ if (hpriv->target_pwr) -+ regulator_disable(hpriv->target_pwr); -+ - return 0; - } - -@@ -360,9 +383,15 @@ static int ahci_resume(struct device *dev) - struct ahci_host_priv *hpriv = host->private_data; - int rc; - -+ if (hpriv->target_pwr) { -+ rc = regulator_enable(hpriv->target_pwr); -+ if (rc) -+ return rc; -+ } -+ - rc = ahci_enable_clks(dev, hpriv); - if (rc) -- return rc; -+ goto disable_regulator; - - if (pdata && pdata->resume) { - rc = pdata->resume(dev); -@@ -384,6 +413,9 @@ static int ahci_resume(struct device *dev) - - disable_unprepare_clk: - ahci_disable_clks(hpriv); -+disable_regulator: -+ if (hpriv->target_pwr) -+ regulator_disable(hpriv->target_pwr); - - return rc; - } --- -2.0.3 - -From 74f54552b061865ff46d43aa68d0c6e8852dc592 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 20 Jan 2014 14:54:40 +0100 -Subject: [PATCH] ahci-platform: Add enable_ / disable_resources helper - functions - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci_platform.c | 112 ++++++++++++++++++++++++++++-------------- - include/linux/ahci_platform.h | 2 + - 2 files changed, 77 insertions(+), 37 deletions(-) - -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 907c076..6ebbc17 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -139,6 +139,68 @@ void ahci_platform_disable_clks(struct ahci_host_priv *hpriv) - } - EXPORT_SYMBOL_GPL(ahci_platform_disable_clks); - +/** + * ahci_platform_enable_resources - Enable platform resources + * @hpriv: host private area to store config values @@ -662,8 +352,9 @@ index 907c076..6ebbc17 100644 + rc = regulator_enable(hpriv->target_pwr); + if (rc) + return rc; -+ } -+ + } + +- hpriv->flags |= (unsigned long)pi.private_data; + rc = ahci_platform_enable_clks(hpriv); + if (rc) + goto disable_regulator; @@ -692,186 +383,22 @@ index 907c076..6ebbc17 100644 +void ahci_platform_disable_resources(struct ahci_host_priv *hpriv) +{ + ahci_platform_disable_clks(hpriv); -+ + +- hpriv->mmio = devm_ioremap(dev, mem->start, resource_size(mem)); + if (hpriv->target_pwr) + regulator_disable(hpriv->target_pwr); +} +EXPORT_SYMBOL_GPL(ahci_platform_disable_resources); + - static void ahci_put_clks(struct ahci_host_priv *hpriv) - { - int c; -@@ -221,15 +283,9 @@ static int ahci_probe(struct platform_device *pdev) - hpriv->clks[i] = clk; - } - -- if (hpriv->target_pwr) { -- rc = regulator_enable(hpriv->target_pwr); -- if (rc) -- goto free_clk; -- } -- -- rc = ahci_enable_clks(dev, hpriv); -+ rc = ahci_platform_enable_resources(hpriv); - if (rc) -- goto disable_regulator; -+ goto free_clk; - - /* - * Some platforms might need to prepare for mmio region access, -@@ -240,7 +296,7 @@ static int ahci_probe(struct platform_device *pdev) - if (pdata && pdata->init) { - rc = pdata->init(dev, hpriv->mmio); - if (rc) -- goto disable_unprepare_clk; -+ goto disable_resources; - } - - ahci_save_initial_config(dev, hpriv, -@@ -310,11 +366,8 @@ static int ahci_probe(struct platform_device *pdev) - pdata_exit: - if (pdata && pdata->exit) - pdata->exit(dev); --disable_unprepare_clk: -- ahci_disable_clks(hpriv); --disable_regulator: -- if (hpriv->target_pwr) -- regulator_disable(hpriv->target_pwr); -+disable_resources: -+ ahci_platform_disable_resources(hpriv); - free_clk: - ahci_put_clks(hpriv); - return rc; -@@ -329,11 +382,8 @@ static void ahci_host_stop(struct ata_host *host) - if (pdata && pdata->exit) - pdata->exit(dev); - -- ahci_disable_clks(hpriv); -+ ahci_platform_disable_resources(hpriv); - ahci_put_clks(hpriv); -- -- if (hpriv->target_pwr) -- regulator_disable(hpriv->target_pwr); - } - - #ifdef CONFIG_PM_SLEEP -@@ -368,10 +418,7 @@ static int ahci_suspend(struct device *dev) - if (pdata && pdata->suspend) - return pdata->suspend(dev); - -- ahci_disable_clks(hpriv); -- -- if (hpriv->target_pwr) -- regulator_disable(hpriv->target_pwr); -+ ahci_platform_disable_resources(hpriv); - - return 0; - } -@@ -383,26 +430,20 @@ static int ahci_resume(struct device *dev) - struct ahci_host_priv *hpriv = host->private_data; - int rc; - -- if (hpriv->target_pwr) { -- rc = regulator_enable(hpriv->target_pwr); -- if (rc) -- return rc; -- } -- -- rc = ahci_enable_clks(dev, hpriv); -+ rc = ahci_platform_enable_resources(hpriv); - if (rc) -- goto disable_regulator; -+ return rc; - - if (pdata && pdata->resume) { - rc = pdata->resume(dev); - if (rc) -- goto disable_unprepare_clk; -+ goto disable_resources; - } - - if (dev->power.power_state.event == PM_EVENT_SUSPEND) { - rc = ahci_reset_controller(host); - if (rc) -- goto disable_unprepare_clk; -+ goto disable_resources; - - ahci_init_controller(host); - } -@@ -411,11 +452,8 @@ static int ahci_resume(struct device *dev) - - return 0; - --disable_unprepare_clk: -- ahci_disable_clks(hpriv); --disable_regulator: -- if (hpriv->target_pwr) -- regulator_disable(hpriv->target_pwr); -+disable_resources: -+ ahci_platform_disable_resources(hpriv); - - return rc; - } -diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h -index 769d065..b674b01 100644 ---- a/include/linux/ahci_platform.h -+++ b/include/linux/ahci_platform.h -@@ -33,5 +33,7 @@ struct ahci_platform_data { - - int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); - void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); -+int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); -+void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); - - #endif /* _AHCI_PLATFORM_H */ --- -2.0.3 - -From 88972833cba7a6dad8e9a1c9b43ab02fc274e4fd Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 20 Jan 2014 14:58:04 +0100 -Subject: [PATCH] ahci-platform: "Library-ise" ahci_probe functionality - -ahci_probe consists of 3 steps: -1) Get resources (get mmio, clks, regulator) -2) Enable resources, handled by ahci_platform_enable_resouces -3) The more or less standard ahci-host controller init sequence - -This commit refactors step 1 and 3 into separate functions, so the platform -drivers for AHCI implementations which need a specific order in step 2, -and / or need to do some custom register poking at some time, can re-use -ahci-platform.c code without needing to copy and paste it. - -Note that ahci_platform_init_host's prototype takes the 3 non function -members of ahci_platform_data as arguments, the idea is that drivers using -the new exported utility functions will not use ahci_platform_data at all, -and hopefully in the future ahci_platform_data can go away entirely. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci_platform.c | 195 ++++++++++++++++++++++++++++-------------- - include/linux/ahci_platform.h | 14 +++ - 2 files changed, 144 insertions(+), 65 deletions(-) - -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 6ebbc17..7f3f2ac 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -201,64 +201,64 @@ void ahci_platform_disable_resources(struct ahci_host_priv *hpriv) - } - EXPORT_SYMBOL_GPL(ahci_platform_disable_resources); - --static void ahci_put_clks(struct ahci_host_priv *hpriv) +static void ahci_platform_put_resources(struct device *dev, void *res) - { ++{ + struct ahci_host_priv *hpriv = res; - int c; - - for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) - clk_put(hpriv->clks[c]); - } - --static int ahci_probe(struct platform_device *pdev) ++ int c; ++ ++ for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) ++ clk_put(hpriv->clks[c]); ++} ++ +/** + * ahci_platform_get_resources - Get platform resources + * @pdev: platform device to get resources for @@ -893,53 +420,22 @@ index 6ebbc17..7f3f2ac 100644 + */ +struct ahci_host_priv *ahci_platform_get_resources( + struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -- struct ahci_platform_data *pdata = dev_get_platdata(dev); -- const struct platform_device_id *id = platform_get_device_id(pdev); -- struct ata_port_info pi = ahci_port_info[id ? id->driver_data : 0]; -- const struct ata_port_info *ppi[] = { &pi, NULL }; - struct ahci_host_priv *hpriv; -- struct ata_host *host; -- struct resource *mem; - struct clk *clk; -- int irq; -- int n_ports; -- int i; -- int rc; ++{ ++ struct device *dev = &pdev->dev; ++ struct ahci_host_priv *hpriv; ++ struct clk *clk; + int i, rc = -ENOMEM; - -- mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); -- if (!mem) { -- dev_err(dev, "no mmio space\n"); -- return -EINVAL; -- } ++ + if (!devres_open_group(dev, NULL, GFP_KERNEL)) + return ERR_PTR(-ENOMEM); - -- irq = platform_get_irq(pdev, 0); -- if (irq <= 0) { -- dev_err(dev, "no irq\n"); -- return -EINVAL; -- } ++ + hpriv = devres_alloc(ahci_platform_put_resources, sizeof(*hpriv), + GFP_KERNEL); + if (!hpriv) + goto err_out; - -- if (pdata && pdata->ata_port_info) -- pi = *pdata->ata_port_info; ++ + devres_add(dev, hpriv); - -- hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL); -- if (!hpriv) { -- dev_err(dev, "can't alloc ahci_host_priv\n"); -- return -ENOMEM; -- } -- -- hpriv->flags |= (unsigned long)pi.private_data; -- -- hpriv->mmio = devm_ioremap(dev, mem->start, resource_size(mem)); ++ + hpriv->mmio = devm_ioremap_resource(dev, + platform_get_resource(pdev, IORESOURCE_MEM, 0)); if (!hpriv->mmio) { @@ -949,32 +445,43 @@ index 6ebbc17..7f3f2ac 100644 + goto err_out; } - hpriv->target_pwr = devm_regulator_get_optional(dev, "target"); - if (IS_ERR(hpriv->target_pwr)) { - rc = PTR_ERR(hpriv->target_pwr); - if (rc == -EPROBE_DEFER) -- return -EPROBE_DEFER; +- hpriv->clk = clk_get(dev, NULL); +- if (IS_ERR(hpriv->clk)) { +- dev_err(dev, "can't get clock\n"); +- } else { +- rc = clk_prepare_enable(hpriv->clk); +- if (rc) { +- dev_err(dev, "clock prepare enable failed"); +- goto free_clk; ++ hpriv->target_pwr = devm_regulator_get_optional(dev, "target"); ++ if (IS_ERR(hpriv->target_pwr)) { ++ rc = PTR_ERR(hpriv->target_pwr); ++ if (rc == -EPROBE_DEFER) + goto err_out; - hpriv->target_pwr = NULL; - } - -@@ -277,33 +277,62 @@ static int ahci_probe(struct platform_device *pdev) - if (IS_ERR(clk)) { - rc = PTR_ERR(clk); - if (rc == -EPROBE_DEFER) -- goto free_clk; ++ hpriv->target_pwr = NULL; ++ } ++ ++ for (i = 0; i < AHCI_MAX_CLKS; i++) { ++ /* ++ * For now we must use clk_get(dev, NULL) for the first clock, ++ * because some platforms (da850, spear13xx) are not yet ++ * converted to use devicetree for clocks. For new platforms ++ * this is equivalent to of_clk_get(dev->of_node, 0). ++ */ ++ if (i == 0) ++ clk = clk_get(dev, NULL); ++ else ++ clk = of_clk_get(dev->of_node, i); ++ ++ if (IS_ERR(clk)) { ++ rc = PTR_ERR(clk); ++ if (rc == -EPROBE_DEFER) + goto err_out; - break; ++ break; } - hpriv->clks[i] = clk; ++ hpriv->clks[i] = clk; } -- rc = ahci_platform_enable_resources(hpriv); -- if (rc) -- goto free_clk; -+ devres_remove_group(dev, NULL); -+ return hpriv; - - /* - * Some platforms might need to prepare for mmio region access, - * which could be done in the following init call. So, the mmio @@ -984,8 +491,11 @@ index 6ebbc17..7f3f2ac 100644 - if (pdata && pdata->init) { - rc = pdata->init(dev, hpriv->mmio); - if (rc) -- goto disable_resources; +- goto disable_unprepare_clk; - } ++ devres_remove_group(dev, NULL); ++ return hpriv; ++ +err_out: + devres_release_group(dev, NULL); + return ERR_PTR(rc); @@ -1039,7 +549,7 @@ index 6ebbc17..7f3f2ac 100644 if (hpriv->cap & HOST_CAP_NCQ) pi.flags |= ATA_FLAG_NCQ; -@@ -320,10 +349,8 @@ static int ahci_probe(struct platform_device *pdev) +@@ -175,10 +349,8 @@ static int ahci_probe(struct platform_de n_ports = max(ahci_nr_ports(hpriv->cap), fls(hpriv->port_map)); host = ata_host_alloc_pinfo(dev, ppi, n_ports); @@ -1052,7 +562,7 @@ index 6ebbc17..7f3f2ac 100644 host->private_data = hpriv; -@@ -338,7 +365,8 @@ static int ahci_probe(struct platform_device *pdev) +@@ -193,7 +365,8 @@ static int ahci_probe(struct platform_de for (i = 0; i < host->n_ports; i++) { struct ata_port *ap = host->ports[i]; @@ -1062,7 +572,7 @@ index 6ebbc17..7f3f2ac 100644 ata_port_desc(ap, "port 0x%x", 0x100 + ap->port_no * 0x80); /* set enclosure management message type */ -@@ -352,13 +380,53 @@ static int ahci_probe(struct platform_device *pdev) +@@ -207,13 +380,53 @@ static int ahci_probe(struct platform_de rc = ahci_reset_controller(host); if (rc) @@ -1119,78 +629,30 @@ index 6ebbc17..7f3f2ac 100644 if (rc) goto pdata_exit; -@@ -368,8 +436,6 @@ static int ahci_probe(struct platform_device *pdev) +@@ -221,12 +434,8 @@ static int ahci_probe(struct platform_de + pdata_exit: + if (pdata && pdata->exit) pdata->exit(dev); - disable_resources: - ahci_platform_disable_resources(hpriv); +-disable_unprepare_clk: +- if (!IS_ERR(hpriv->clk)) +- clk_disable_unprepare(hpriv->clk); -free_clk: -- ahci_put_clks(hpriv); +- if (!IS_ERR(hpriv->clk)) +- clk_put(hpriv->clk); ++disable_resources: ++ ahci_platform_disable_resources(hpriv); return rc; } -@@ -383,7 +449,6 @@ static void ahci_host_stop(struct ata_host *host) +@@ -239,21 +448,30 @@ static void ahci_host_stop(struct ata_ho + if (pdata && pdata->exit) pdata->exit(dev); - ahci_platform_disable_resources(hpriv); -- ahci_put_clks(hpriv); - } - - #ifdef CONFIG_PM_SLEEP -diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h -index b674b01..b80c51c 100644 ---- a/include/linux/ahci_platform.h -+++ b/include/linux/ahci_platform.h -@@ -20,7 +20,14 @@ - struct device; - struct ata_port_info; - struct ahci_host_priv; -+struct platform_device; - -+/* -+ * Note ahci_platform_data is deprecated, it is only kept around for use -+ * by the old da850 and spear13xx ahci code. -+ * New drivers should instead declare their own platform_driver struct, and -+ * use ahci_platform* functions in their own probe, suspend and resume methods. -+ */ - struct ahci_platform_data { - int (*init)(struct device *dev, void __iomem *addr); - void (*exit)(struct device *dev); -@@ -35,5 +42,12 @@ int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); - void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); - int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); - void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); -+struct ahci_host_priv *ahci_platform_get_resources( -+ struct platform_device *pdev); -+int ahci_platform_init_host(struct platform_device *pdev, -+ struct ahci_host_priv *hpriv, -+ const struct ata_port_info *pi_template, -+ unsigned int force_port_map, -+ unsigned int mask_port_map); - - #endif /* _AHCI_PLATFORM_H */ --- -2.0.3 - -From dffde1e107b4360a4ff6b3aec3693e8b3b4a1bd0 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 20 Jan 2014 15:52:07 +0100 -Subject: [PATCH] ahci-platform: "Library-ise" suspend / resume functionality - -Split suspend / resume code into host suspend / resume functionality and -resource enable / disabling phases, and export the new suspend_ / resume_host -functions. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci_platform.c | 109 ++++++++++++++++++++++++++++++++++++------ - include/linux/ahci_platform.h | 5 ++ - 2 files changed, 99 insertions(+), 15 deletions(-) - -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 7f3f2ac..bdadec1 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -452,14 +452,26 @@ static void ahci_host_stop(struct ata_host *host) +- if (!IS_ERR(hpriv->clk)) { +- clk_disable_unprepare(hpriv->clk); +- clk_put(hpriv->clk); +- } ++ ahci_platform_disable_resources(hpriv); } #ifdef CONFIG_PM_SLEEP @@ -1220,7 +682,7 @@ index 7f3f2ac..bdadec1 100644 if (hpriv->flags & AHCI_HFLAG_NO_SUSPEND) { dev_err(dev, "firmware update required for suspend/resume\n"); -@@ -476,7 +488,64 @@ static int ahci_suspend(struct device *dev) +@@ -270,61 +488,122 @@ static int ahci_suspend(struct device *d writel(ctl, mmio + HOST_CTL); readl(mmio + HOST_CTL); /* flush */ @@ -1286,7 +748,12 @@ index 7f3f2ac..bdadec1 100644 if (rc) return rc; -@@ -487,8 +556,22 @@ static int ahci_suspend(struct device *dev) + if (pdata && pdata->suspend) + return pdata->suspend(dev); + +- if (!IS_ERR(hpriv->clk)) +- clk_disable_unprepare(hpriv->clk); ++ ahci_platform_disable_resources(hpriv); return 0; } @@ -1310,18 +777,35 @@ index 7f3f2ac..bdadec1 100644 { struct ahci_platform_data *pdata = dev_get_platdata(dev); struct ata_host *host = dev_get_drvdata(dev); -@@ -505,15 +588,9 @@ static int ahci_resume(struct device *dev) - goto disable_resources; - } + struct ahci_host_priv *hpriv = host->private_data; + int rc; + +- if (!IS_ERR(hpriv->clk)) { +- rc = clk_prepare_enable(hpriv->clk); +- if (rc) { +- dev_err(dev, "clock prepare enable failed"); +- return rc; +- } +- } ++ rc = ahci_platform_enable_resources(hpriv); ++ if (rc) ++ return rc; + if (pdata && pdata->resume) { + rc = pdata->resume(dev); + if (rc) +- goto disable_unprepare_clk; +- } +- - if (dev->power.power_state.event == PM_EVENT_SUSPEND) { - rc = ahci_reset_controller(host); - if (rc) -- goto disable_resources; +- goto disable_unprepare_clk; - - ahci_init_controller(host); -- } -- ++ goto disable_resources; + } + - ata_host_resume(host); + rc = ahci_platform_resume_host(dev); + if (rc) @@ -1329,7 +813,11 @@ index 7f3f2ac..bdadec1 100644 return 0; -@@ -522,9 +599,11 @@ static int ahci_resume(struct device *dev) +-disable_unprepare_clk: +- if (!IS_ERR(hpriv->clk)) +- clk_disable_unprepare(hpriv->clk); ++disable_resources: ++ ahci_platform_disable_resources(hpriv); return rc; } @@ -1342,20 +830,43 @@ index 7f3f2ac..bdadec1 100644 static const struct of_device_id ahci_of_match[] = { { .compatible = "snps,spear-ahci", }, -diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h -index b80c51c..542f268 100644 --- a/include/linux/ahci_platform.h +++ b/include/linux/ahci_platform.h -@@ -50,4 +50,9 @@ int ahci_platform_init_host(struct platform_device *pdev, - unsigned int force_port_map, - unsigned int mask_port_map); +@@ -19,7 +19,15 @@ + struct device; + struct ata_port_info; ++struct ahci_host_priv; ++struct platform_device; + ++/* ++ * Note ahci_platform_data is deprecated, it is only kept around for use ++ * by the old da850 and spear13xx ahci code. ++ * New drivers should instead declare their own platform_driver struct, and ++ * use ahci_platform* functions in their own probe, suspend and resume methods. ++ */ + struct ahci_platform_data { + int (*init)(struct device *dev, void __iomem *addr); + void (*exit)(struct device *dev); +@@ -30,4 +38,21 @@ struct ahci_platform_data { + unsigned int mask_port_map; + }; + ++int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); ++void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); ++int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); ++void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); ++struct ahci_host_priv *ahci_platform_get_resources( ++ struct platform_device *pdev); ++int ahci_platform_init_host(struct platform_device *pdev, ++ struct ahci_host_priv *hpriv, ++ const struct ata_port_info *pi_template, ++ unsigned int force_port_map, ++ unsigned int mask_port_map); ++ +int ahci_platform_suspend_host(struct device *dev); +int ahci_platform_resume_host(struct device *dev); +int ahci_platform_suspend(struct device *dev); +int ahci_platform_resume(struct device *dev); + #endif /* _AHCI_PLATFORM_H */ --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/191-ahci-add-sunxi-driver.patch b/target/linux/sunxi/patches-3.14/191-ahci-add-sunxi-driver.patch index 51f5ec4..563b19d 100644 --- a/target/linux/sunxi/patches-3.14/191-ahci-add-sunxi-driver.patch +++ b/target/linux/sunxi/patches-3.14/191-ahci-add-sunxi-driver.patch @@ -25,11 +25,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> 4 files changed, 271 insertions(+), 3 deletions(-) create mode 100644 drivers/ata/ahci_sunxi.c -diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt -index 1ac807f..499bfed 100644 --- a/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt -@@ -4,7 +4,9 @@ SATA nodes are defined to describe on-chip Serial ATA controllers. +@@ -4,7 +4,9 @@ SATA nodes are defined to describe on-ch Each SATA controller should have its own node. Required properties: @@ -60,8 +58,6 @@ index 1ac807f..499bfed 100644 + clocks = <&pll6 0>, <&ahb_gates 25>; + target-supply = <®_ahci_5v>; + }; -diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig -index 868429a4..10a9c25 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig @@ -106,6 +106,15 @@ config AHCI_IMX @@ -80,8 +76,6 @@ index 868429a4..10a9c25 100644 config SATA_FSL tristate "Freescale 3.0Gbps SATA support" depends on FSL_SOC -diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile -index 46518c6..246050b 100644 --- a/drivers/ata/Makefile +++ b/drivers/ata/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_SATA_SIL24) += sata_sil24.o @@ -92,9 +86,6 @@ index 46518c6..246050b 100644 # SFF w/ custom DMA obj-$(CONFIG_PDC_ADMA) += pdc_adma.o -diff --git a/drivers/ata/ahci_sunxi.c b/drivers/ata/ahci_sunxi.c -new file mode 100644 -index 0000000..001f7dfc --- /dev/null +++ b/drivers/ata/ahci_sunxi.c @@ -0,0 +1,249 @@ @@ -347,6 +338,3 @@ index 0000000..001f7dfc +MODULE_DESCRIPTION("Allwinner sunxi AHCI SATA driver"); +MODULE_AUTHOR("Olliver Schinagl <oliver@schinagl.nl>"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/192-ahci-platform-changes.patch b/target/linux/sunxi/patches-3.14/192-ahci-platform-changes.patch index 3c567f8..a5f4fc5 100644 --- a/target/linux/sunxi/patches-3.14/192-ahci-platform-changes.patch +++ b/target/linux/sunxi/patches-3.14/192-ahci-platform-changes.patch @@ -14,72 +14,18 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> drivers/ata/ahci_platform.c | 1 + 1 file changed, 1 insertion(+) -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index bdadec1..d7e55ba 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c -@@ -609,6 +609,7 @@ static const struct of_device_id ahci_of_match[] = { - { .compatible = "snps,spear-ahci", }, - { .compatible = "snps,exynos5440-ahci", }, - { .compatible = "ibm,476gtr-ahci", }, -+ { .compatible = "snps,dwc-ahci", }, - {}, - }; - MODULE_DEVICE_TABLE(of, ahci_of_match); --- -2.0.3 - -From 2be39fa6b6531bd083c766999345adc348b14c77 Mon Sep 17 00:00:00 2001 -From: Roger Quadros <rogerq@ti.com> -Date: Mon, 27 Jan 2014 16:41:18 +0200 -Subject: [PATCH] ata: ahci_platform: Manage SATA PHY - -Some platforms have a PHY hooked up to the -SATA controller. The PHY needs to be initialized -and powered up for SATA to work. We do that -using the PHY framework. - -CC: Balaji T K <balajitk@ti.com> -Signed-off-by: Roger Quadros <rogerq@ti.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci.h | 2 ++ - drivers/ata/ahci_platform.c | 47 +++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 47 insertions(+), 2 deletions(-) - -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index bf8100c..3ab7ac9 100644 ---- a/drivers/ata/ahci.h -+++ b/drivers/ata/ahci.h -@@ -37,6 +37,7 @@ - - #include <linux/clk.h> - #include <linux/libata.h> -+#include <linux/phy/phy.h> - #include <linux/regulator/consumer.h> - - /* Enclosure Management Control */ -@@ -325,6 +326,7 @@ struct ahci_host_priv { - u32 em_msg_type; /* EM message type */ - struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ - struct regulator *target_pwr; /* Optional */ -+ struct phy *phy; /* If platform uses phy */ - void *plat_data; /* Other platform data */ - /* - * Optional ahci_start_engine override, if not set this gets set to the -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index d7e55ba..99d38c1 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -23,6 +23,7 @@ +@@ -23,6 +23,8 @@ #include <linux/platform_device.h> #include <linux/libata.h> #include <linux/ahci_platform.h> +#include <linux/phy/phy.h> ++#include <linux/pm_runtime.h> #include "ahci.h" static void ahci_host_stop(struct ata_host *host); -@@ -147,6 +148,7 @@ EXPORT_SYMBOL_GPL(ahci_platform_disable_clks); +@@ -147,6 +149,7 @@ EXPORT_SYMBOL_GPL(ahci_platform_disable_ * the following order: * 1) Regulator * 2) Clocks (through ahci_platform_enable_clks) @@ -87,7 +33,7 @@ index d7e55ba..99d38c1 100644 * * If resource enabling fails at any point the previous enabled * resources are disabled in reverse order. -@@ -171,8 +173,23 @@ int ahci_platform_enable_resources(struct ahci_host_priv *hpriv) +@@ -171,8 +174,23 @@ int ahci_platform_enable_resources(struc if (rc) goto disable_regulator; @@ -111,7 +57,7 @@ index d7e55ba..99d38c1 100644 disable_regulator: if (hpriv->target_pwr) regulator_disable(hpriv->target_pwr); -@@ -186,14 +203,20 @@ EXPORT_SYMBOL_GPL(ahci_platform_enable_resources); +@@ -186,14 +204,20 @@ EXPORT_SYMBOL_GPL(ahci_platform_enable_r * * This function disables all ahci_platform managed resources in * the following order: @@ -134,7 +80,19 @@ index d7e55ba..99d38c1 100644 ahci_platform_disable_clks(hpriv); if (hpriv->target_pwr) -@@ -222,6 +245,7 @@ static void ahci_platform_put_resources(struct device *dev, void *res) +@@ -206,6 +230,11 @@ static void ahci_platform_put_resources( + struct ahci_host_priv *hpriv = res; + int c; + ++ if (hpriv->got_runtime_pm) { ++ pm_runtime_put_sync(dev); ++ pm_runtime_disable(dev); ++ } ++ + for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) + clk_put(hpriv->clks[c]); + } +@@ -222,6 +251,7 @@ static void ahci_platform_put_resources( * 2) regulator for controlling the targets power (optional) * 3) 0 - AHCI_MAX_CLKS clocks, as specified in the devs devicetree node, * or for non devicetree enabled platforms a single clock @@ -142,7 +100,7 @@ index d7e55ba..99d38c1 100644 * * LOCKING: * None. -@@ -283,6 +307,25 @@ struct ahci_host_priv *ahci_platform_get_resources( +@@ -283,6 +313,29 @@ struct ahci_host_priv *ahci_platform_get hpriv->clks[i] = clk; } @@ -165,75 +123,6 @@ index d7e55ba..99d38c1 100644 + } + } + - devres_remove_group(dev, NULL); - return hpriv; - --- -2.0.3 - -From 22d93de35a39507bcdf0c62c5e1fab0625f7c6f6 Mon Sep 17 00:00:00 2001 -From: Roger Quadros <rogerq@ti.com> -Date: Wed, 9 Oct 2013 15:08:59 +0300 -Subject: [PATCH] ata: ahci_platform: runtime resume the device before use - -On OMAP platforms the device needs to be runtime resumed before -it can be accessed. The OMAP HWMOD framework takes care of -enabling the module and its resources based on the -device's runtime PM state. - -In this patch we runtime resume during .probe() and runtime suspend -after .remove(). - -We also update the runtime PM state during .resume(). - -CC: Balaji T K <balajitk@ti.com> -Signed-off-by: Roger Quadros <rogerq@ti.com> -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci.h | 1 + - drivers/ata/ahci_platform.c | 15 +++++++++++++++ - 2 files changed, 16 insertions(+) - -diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h -index 3ab7ac9..51af275b 100644 ---- a/drivers/ata/ahci.h -+++ b/drivers/ata/ahci.h -@@ -324,6 +324,7 @@ struct ahci_host_priv { - u32 em_loc; /* enclosure management location */ - u32 em_buf_sz; /* EM buffer size in byte */ - u32 em_msg_type; /* EM message type */ -+ bool got_runtime_pm; /* Did we do pm_runtime_get? */ - struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ - struct regulator *target_pwr; /* Optional */ - struct phy *phy; /* If platform uses phy */ -diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 99d38c1..75698a4 100644 ---- a/drivers/ata/ahci_platform.c -+++ b/drivers/ata/ahci_platform.c -@@ -24,6 +24,7 @@ - #include <linux/libata.h> - #include <linux/ahci_platform.h> - #include <linux/phy/phy.h> -+#include <linux/pm_runtime.h> - #include "ahci.h" - - static void ahci_host_stop(struct ata_host *host); -@@ -229,6 +230,11 @@ static void ahci_platform_put_resources(struct device *dev, void *res) - struct ahci_host_priv *hpriv = res; - int c; - -+ if (hpriv->got_runtime_pm) { -+ pm_runtime_put_sync(dev); -+ pm_runtime_disable(dev); -+ } -+ - for (c = 0; c < AHCI_MAX_CLKS && hpriv->clks[c]; c++) - clk_put(hpriv->clks[c]); - } -@@ -326,6 +332,10 @@ struct ahci_host_priv *ahci_platform_get_resources( - } - } - + pm_runtime_enable(dev); + pm_runtime_get_sync(dev); + hpriv->got_runtime_pm = true; @@ -241,7 +130,7 @@ index 99d38c1..75698a4 100644 devres_remove_group(dev, NULL); return hpriv; -@@ -635,6 +645,11 @@ int ahci_platform_resume(struct device *dev) +@@ -592,6 +645,11 @@ int ahci_platform_resume(struct device * if (rc) goto disable_resources; @@ -253,27 +142,38 @@ index 99d38c1..75698a4 100644 return 0; disable_resources: --- -2.0.3 - -From 22cccaf7a29b2a9d8a1440d089f399a6d2432b81 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Sun, 23 Feb 2014 11:37:17 +0100 -Subject: [PATCH] ahci_sunxi: Use msleep instead of mdelay - -ahci_sunxi_phy_init is called from the probe and resume code paths, and -sleeping is safe in both, so use msleep instead of mdelay. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/ata/ahci_sunxi.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/drivers/ata/ahci_sunxi.c b/drivers/ata/ahci_sunxi.c -index 001f7dfc..d1bf3f7 100644 +@@ -609,6 +667,7 @@ static const struct of_device_id ahci_of + { .compatible = "snps,spear-ahci", }, + { .compatible = "snps,exynos5440-ahci", }, + { .compatible = "ibm,476gtr-ahci", }, ++ { .compatible = "snps,dwc-ahci", }, + {}, + }; + MODULE_DEVICE_TABLE(of, ahci_of_match); +--- a/drivers/ata/ahci.h ++++ b/drivers/ata/ahci.h +@@ -37,6 +37,7 @@ + + #include <linux/clk.h> + #include <linux/libata.h> ++#include <linux/phy/phy.h> + #include <linux/regulator/consumer.h> + + /* Enclosure Management Control */ +@@ -324,8 +325,10 @@ struct ahci_host_priv { + u32 em_loc; /* enclosure management location */ + u32 em_buf_sz; /* EM buffer size in byte */ + u32 em_msg_type; /* EM message type */ ++ bool got_runtime_pm; /* Did we do pm_runtime_get? */ + struct clk *clks[AHCI_MAX_CLKS]; /* Optional */ + struct regulator *target_pwr; /* Optional */ ++ struct phy *phy; /* If platform uses phy */ + void *plat_data; /* Other platform data */ + /* + * Optional ahci_start_engine override, if not set this gets set to the --- a/drivers/ata/ahci_sunxi.c +++ b/drivers/ata/ahci_sunxi.c -@@ -90,7 +90,7 @@ static int ahci_sunxi_phy_init(struct device *dev, void __iomem *reg_base) +@@ -90,7 +90,7 @@ static int ahci_sunxi_phy_init(struct de /* This magic is from the original code */ writel(0, reg_base + AHCI_RWCR); @@ -282,7 +182,7 @@ index 001f7dfc..d1bf3f7 100644 sunxi_setbits(reg_base + AHCI_PHYCS1R, BIT(19)); sunxi_clrsetbits(reg_base + AHCI_PHYCS0R, -@@ -105,7 +105,7 @@ static int ahci_sunxi_phy_init(struct device *dev, void __iomem *reg_base) +@@ -105,7 +105,7 @@ static int ahci_sunxi_phy_init(struct de (0x7 << 20), (0x3 << 20)); sunxi_clrsetbits(reg_base + AHCI_PHYCS2R, (0x1f << 5), (0x19 << 5)); @@ -291,7 +191,7 @@ index 001f7dfc..d1bf3f7 100644 sunxi_setbits(reg_base + AHCI_PHYCS0R, (0x1 << 19)); -@@ -137,7 +137,7 @@ static int ahci_sunxi_phy_init(struct device *dev, void __iomem *reg_base) +@@ -137,7 +137,7 @@ static int ahci_sunxi_phy_init(struct de udelay(1); } while (1); @@ -300,6 +200,3 @@ index 001f7dfc..d1bf3f7 100644 writel(0x7, reg_base + AHCI_RWCR); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/195-1-ohci-plat-changes.patch b/target/linux/sunxi/patches-3.14/195-1-ohci-plat-changes.patch index 2fb1928..fb4c87e 100644 --- a/target/linux/sunxi/patches-3.14/195-1-ohci-plat-changes.patch +++ b/target/linux/sunxi/patches-3.14/195-1-ohci-plat-changes.patch @@ -19,20 +19,20 @@ Acked-by: Alan Stern <stern@rowland.harvard.edu> 2 files changed, 162 insertions(+), 22 deletions(-) create mode 100644 Documentation/devicetree/bindings/usb/usb-ohci.txt -diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt -new file mode 100644 -index 0000000..6ba38d9 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt -@@ -0,0 +1,22 @@ +@@ -0,0 +1,25 @@ +USB OHCI controllers + +Required properties: -+- compatible : "usb-ohci" ++- compatible : "generic-ohci" +- reg : ohci controller register range (address and length) +- interrupts : ohci controller interrupt + +Optional properties: ++- big-endian-regs : boolean, set this for hcds with big-endian registers ++- big-endian-desc : boolean, set this for hcds with big-endian descriptors ++- big-endian : boolean, for hcds with big-endian-regs + big-endian-desc +- clocks : a list of phandle + clock specifier pairs +- phys : phandle + phy specifier pair +- phy-names : "usb" @@ -40,15 +40,13 @@ index 0000000..6ba38d9 +Example: + + ohci0: usb@01c14400 { -+ compatible = "allwinner,sun4i-a10-ohci", "usb-ohci"; ++ compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; + reg = <0x01c14400 0x100>; + interrupts = <64>; + clocks = <&usb_clk 6>, <&ahb_gates 2>; + phys = <&usbphy 1>; + phy-names = "usb"; + }; -diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c -index 68f674c..49304dd 100644 --- a/drivers/usb/host/ohci-platform.c +++ b/drivers/usb/host/ohci-platform.c @@ -3,6 +3,7 @@ @@ -88,7 +86,7 @@ index 68f674c..49304dd 100644 static const char hcd_name[] = "ohci-platform"; -@@ -48,11 +59,67 @@ static int ohci_platform_reset(struct usb_hcd *hcd) +@@ -48,11 +59,67 @@ static int ohci_platform_reset(struct us return ohci_setup(hcd); } @@ -158,7 +156,7 @@ index 68f674c..49304dd 100644 }; static int ohci_platform_probe(struct platform_device *dev) -@@ -60,17 +127,23 @@ static int ohci_platform_probe(struct platform_device *dev) +@@ -60,17 +127,24 @@ static int ohci_platform_probe(struct pl struct usb_hcd *hcd; struct resource *res_mem; struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev); @@ -170,6 +168,7 @@ index 68f674c..49304dd 100644 - return -ENODEV; - } + struct ohci_platform_priv *priv; ++ struct ohci_hcd *ohci; + int err, irq, clk = 0; if (usb_disabled()) @@ -189,7 +188,7 @@ index 68f674c..49304dd 100644 irq = platform_get_irq(dev, 0); if (irq < 0) { dev_err(&dev->dev, "no irq provided"); -@@ -83,17 +156,40 @@ static int ohci_platform_probe(struct platform_device *dev) +@@ -83,17 +157,66 @@ static int ohci_platform_probe(struct pl return -ENXIO; } @@ -201,8 +200,34 @@ index 68f674c..49304dd 100644 + platform_set_drvdata(dev, hcd); + dev->dev.platform_data = pdata; + priv = hcd_to_ohci_priv(hcd); ++ ohci = hcd_to_ohci(hcd); + + if (pdata == &ohci_platform_defaults && dev->dev.of_node) { ++ if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) ++ ohci->flags |= OHCI_QUIRK_BE_MMIO; ++ ++ if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ++ ohci->flags |= OHCI_QUIRK_BE_DESC; ++ ++ if (of_property_read_bool(dev->dev.of_node, "big-endian")) ++ ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC; ++ ++#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO ++ if (ohci->flags & OHCI_QUIRK_BE_MMIO) { ++ dev_err(&dev->dev, ++ "Error big-endian-regs not compiled in\n"); ++ err = -EINVAL; ++ goto err_put_hcd; ++ } ++#endif ++#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_DESC ++ if (ohci->flags & OHCI_QUIRK_BE_DESC) { ++ dev_err(&dev->dev, ++ "Error big-endian-desc not compiled in\n"); ++ err = -EINVAL; ++ goto err_put_hcd; ++ } ++#endif + priv->phy = devm_phy_get(&dev->dev, "usb"); + if (IS_ERR(priv->phy)) { + err = PTR_ERR(priv->phy); @@ -238,7 +263,7 @@ index 68f674c..49304dd 100644 } hcd->rsrc_start = res_mem->start; -@@ -102,11 +198,11 @@ static int ohci_platform_probe(struct platform_device *dev) +@@ -102,11 +225,11 @@ static int ohci_platform_probe(struct pl hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); if (IS_ERR(hcd->regs)) { err = PTR_ERR(hcd->regs); @@ -252,7 +277,7 @@ index 68f674c..49304dd 100644 device_wakeup_enable(hcd->self.controller); -@@ -114,11 +210,17 @@ static int ohci_platform_probe(struct platform_device *dev) +@@ -114,11 +237,17 @@ static int ohci_platform_probe(struct pl return err; @@ -272,7 +297,7 @@ index 68f674c..49304dd 100644 return err; } -@@ -127,13 +229,22 @@ static int ohci_platform_remove(struct platform_device *dev) +@@ -127,13 +256,22 @@ static int ohci_platform_remove(struct p { struct usb_hcd *hcd = platform_get_drvdata(dev); struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev); @@ -296,12 +321,12 @@ index 68f674c..49304dd 100644 return 0; } -@@ -180,6 +291,12 @@ static int ohci_platform_resume(struct device *dev) +@@ -180,6 +318,12 @@ static int ohci_platform_resume(struct d #define ohci_platform_resume NULL #endif /* CONFIG_PM */ +static const struct of_device_id ohci_platform_ids[] = { -+ { .compatible = "usb-ohci", }, ++ { .compatible = "generic-ohci", }, + { } +}; +MODULE_DEVICE_TABLE(of, ohci_platform_ids); @@ -309,7 +334,7 @@ index 68f674c..49304dd 100644 static const struct platform_device_id ohci_platform_table[] = { { "ohci-platform", 0 }, { } -@@ -200,6 +317,7 @@ static struct platform_driver ohci_platform_driver = { +@@ -200,6 +344,7 @@ static struct platform_driver ohci_platf .owner = THIS_MODULE, .name = "ohci-platform", .pm = &ohci_platform_pm_ops, @@ -317,155 +342,3 @@ index 68f674c..49304dd 100644 } }; --- -2.0.3 - -From 8c4b97ea8b66e0fc8bdf648675e6889ce48c5ea7 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 21 Jan 2014 16:05:47 +0100 -Subject: [PATCH] ohci-platform: Add support for controllers with big-endian - regs / descriptors - -Note this commit uses the same devicetree booleans for this as the ones -already existing in the usb-ehci bindings, see: -Documentation/devicetree/bindings/usb/usb-ehci.txt - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - Documentation/devicetree/bindings/usb/usb-ohci.txt | 3 +++ - drivers/usb/host/ohci-platform.c | 27 ++++++++++++++++++++++ - 2 files changed, 30 insertions(+) - -diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt -index 6ba38d9..6933b0c 100644 ---- a/Documentation/devicetree/bindings/usb/usb-ohci.txt -+++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt -@@ -6,6 +6,9 @@ Required properties: - - interrupts : ohci controller interrupt - - Optional properties: -+- big-endian-regs : boolean, set this for hcds with big-endian registers -+- big-endian-desc : boolean, set this for hcds with big-endian descriptors -+- big-endian : boolean, for hcds with big-endian-regs + big-endian-desc - - clocks : a list of phandle + clock specifier pairs - - phys : phandle + phy specifier pair - - phy-names : "usb" -diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c -index 49304dd..e2c28fd 100644 ---- a/drivers/usb/host/ohci-platform.c -+++ b/drivers/usb/host/ohci-platform.c -@@ -128,6 +128,7 @@ static int ohci_platform_probe(struct platform_device *dev) - struct resource *res_mem; - struct usb_ohci_pdata *pdata = dev_get_platdata(&dev->dev); - struct ohci_platform_priv *priv; -+ struct ohci_hcd *ohci; - int err, irq, clk = 0; - - if (usb_disabled()) -@@ -164,8 +165,34 @@ static int ohci_platform_probe(struct platform_device *dev) - platform_set_drvdata(dev, hcd); - dev->dev.platform_data = pdata; - priv = hcd_to_ohci_priv(hcd); -+ ohci = hcd_to_ohci(hcd); - - if (pdata == &ohci_platform_defaults && dev->dev.of_node) { -+ if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) -+ ohci->flags |= OHCI_QUIRK_BE_MMIO; -+ -+ if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) -+ ohci->flags |= OHCI_QUIRK_BE_DESC; -+ -+ if (of_property_read_bool(dev->dev.of_node, "big-endian")) -+ ohci->flags |= OHCI_QUIRK_BE_MMIO | OHCI_QUIRK_BE_DESC; -+ -+#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_MMIO -+ if (ohci->flags & OHCI_QUIRK_BE_MMIO) { -+ dev_err(&dev->dev, -+ "Error big-endian-regs not compiled in\n"); -+ err = -EINVAL; -+ goto err_put_hcd; -+ } -+#endif -+#ifndef CONFIG_USB_OHCI_BIG_ENDIAN_DESC -+ if (ohci->flags & OHCI_QUIRK_BE_DESC) { -+ dev_err(&dev->dev, -+ "Error big-endian-desc not compiled in\n"); -+ err = -EINVAL; -+ goto err_put_hcd; -+ } -+#endif - priv->phy = devm_phy_get(&dev->dev, "usb"); - if (IS_ERR(priv->phy)) { - err = PTR_ERR(priv->phy); --- -2.0.3 - -From ddf77eb2ec72a3676dabe17baf6e3b32ce0542e5 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 11 Feb 2014 11:27:29 +0100 -Subject: [PATCH] ohci-platform: Change compatible string from usb-ohci to - generic-ohci - -The initial versions of the devicetree enablement patches for ohci-platform -used "ohci-platform" as compatible string. However this was disliked by various -reviewers because the platform bus is a Linux invention and devicetree is -supposed to be OS agnostic. After much discussion I gave up and went with -the generic usb-ohci as requested. - -In retro-spect I should have chosen something different, the dts files for many -existing boards already claim to be compatible with "usb-ohci", ie they have: - - compatible = "ti,ohci-omap3", "usb-ohci"; - -In theory this should not be a problem since the "ti,ohci-omap3" entry takes -presedence, but in practice using a conflicting compatible string is an issue, -because it makes which driver gets used depend on driver registration order. - -This patch changes the compatible string claimed by ohci-platform to -"generic-ohci", avoiding the driver registration / module loading ordering -problems. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - Documentation/devicetree/bindings/usb/usb-ohci.txt | 4 ++-- - drivers/usb/host/ohci-platform.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt -index 6933b0c..45f67d9 100644 ---- a/Documentation/devicetree/bindings/usb/usb-ohci.txt -+++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt -@@ -1,7 +1,7 @@ - USB OHCI controllers - - Required properties: --- compatible : "usb-ohci" -+- compatible : "generic-ohci" - - reg : ohci controller register range (address and length) - - interrupts : ohci controller interrupt - -@@ -16,7 +16,7 @@ Optional properties: - Example: - - ohci0: usb@01c14400 { -- compatible = "allwinner,sun4i-a10-ohci", "usb-ohci"; -+ compatible = "allwinner,sun4i-a10-ohci", "generic-ohci"; - reg = <0x01c14400 0x100>; - interrupts = <64>; - clocks = <&usb_clk 6>, <&ahb_gates 2>; -diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c -index e2c28fd..b6ca0b2 100644 ---- a/drivers/usb/host/ohci-platform.c -+++ b/drivers/usb/host/ohci-platform.c -@@ -319,7 +319,7 @@ static int ohci_platform_resume(struct device *dev) - #endif /* CONFIG_PM */ - - static const struct of_device_id ohci_platform_ids[] = { -- { .compatible = "usb-ohci", }, -+ { .compatible = "generic-ohci", }, - { } - }; - MODULE_DEVICE_TABLE(of, ohci_platform_ids); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/195-2-ehci-plat-changes.patch b/target/linux/sunxi/patches-3.14/195-2-ehci-plat-changes.patch index b8ee130..425993c 100644 --- a/target/linux/sunxi/patches-3.14/195-2-ehci-plat-changes.patch +++ b/target/linux/sunxi/patches-3.14/195-2-ehci-plat-changes.patch @@ -38,11 +38,16 @@ Acked-by: Alan Stern <stern@rowland.harvard.edu> delete mode 100644 Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt delete mode 100644 Documentation/devicetree/bindings/usb/vt8500-ehci.txt -diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt -index fa18612..2c1aeeb 100644 --- a/Documentation/devicetree/bindings/usb/usb-ehci.txt +++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt -@@ -7,13 +7,14 @@ Required properties: +@@ -1,19 +1,20 @@ + USB EHCI controllers + + Required properties: +- - compatible : should be "usb-ehci". ++ - compatible : should be "generic-ehci". + - reg : should contain at least address and length of the standard EHCI + register set for the device. Optional platform-dependent registers (debug-port or other) can be also specified here, but only after definition of standard EHCI registers. - interrupts : one EHCI interrupt should be described here. @@ -71,16 +76,13 @@ index fa18612..2c1aeeb 100644 + +Example (Allwinner sun4i A10 SoC): + ehci0: usb@01c14000 { -+ compatible = "allwinner,sun4i-a10-ehci", "usb-ehci"; ++ compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; + reg = <0x01c14000 0x100>; + interrupts = <39>; + clocks = <&ahb_gates 1>; + phys = <&usbphy 1>; + phy-names = "usb"; + }; -diff --git a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt -deleted file mode 100644 -index 17b3ad1..0000000 --- a/Documentation/devicetree/bindings/usb/via,vt8500-ehci.txt +++ /dev/null @@ -1,15 +0,0 @@ @@ -99,9 +101,6 @@ index 17b3ad1..0000000 - reg = <0xd8007900 0x200>; - interrupts = <43>; - }; -diff --git a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt b/Documentation/devicetree/bindings/usb/vt8500-ehci.txt -deleted file mode 100644 -index 5fb8fd6..0000000 --- a/Documentation/devicetree/bindings/usb/vt8500-ehci.txt +++ /dev/null @@ -1,12 +0,0 @@ @@ -117,20 +116,6 @@ index 5fb8fd6..0000000 - reg = <0xD8007100 0x200>; - interrupts = <1>; -}; -diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index a9707da..e28cbe0 100644 ---- a/drivers/usb/host/Kconfig -+++ b/drivers/usb/host/Kconfig -@@ -255,6 +255,7 @@ config USB_EHCI_ATH79 - - config USB_EHCI_HCD_PLATFORM - tristate "Generic EHCI driver for a platform device" -+ depends on !PPC_OF - default n - ---help--- - Adds an EHCI host driver for a generic platform device, which -diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c -index 01536cf..5ebd0b7 100644 --- a/drivers/usb/host/ehci-platform.c +++ b/drivers/usb/host/ehci-platform.c @@ -3,6 +3,7 @@ @@ -171,7 +156,20 @@ index 01536cf..5ebd0b7 100644 static const char hcd_name[] = "ehci-platform"; -@@ -64,38 +74,90 @@ static int ehci_platform_reset(struct usb_hcd *hcd) +@@ -45,8 +55,10 @@ static int ehci_platform_reset(struct us + + hcd->has_tt = pdata->has_tt; + ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug; +- ehci->big_endian_desc = pdata->big_endian_desc; +- ehci->big_endian_mmio = pdata->big_endian_mmio; ++ if (pdata->big_endian_desc) ++ ehci->big_endian_desc = 1; ++ if (pdata->big_endian_mmio) ++ ehci->big_endian_mmio = 1; + ehci->ignore_oc = pdata->ignore_oc; + + if (pdata->pre_setup) { +@@ -65,38 +77,91 @@ static int ehci_platform_reset(struct us return 0; } @@ -248,6 +246,7 @@ index 01536cf..5ebd0b7 100644 - int err; + struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev); + struct ehci_platform_priv *priv; ++ struct ehci_hcd *ehci; + int err, irq, clk = 0; if (usb_disabled()) @@ -273,7 +272,7 @@ index 01536cf..5ebd0b7 100644 irq = platform_get_irq(dev, 0); if (irq < 0) { dev_err(&dev->dev, "no irq provided"); -@@ -107,17 +169,40 @@ static int ehci_platform_probe(struct platform_device *dev) +@@ -108,17 +173,66 @@ static int ehci_platform_probe(struct pl return -ENXIO; } @@ -285,8 +284,34 @@ index 01536cf..5ebd0b7 100644 + platform_set_drvdata(dev, hcd); + dev->dev.platform_data = pdata; + priv = hcd_to_ehci_priv(hcd); ++ ehci = hcd_to_ehci(hcd); + + if (pdata == &ehci_platform_defaults && dev->dev.of_node) { ++ if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) ++ ehci->big_endian_mmio = 1; ++ ++ if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) ++ ehci->big_endian_desc = 1; ++ ++ if (of_property_read_bool(dev->dev.of_node, "big-endian")) ++ ehci->big_endian_mmio = ehci->big_endian_desc = 1; ++ ++#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO ++ if (ehci->big_endian_mmio) { ++ dev_err(&dev->dev, ++ "Error big-endian-regs not compiled in\n"); ++ err = -EINVAL; ++ goto err_put_hcd; ++ } ++#endif ++#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_DESC ++ if (ehci->big_endian_desc) { ++ dev_err(&dev->dev, ++ "Error big-endian-desc not compiled in\n"); ++ err = -EINVAL; ++ goto err_put_hcd; ++ } ++#endif + priv->phy = devm_phy_get(&dev->dev, "usb"); + if (IS_ERR(priv->phy)) { + err = PTR_ERR(priv->phy); @@ -322,7 +347,7 @@ index 01536cf..5ebd0b7 100644 } hcd->rsrc_start = res_mem->start; -@@ -126,22 +211,28 @@ static int ehci_platform_probe(struct platform_device *dev) +@@ -127,22 +241,28 @@ static int ehci_platform_probe(struct pl hcd->regs = devm_ioremap_resource(&dev->dev, res_mem); if (IS_ERR(hcd->regs)) { err = PTR_ERR(hcd->regs); @@ -355,7 +380,7 @@ index 01536cf..5ebd0b7 100644 return err; } -@@ -150,13 +241,19 @@ static int ehci_platform_remove(struct platform_device *dev) +@@ -151,13 +271,19 @@ static int ehci_platform_remove(struct p { struct usb_hcd *hcd = platform_get_drvdata(dev); struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev); @@ -376,177 +401,14 @@ index 01536cf..5ebd0b7 100644 if (pdata == &ehci_platform_defaults) dev->dev.platform_data = NULL; -@@ -207,8 +304,10 @@ static int ehci_platform_resume(struct device *dev) +@@ -208,8 +334,10 @@ static int ehci_platform_resume(struct d static const struct of_device_id vt8500_ehci_ids[] = { { .compatible = "via,vt8500-ehci", }, { .compatible = "wm,prizm-ehci", }, -+ { .compatible = "usb-ehci", }, ++ { .compatible = "generic-ehci", }, {} }; +MODULE_DEVICE_TABLE(of, vt8500_ehci_ids); static const struct platform_device_id ehci_platform_table[] = { { "ehci-platform", 0 }, --- -2.0.3 - -From 91fc5f6e5e90d412a6778efbe05e5306a1df5032 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 21 Jan 2014 16:20:53 +0100 -Subject: [PATCH] ehci-platform: Add support for controllers with big-endian - regs / descriptors - -This uses the already documented devicetree booleans for this, see: -Documentation/devicetree/bindings/usb/usb-ehci.txt - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/usb/host/ehci-platform.c | 33 +++++++++++++++++++++++++++++++-- - 1 file changed, 31 insertions(+), 2 deletions(-) - -diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c -index 5ebd0b7..8fde649 100644 ---- a/drivers/usb/host/ehci-platform.c -+++ b/drivers/usb/host/ehci-platform.c -@@ -55,8 +55,10 @@ static int ehci_platform_reset(struct usb_hcd *hcd) - - hcd->has_tt = pdata->has_tt; - ehci->has_synopsys_hc_bug = pdata->has_synopsys_hc_bug; -- ehci->big_endian_desc = pdata->big_endian_desc; -- ehci->big_endian_mmio = pdata->big_endian_mmio; -+ if (pdata->big_endian_desc) -+ ehci->big_endian_desc = 1; -+ if (pdata->big_endian_mmio) -+ ehci->big_endian_mmio = 1; - ehci->ignore_oc = pdata->ignore_oc; - - if (pdata->pre_setup) { -@@ -142,6 +144,7 @@ static int ehci_platform_probe(struct platform_device *dev) - struct resource *res_mem; - struct usb_ehci_pdata *pdata = dev_get_platdata(&dev->dev); - struct ehci_platform_priv *priv; -+ struct ehci_hcd *ehci; - int err, irq, clk = 0; - - if (usb_disabled()) -@@ -177,8 +180,34 @@ static int ehci_platform_probe(struct platform_device *dev) - platform_set_drvdata(dev, hcd); - dev->dev.platform_data = pdata; - priv = hcd_to_ehci_priv(hcd); -+ ehci = hcd_to_ehci(hcd); - - if (pdata == &ehci_platform_defaults && dev->dev.of_node) { -+ if (of_property_read_bool(dev->dev.of_node, "big-endian-regs")) -+ ehci->big_endian_mmio = 1; -+ -+ if (of_property_read_bool(dev->dev.of_node, "big-endian-desc")) -+ ehci->big_endian_desc = 1; -+ -+ if (of_property_read_bool(dev->dev.of_node, "big-endian")) -+ ehci->big_endian_mmio = ehci->big_endian_desc = 1; -+ -+#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_MMIO -+ if (ehci->big_endian_mmio) { -+ dev_err(&dev->dev, -+ "Error big-endian-regs not compiled in\n"); -+ err = -EINVAL; -+ goto err_put_hcd; -+ } -+#endif -+#ifndef CONFIG_USB_EHCI_BIG_ENDIAN_DESC -+ if (ehci->big_endian_desc) { -+ dev_err(&dev->dev, -+ "Error big-endian-desc not compiled in\n"); -+ err = -EINVAL; -+ goto err_put_hcd; -+ } -+#endif - priv->phy = devm_phy_get(&dev->dev, "usb"); - if (IS_ERR(priv->phy)) { - err = PTR_ERR(priv->phy); --- -2.0.3 - -From 4a1ce69fa8c4595483493cd7df21c66dbcca1307 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 11 Feb 2014 11:46:13 +0100 -Subject: [PATCH] ehci-platform: Change compatible string from usb-ehci to - generic-ehci - -The initial versions of the devicetree enablement patches for ehci-platform -used "ehci-platform" as compatible string. However this was disliked by various -reviewers because the platform bus is a Linux invention and devicetree is -supposed to be OS agnostic. After much discussion I gave up, added a: -"depends on !PPC_OF" to Kconfig to avoid a known conflict with PPC-OF platforms -and went with the generic usb-ehci as requested. - -In retro-spect I should have chosen something different, the dts files for many -existing boards already claim to be compatible with "usb-ehci", ie they have: - - compatible = "ti,ehci-omap", "usb-ehci"; - -In theory this should not be a problem since the "ti,ehci-omap" entry takes -presedence, but in practice using a conflicting compatible string is an issue, -because it makes which driver gets used depend on driver registration order. - -This patch changes the compatible string claimed by ehci-platform to -"generic-ehci", avoiding the driver registration / module loading ordering -problems, and removes the "depends on !PPC_OF" workaround. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - Documentation/devicetree/bindings/usb/usb-ehci.txt | 4 ++-- - drivers/usb/host/Kconfig | 1 - - drivers/usb/host/ehci-platform.c | 2 +- - 3 files changed, 3 insertions(+), 4 deletions(-) - -diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt -index 2c1aeeb..ff151ec 100644 ---- a/Documentation/devicetree/bindings/usb/usb-ehci.txt -+++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt -@@ -1,7 +1,7 @@ - USB EHCI controllers - - Required properties: -- - compatible : should be "usb-ehci". -+ - compatible : should be "generic-ehci". - - reg : should contain at least address and length of the standard EHCI - register set for the device. Optional platform-dependent registers - (debug-port or other) can be also specified here, but only after -@@ -27,7 +27,7 @@ Example (Sequoia 440EPx): - - Example (Allwinner sun4i A10 SoC): - ehci0: usb@01c14000 { -- compatible = "allwinner,sun4i-a10-ehci", "usb-ehci"; -+ compatible = "allwinner,sun4i-a10-ehci", "generic-ehci"; - reg = <0x01c14000 0x100>; - interrupts = <39>; - clocks = <&ahb_gates 1>; -diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig -index e28cbe0..a9707da 100644 ---- a/drivers/usb/host/Kconfig -+++ b/drivers/usb/host/Kconfig -@@ -255,7 +255,6 @@ config USB_EHCI_ATH79 - - config USB_EHCI_HCD_PLATFORM - tristate "Generic EHCI driver for a platform device" -- depends on !PPC_OF - default n - ---help--- - Adds an EHCI host driver for a generic platform device, which -diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c -index 8fde649..1178730 100644 ---- a/drivers/usb/host/ehci-platform.c -+++ b/drivers/usb/host/ehci-platform.c -@@ -333,7 +333,7 @@ static int ehci_platform_resume(struct device *dev) - static const struct of_device_id vt8500_ehci_ids[] = { - { .compatible = "via,vt8500-ehci", }, - { .compatible = "wm,prizm-ehci", }, -- { .compatible = "usb-ehci", }, -+ { .compatible = "generic-ehci", }, - {} - }; - MODULE_DEVICE_TABLE(of, vt8500_ehci_ids); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/195-3-uhci-plat-changes.patch b/target/linux/sunxi/patches-3.14/195-3-uhci-plat-changes.patch index d9ce1fc..53c808f 100644 --- a/target/linux/sunxi/patches-3.14/195-3-uhci-plat-changes.patch +++ b/target/linux/sunxi/patches-3.14/195-3-uhci-plat-changes.patch @@ -24,9 +24,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> delete mode 100644 Documentation/devicetree/bindings/usb/platform-uhci.txt create mode 100644 Documentation/devicetree/bindings/usb/usb-uhci.txt -diff --git a/Documentation/devicetree/bindings/usb/platform-uhci.txt b/Documentation/devicetree/bindings/usb/platform-uhci.txt -deleted file mode 100644 -index a4fb071..0000000 --- a/Documentation/devicetree/bindings/usb/platform-uhci.txt +++ /dev/null @@ -1,15 +0,0 @@ @@ -45,9 +42,6 @@ index a4fb071..0000000 - reg = <0xd8007b00 0x200>; - interrupts = <43>; - }; -diff --git a/Documentation/devicetree/bindings/usb/usb-uhci.txt b/Documentation/devicetree/bindings/usb/usb-uhci.txt -new file mode 100644 -index 0000000..2981334 --- /dev/null +++ b/Documentation/devicetree/bindings/usb/usb-uhci.txt @@ -0,0 +1,15 @@ @@ -66,11 +60,9 @@ index 0000000..2981334 + reg = <0xd8007b00 0x200>; + interrupts = <43>; + }; -diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c -index 44e6c9d..01833ab 100644 --- a/drivers/usb/host/uhci-platform.c +++ b/drivers/usb/host/uhci-platform.c -@@ -148,6 +148,7 @@ static void uhci_hcd_platform_shutdown(struct platform_device *op) +@@ -148,6 +148,7 @@ static void uhci_hcd_platform_shutdown(s } static const struct of_device_id platform_uhci_ids[] = { @@ -78,6 +70,3 @@ index 44e6c9d..01833ab 100644 { .compatible = "platform-uhci", }, {} }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/195-4-xhci-plat-changes.patch b/target/linux/sunxi/patches-3.14/195-4-xhci-plat-changes.patch index 81dc4d4..202bdd0 100644 --- a/target/linux/sunxi/patches-3.14/195-4-xhci-plat-changes.patch +++ b/target/linux/sunxi/patches-3.14/195-4-xhci-plat-changes.patch @@ -18,8 +18,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> drivers/usb/host/xhci-plat.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) -diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.txt b/Documentation/devicetree/bindings/usb/usb-xhci.txt -index 5752df0..90f8f60 100644 --- a/Documentation/devicetree/bindings/usb/usb-xhci.txt +++ b/Documentation/devicetree/bindings/usb/usb-xhci.txt @@ -1,14 +1,14 @@ @@ -39,11 +37,9 @@ index 5752df0..90f8f60 100644 reg = <0xf0931000 0x8c8>; interrupts = <0x0 0x4e 0x0>; }; -diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c -index 8abda5c..8affef9 100644 --- a/drivers/usb/host/xhci-plat.c +++ b/drivers/usb/host/xhci-plat.c -@@ -226,6 +226,7 @@ static const struct dev_pm_ops xhci_plat_pm_ops = { +@@ -226,6 +226,7 @@ static const struct dev_pm_ops xhci_plat #ifdef CONFIG_OF static const struct of_device_id usb_xhci_of_match[] = { @@ -51,6 +47,3 @@ index 8abda5c..8affef9 100644 { .compatible = "xhci-platform" }, { }, }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/196-usb-add-sunxi-phy-driver.patch b/target/linux/sunxi/patches-3.14/196-usb-add-sunxi-phy-driver.patch index eee6977..5f1ea83 100644 --- a/target/linux/sunxi/patches-3.14/196-usb-add-sunxi-phy-driver.patch +++ b/target/linux/sunxi/patches-3.14/196-usb-add-sunxi-phy-driver.patch @@ -20,9 +20,6 @@ Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> create mode 100644 Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt create mode 100644 drivers/phy/phy-sun4i-usb.c -diff --git a/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt -new file mode 100644 -index 0000000..a82361b --- /dev/null +++ b/Documentation/devicetree/bindings/phy/sun4i-usb-phy.txt @@ -0,0 +1,26 @@ @@ -52,8 +49,6 @@ index 0000000..a82361b + resets = <&usb_clk 1>, <&usb_clk 2>; + reset-names = "usb1_reset", "usb2_reset"; + }; -diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig -index c7a551c..66f7c4e 100644 --- a/drivers/phy/Kconfig +++ b/drivers/phy/Kconfig @@ -65,4 +65,15 @@ config BCM_KONA_USB2_PHY @@ -72,18 +67,13 @@ index c7a551c..66f7c4e 100644 + parts, as well as the 2 regular USB 2 host PHYs. + endmenu -diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile -index b57c253..9d4f8bb 100644 --- a/drivers/phy/Makefile +++ b/drivers/phy/Makefile -@@ -9,3 +9,4 @@ obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += phy-exynos-mipi-video.o +@@ -9,3 +9,4 @@ obj-$(CONFIG_PHY_EXYNOS_MIPI_VIDEO) += p obj-$(CONFIG_PHY_MVEBU_SATA) += phy-mvebu-sata.o obj-$(CONFIG_OMAP_USB2) += phy-omap-usb2.o obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o +obj-$(CONFIG_PHY_SUN4I_USB) += phy-sun4i-usb.o -diff --git a/drivers/phy/phy-sun4i-usb.c b/drivers/phy/phy-sun4i-usb.c -new file mode 100644 -index 0000000..e6e6c4b --- /dev/null +++ b/drivers/phy/phy-sun4i-usb.c @@ -0,0 +1,331 @@ @@ -418,6 +408,3 @@ index 0000000..e6e6c4b +MODULE_DESCRIPTION("Allwinner sun4i USB phy driver"); +MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); +MODULE_LICENSE("GPL v2"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/200-mmc-add-driver.patch b/target/linux/sunxi/patches-3.14/200-mmc-add-driver.patch index 985b8b7..ece7154 100644 --- a/target/linux/sunxi/patches-3.14/200-mmc-add-driver.patch +++ b/target/linux/sunxi/patches-3.14/200-mmc-add-driver.patch @@ -27,11 +27,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> create mode 100644 drivers/mmc/host/sunxi-mmc.c create mode 100644 drivers/mmc/host/sunxi-mmc.h -diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 1384f67..7caf266 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig -@@ -689,3 +689,10 @@ config MMC_REALTEK_PCI +@@ -714,3 +714,10 @@ config MMC_REALTEK_PCI help Say Y here to include driver code to support SD/MMC card interface of Realtek PCI-E card reader @@ -42,11 +40,9 @@ index 1384f67..7caf266 100644 + help + This selects support for the SD/MMC Host Controller on + Allwinner sunxi SoCs. -diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile -index 3483b6b..f3c7c243 100644 --- a/drivers/mmc/host/Makefile +++ b/drivers/mmc/host/Makefile -@@ -54,6 +54,8 @@ obj-$(CONFIG_MMC_WMT) += wmt-sdmmc.o +@@ -55,6 +55,8 @@ obj-$(CONFIG_MMC_WMT) += wmt-sdmmc.o obj-$(CONFIG_MMC_REALTEK_PCI) += rtsx_pci_sdmmc.o @@ -55,9 +51,6 @@ index 3483b6b..f3c7c243 100644 obj-$(CONFIG_MMC_SDHCI_PLTFM) += sdhci-pltfm.o obj-$(CONFIG_MMC_SDHCI_CNS3XXX) += sdhci-cns3xxx.o obj-$(CONFIG_MMC_SDHCI_ESDHC_IMX) += sdhci-esdhc-imx.o -diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c -new file mode 100644 -index 0000000..a16abd2 --- /dev/null +++ b/drivers/mmc/host/sunxi-mmc.c @@ -0,0 +1,853 @@ @@ -914,9 +907,6 @@ index 0000000..a16abd2 +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("David Lanzendörfer <david.lanzendoerfer@o2s.ch>"); +MODULE_ALIAS("platform:sunxi-mmc"); -diff --git a/drivers/mmc/host/sunxi-mmc.h b/drivers/mmc/host/sunxi-mmc.h -new file mode 100644 -index 0000000..84bab99 --- /dev/null +++ b/drivers/mmc/host/sunxi-mmc.h @@ -0,0 +1,238 @@ @@ -1158,6 +1148,3 @@ index 0000000..84bab99 +}; + +#endif --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/201-dt-sun4i-add-mmc-nodes_NEED_REFRESH.patch b/target/linux/sunxi/patches-3.14/201-dt-sun4i-add-mmc-nodes_NEED_REFRESH.patch index a6261cd..10d4d58 100644 --- a/target/linux/sunxi/patches-3.14/201-dt-sun4i-add-mmc-nodes_NEED_REFRESH.patch +++ b/target/linux/sunxi/patches-3.14/201-dt-sun4i-add-mmc-nodes_NEED_REFRESH.patch @@ -14,10 +14,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10.dtsi | 58 ++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10-a1000.dts b/arch/arm/boot/dts/sun4i-a10-a1000.dts -index fa746aea..68b687e 100644 -diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -index 4684cbe..13088f0 100644 --- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts +++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts @@ -34,6 +34,14 @@ @@ -35,8 +31,6 @@ index 4684cbe..13088f0 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 27dc6ee..7014518 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -377,6 +377,50 @@ @@ -111,29 +105,6 @@ index 27dc6ee..7014518 100644 }; timer@01c20c00 { --- -2.0.3 - -From c0b8d688678e4a652895ce5f0cd48917a9a4f6ba Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Sat, 11 Jan 2014 04:33:23 +0100 -Subject: [PATCH] ARM: sun4i: dt: Add mmc node to a few more boards - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - arch/arm/boot/dts/sun4i-a10-hackberry.dts | 9 +++++++++ - arch/arm/boot/dts/sun4i-a10-inet97fv2.dts | 9 +++++++++ - arch/arm/boot/dts/sun4i-a10-mini-xplus.dts | 8 ++++++++ - arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts | 9 +++++++++ - arch/arm/boot/dts/sun4i-a10-pcduino.dts | 8 ++++++++ - 5 files changed, 43 insertions(+) - -diff --git a/arch/arm/boot/dts/sun4i-a10-hackberry.dts b/arch/arm/boot/dts/sun4i-a10-hackberry.dts -index d7c17e4..a4b05d6 100644 -diff --git a/arch/arm/boot/dts/sun4i-a10-inet97fv2.dts b/arch/arm/boot/dts/sun4i-a10-inet97fv2.dts -index fe9272e..b73a070 100644 -diff --git a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts -index dd84a9e3..c906171 100644 --- a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts +++ b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts @@ -20,6 +20,14 @@ @@ -151,8 +122,6 @@ index dd84a9e3..c906171 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts -index 66cf0c7..e5a2765 100644 --- a/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts +++ b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts @@ -33,6 +33,15 @@ @@ -171,8 +140,6 @@ index 66cf0c7..e5a2765 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/boot/dts/sun4i-a10-pcduino.dts b/arch/arm/boot/dts/sun4i-a10-pcduino.dts -index 255b47e..2820229 100644 --- a/arch/arm/boot/dts/sun4i-a10-pcduino.dts +++ b/arch/arm/boot/dts/sun4i-a10-pcduino.dts @@ -34,6 +34,14 @@ @@ -190,6 +157,3 @@ index 255b47e..2820229 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/202-dt-sun5i-add-mmc-nodes.patch b/target/linux/sunxi/patches-3.14/202-dt-sun5i-add-mmc-nodes.patch index 1f4b23c..541cef6 100644 --- a/target/linux/sunxi/patches-3.14/202-dt-sun5i-add-mmc-nodes.patch +++ b/target/linux/sunxi/patches-3.14/202-dt-sun5i-add-mmc-nodes.patch @@ -16,12 +16,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun5i-a13.dtsi | 29 +++++++++++++++ 5 files changed, 136 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts b/arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts -index 23611b7..5bc25c7 100644 -diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi -index f34e0d8..8ba1ed7 100644 -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts -index 11169d5..700f688 100644 --- a/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts @@ -21,6 +21,14 @@ @@ -53,11 +47,9 @@ index 11169d5..700f688 100644 led_pins_olinuxinom: led_pins@0 { allwinner,pins = "PG9"; allwinner,function = "gpio_out"; -diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -index 7a9187b..177196c 100644 --- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts +++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts -@@ -20,6 +20,14 @@ +@@ -21,6 +21,14 @@ compatible = "olimex,a13-olinuxino", "allwinner,sun5i-a13"; soc@01c00000 { @@ -72,7 +64,7 @@ index 7a9187b..177196c 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; status = "okay"; -@@ -34,6 +42,13 @@ +@@ -35,6 +43,13 @@ }; pinctrl@01c20800 { @@ -86,8 +78,6 @@ index 7a9187b..177196c 100644 led_pins_olinuxino: led_pins@0 { allwinner,pins = "PG9"; allwinner,function = "gpio_out"; -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 0e9c239..6fc84a4 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -320,6 +320,28 @@ @@ -133,6 +123,3 @@ index 0e9c239..6fc84a4 100644 }; timer@01c20c00 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/203-dt-sun7i-add-mmc-nodes.patch b/target/linux/sunxi/patches-3.14/203-dt-sun7i-add-mmc-nodes.patch index daa6a91..1a0459c 100644 --- a/target/linux/sunxi/patches-3.14/203-dt-sun7i-add-mmc-nodes.patch +++ b/target/linux/sunxi/patches-3.14/203-dt-sun7i-add-mmc-nodes.patch @@ -15,8 +15,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 65 +++++++++++++++++++++++++ 4 files changed, 104 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index 68de89f..cd9d3c2 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts @@ -20,6 +20,14 @@ @@ -34,8 +32,6 @@ index 68de89f..cd9d3c2 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index cb25d3c..66bb3ef 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts @@ -20,6 +20,14 @@ @@ -53,11 +49,9 @@ index cb25d3c..66bb3ef 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index eeadf76..822cbe2 100644 --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -@@ -31,6 +31,22 @@ +@@ -32,6 +32,22 @@ status = "okay"; }; @@ -80,7 +74,7 @@ index eeadf76..822cbe2 100644 usbphy: phy@01c13400 { usb1_vbus-supply = <®_usb1_vbus>; usb2_vbus-supply = <®_usb2_vbus>; -@@ -65,6 +81,13 @@ +@@ -66,6 +82,13 @@ }; pinctrl@01c20800 { @@ -94,8 +88,6 @@ index eeadf76..822cbe2 100644 led_pins_olinuxino: led_pins@0 { allwinner,pins = "PH2"; allwinner,function = "gpio_out"; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 4cc2f5f..1d9b314 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -439,6 +439,50 @@ @@ -177,6 +169,3 @@ index 4cc2f5f..1d9b314 100644 }; timer@01c20c00 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/205-nmi-add-driver.patch b/target/linux/sunxi/patches-3.14/205-nmi-add-driver.patch index 2e23f94..b98e802 100644 --- a/target/linux/sunxi/patches-3.14/205-nmi-add-driver.patch +++ b/target/linux/sunxi/patches-3.14/205-nmi-add-driver.patch @@ -16,11 +16,9 @@ Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> 2 files changed, 209 insertions(+) create mode 100644 drivers/irqchip/irq-sunxi-nmi.c -diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile -index 5194afb..1c0c151 100644 --- a/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile -@@ -12,6 +12,7 @@ obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += irq-metag.o +@@ -12,6 +12,7 @@ obj-$(CONFIG_METAG_PERFCOUNTER_IRQS) += obj-$(CONFIG_ARCH_MOXART) += irq-moxart.o obj-$(CONFIG_ORION_IRQCHIP) += irq-orion.o obj-$(CONFIG_ARCH_SUNXI) += irq-sun4i.o @@ -28,9 +26,6 @@ index 5194afb..1c0c151 100644 obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o obj-$(CONFIG_ARM_GIC) += irq-gic.o obj-$(CONFIG_ARM_NVIC) += irq-nvic.o -diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c -new file mode 100644 -index 0000000..12f547a --- /dev/null +++ b/drivers/irqchip/irq-sunxi-nmi.c @@ -0,0 +1,208 @@ @@ -242,6 +237,3 @@ index 0000000..12f547a + return sunxi_sc_nmi_irq_init(node, &sun7i_reg_offs); +} +IRQCHIP_DECLARE(sun7i_sc_nmi, "allwinner,sun7i-a20-sc-nmi", sun7i_sc_nmi_irq_init); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/206-dt-sun67i-add-nmi-irqchip.patch b/target/linux/sunxi/patches-3.14/206-dt-sun67i-add-nmi-irqchip.patch index 57979ef..3f18c50 100644 --- a/target/linux/sunxi/patches-3.14/206-dt-sun67i-add-nmi-irqchip.patch +++ b/target/linux/sunxi/patches-3.14/206-dt-sun67i-add-nmi-irqchip.patch @@ -11,11 +11,9 @@ Signed-off-by: Carlo Caione <carlo@caione.org> arch/arm/boot/dts/sun7i-a20.dtsi | 8 ++++++++ 2 files changed, 16 insertions(+) -diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi -index 8441733..74d2920 100644 --- a/arch/arm/boot/dts/sun6i-a31.dtsi +++ b/arch/arm/boot/dts/sun6i-a31.dtsi -@@ -421,6 +421,14 @@ +@@ -370,6 +370,14 @@ interrupts = <1 9 0xf04>; }; @@ -30,8 +28,6 @@ index 8441733..74d2920 100644 cpucfg@01f01c00 { compatible = "allwinner,sun6i-a31-cpuconfig"; reg = <0x01f01c00 0x300>; -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 4981f5e..2e66c85 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -401,6 +401,14 @@ @@ -49,6 +45,3 @@ index 4981f5e..2e66c85 100644 spi0: spi@01c05000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c05000 0x1000>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/210-mfd-add-axp20x-pmic-driver.patch b/target/linux/sunxi/patches-3.14/210-mfd-add-axp20x-pmic-driver.patch index 71a3952..6197300 100644 --- a/target/linux/sunxi/patches-3.14/210-mfd-add-axp20x-pmic-driver.patch +++ b/target/linux/sunxi/patches-3.14/210-mfd-add-axp20x-pmic-driver.patch @@ -23,8 +23,6 @@ Signed-off-by: Carlo Caione <carlo@caione.org> create mode 100644 drivers/mfd/axp20x.c create mode 100644 include/linux/mfd/axp20x.h -diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig -index b5df4a5..d25660d 100644 --- a/arch/arm/configs/sunxi_defconfig +++ b/arch/arm/configs/sunxi_defconfig @@ -55,6 +55,7 @@ CONFIG_GPIO_SYSFS=y @@ -35,8 +33,6 @@ index b5df4a5..d25660d 100644 # CONFIG_USB_SUPPORT is not set CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y -diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 49bb445..24ba61a 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -59,6 +59,18 @@ config MFD_AAT2870_CORE @@ -58,11 +54,9 @@ index 49bb445..24ba61a 100644 config MFD_CROS_EC tristate "ChromeOS Embedded Controller" select MFD_CORE -diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -index 5aea5ef..fb773b5 100644 --- a/drivers/mfd/Makefile +++ b/drivers/mfd/Makefile -@@ -101,6 +101,7 @@ obj-$(CONFIG_PMIC_DA9052) += da9052-irq.o +@@ -101,6 +101,7 @@ obj-$(CONFIG_PMIC_DA9052) += da9052-irq. obj-$(CONFIG_PMIC_DA9052) += da9052-core.o obj-$(CONFIG_MFD_DA9052_SPI) += da9052-spi.o obj-$(CONFIG_MFD_DA9052_I2C) += da9052-i2c.o @@ -70,9 +64,6 @@ index 5aea5ef..fb773b5 100644 obj-$(CONFIG_MFD_LP3943) += lp3943.o obj-$(CONFIG_MFD_LP8788) += lp8788.o lp8788-irq.o -diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c -new file mode 100644 -index 0000000..92e5b0f --- /dev/null +++ b/drivers/mfd/axp20x.c @@ -0,0 +1,250 @@ @@ -326,9 +317,6 @@ index 0000000..92e5b0f +MODULE_DESCRIPTION("PMIC MFD core driver for AXP20X"); +MODULE_AUTHOR("Carlo Caione <carlo@caione.org>"); +MODULE_LICENSE("GPL"); -diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h -new file mode 100644 -index 0000000..fcef32c --- /dev/null +++ b/include/linux/mfd/axp20x.h @@ -0,0 +1,180 @@ @@ -512,6 +500,3 @@ index 0000000..fcef32c +}; + +#endif /* __LINUX_MFD_AXP20X_H */ --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/211-input-add-axp20x-power-enable-key-support.patch b/target/linux/sunxi/patches-3.14/211-input-add-axp20x-power-enable-key-support.patch index 9291dc5..c7ce5e2 100644 --- a/target/linux/sunxi/patches-3.14/211-input-add-axp20x-power-enable-key-support.patch +++ b/target/linux/sunxi/patches-3.14/211-input-add-axp20x-power-enable-key-support.patch @@ -16,8 +16,6 @@ Signed-off-by: Carlo Caione <carlo@caione.org> 4 files changed, 279 insertions(+) create mode 100644 drivers/input/misc/axp20x-pek.c -diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig -index d25660d..3ed7023 100644 --- a/arch/arm/configs/sunxi_defconfig +++ b/arch/arm/configs/sunxi_defconfig @@ -40,6 +40,8 @@ CONFIG_SUN4I_EMAC=y @@ -29,8 +27,6 @@ index d25660d..3ed7023 100644 CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_NR_UARTS=8 -diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig -index 7904ab0..87244fb 100644 --- a/drivers/input/misc/Kconfig +++ b/drivers/input/misc/Kconfig @@ -393,6 +393,17 @@ config INPUT_RETU_PWRBUTTON @@ -51,11 +47,9 @@ index 7904ab0..87244fb 100644 config INPUT_TWL4030_PWRBUTTON tristate "TWL4030 Power button Driver" depends on TWL4030_CORE -diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile -index cda71fc..624abf5 100644 --- a/drivers/input/misc/Makefile +++ b/drivers/input/misc/Makefile -@@ -50,6 +50,7 @@ obj-$(CONFIG_INPUT_POWERMATE) += powermate.o +@@ -50,6 +50,7 @@ obj-$(CONFIG_INPUT_POWERMATE) += powerm obj-$(CONFIG_INPUT_PWM_BEEPER) += pwm-beeper.o obj-$(CONFIG_INPUT_RB532_BUTTON) += rb532_button.o obj-$(CONFIG_INPUT_RETU_PWRBUTTON) += retu-pwrbutton.o @@ -63,9 +57,6 @@ index cda71fc..624abf5 100644 obj-$(CONFIG_INPUT_GPIO_ROTARY_ENCODER) += rotary_encoder.o obj-$(CONFIG_INPUT_SGI_BTNS) += sgi_btns.o obj-$(CONFIG_INPUT_SIRFSOC_ONKEY) += sirfsoc-onkey.o -diff --git a/drivers/input/misc/axp20x-pek.c b/drivers/input/misc/axp20x-pek.c -new file mode 100644 -index 0000000..799275d --- /dev/null +++ b/drivers/input/misc/axp20x-pek.c @@ -0,0 +1,265 @@ @@ -334,6 +325,3 @@ index 0000000..799275d +MODULE_DESCRIPTION("axp20x Power Button"); +MODULE_AUTHOR("Carlo Caione <carlo@caione.org>"); +MODULE_LICENSE("GPL"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/212-regulator-add-axp20x-regulator-support.patch b/target/linux/sunxi/patches-3.14/212-regulator-add-axp20x-regulator-support.patch index d7f4dcf..1ec041c 100644 --- a/target/linux/sunxi/patches-3.14/212-regulator-add-axp20x-regulator-support.patch +++ b/target/linux/sunxi/patches-3.14/212-regulator-add-axp20x-regulator-support.patch @@ -15,8 +15,6 @@ Signed-off-by: Carlo Caione <carlo@caione.org> 4 files changed, 358 insertions(+) create mode 100644 drivers/regulator/axp20x-regulator.c -diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig -index 3ed7023..6e305da 100644 --- a/arch/arm/configs/sunxi_defconfig +++ b/arch/arm/configs/sunxi_defconfig @@ -72,3 +72,4 @@ CONFIG_NFS_FS=y @@ -24,8 +22,6 @@ index 3ed7023..6e305da 100644 CONFIG_NLS=y CONFIG_PRINTK_TIME=y +CONFIG_REGULATOR_AXP20X=y -diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig -index 6a79328..9f3bc48 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -139,6 +139,13 @@ config REGULATOR_AS3722 @@ -42,11 +38,9 @@ index 6a79328..9f3bc48 100644 config REGULATOR_DA903X tristate "Dialog Semiconductor DA9030/DA9034 regulators" depends on PMIC_DA903X -diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile -index 979f9dd..1dd084a 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile -@@ -20,6 +20,7 @@ obj-$(CONFIG_REGULATOR_ANATOP) += anatop-regulator.o +@@ -20,6 +20,7 @@ obj-$(CONFIG_REGULATOR_ANATOP) += anatop obj-$(CONFIG_REGULATOR_ARIZONA) += arizona-micsupp.o arizona-ldo1.o obj-$(CONFIG_REGULATOR_AS3711) += as3711-regulator.o obj-$(CONFIG_REGULATOR_AS3722) += as3722-regulator.o @@ -54,9 +48,6 @@ index 979f9dd..1dd084a 100644 obj-$(CONFIG_REGULATOR_DA903X) += da903x.o obj-$(CONFIG_REGULATOR_DA9052) += da9052-regulator.o obj-$(CONFIG_REGULATOR_DA9055) += da9055-regulator.o -diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c -new file mode 100644 -index 0000000..9072f2f --- /dev/null +++ b/drivers/regulator/axp20x-regulator.c @@ -0,0 +1,349 @@ @@ -409,6 +400,3 @@ index 0000000..9072f2f +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Carlo Caione <carlo@caione.org>"); +MODULE_DESCRIPTION("Regulator Driver for AXP20X PMIC"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/213-dt-sunxi-add-x-powers.patch b/target/linux/sunxi/patches-3.14/213-dt-sunxi-add-x-powers.patch index 3b37c47..aa29a01 100644 --- a/target/linux/sunxi/patches-3.14/213-dt-sunxi-add-x-powers.patch +++ b/target/linux/sunxi/patches-3.14/213-dt-sunxi-add-x-powers.patch @@ -12,9 +12,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> 1 file changed, 60 insertions(+) create mode 100644 arch/arm/boot/dts/x-powers-axp209.dtsi -diff --git a/arch/arm/boot/dts/x-powers-axp209.dtsi b/arch/arm/boot/dts/x-powers-axp209.dtsi -new file mode 100644 -index 0000000..118ce3a1 --- /dev/null +++ b/arch/arm/boot/dts/x-powers-axp209.dtsi @@ -0,0 +1,60 @@ @@ -78,6 +75,3 @@ index 0000000..118ce3a1 + regulator-max-microvolt = <3300000>; + }; + }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/214-1-dt-sun7i-add-axp209-to-cubieboard2.patch b/target/linux/sunxi/patches-3.14/214-1-dt-sun7i-add-axp209-to-cubieboard2.patch index a7d9c17..f7f4d9a 100644 --- a/target/linux/sunxi/patches-3.14/214-1-dt-sun7i-add-axp209-to-cubieboard2.patch +++ b/target/linux/sunxi/patches-3.14/214-1-dt-sun7i-add-axp209-to-cubieboard2.patch @@ -14,8 +14,6 @@ Signed-off-by: Carlo Caione <carlo@caione.org> arch/arm/boot/dts/sun7i-a20-cubieboard2.dts | 10 ++++++++++ 1 file changed, 10 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts -index cd9d3c2..40e9c3a 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubieboard2.dts @@ -74,6 +74,16 @@ @@ -35,6 +33,3 @@ index cd9d3c2..40e9c3a 100644 }; i2c1: i2c@01c2b000 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/214-2-dt-sun4i-add-axp209-to-boards.patch b/target/linux/sunxi/patches-3.14/214-2-dt-sun4i-add-axp209-to-boards.patch index 43fba1a..35dea87 100644 --- a/target/linux/sunxi/patches-3.14/214-2-dt-sun4i-add-axp209-to-boards.patch +++ b/target/linux/sunxi/patches-3.14/214-2-dt-sun4i-add-axp209-to-boards.patch @@ -14,11 +14,9 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10-pcduino.dts | 9 +++++++++ 7 files changed, 81 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10-a1000.dts b/arch/arm/boot/dts/sun4i-a10-a1000.dts -index 68b687e..99f53c0 100644 --- a/arch/arm/boot/dts/sun4i-a10-a1000.dts +++ b/arch/arm/boot/dts/sun4i-a10-a1000.dts -@@ -96,6 +96,15 @@ +@@ -65,6 +65,15 @@ pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins_a>; status = "okay"; @@ -34,8 +32,6 @@ index 68b687e..99f53c0 100644 }; }; -diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts -index 13088f0..5e4986c 100644 --- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts +++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts @@ -88,6 +88,15 @@ @@ -54,11 +50,9 @@ index 13088f0..5e4986c 100644 }; i2c1: i2c@01c2b000 { -diff --git a/arch/arm/boot/dts/sun4i-a10-hackberry.dts b/arch/arm/boot/dts/sun4i-a10-hackberry.dts -index a4b05d6..18f0030 100644 --- a/arch/arm/boot/dts/sun4i-a10-hackberry.dts +++ b/arch/arm/boot/dts/sun4i-a10-hackberry.dts -@@ -91,6 +91,21 @@ +@@ -82,6 +82,21 @@ pinctrl-0 = <&uart0_pins_a>; status = "okay"; }; @@ -79,11 +73,7 @@ index a4b05d6..18f0030 100644 + }; }; - reg_emac_3v3: emac-3v3 { -diff --git a/arch/arm/boot/dts/sun4i-a10-inet97fv2.dts b/arch/arm/boot/dts/sun4i-a10-inet97fv2.dts -index b73a070..7d3599e 100644 -diff --git a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts -index c906171..4acddf7 100644 + regulators { --- a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts +++ b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts @@ -55,6 +55,21 @@ @@ -108,8 +98,6 @@ index c906171..4acddf7 100644 }; reg_usb1_vbus: usb1-vbus { -diff --git a/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts -index e5a2765..2ce7267 100644 --- a/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts +++ b/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts @@ -90,6 +90,21 @@ @@ -134,8 +122,6 @@ index e5a2765..2ce7267 100644 }; leds { -diff --git a/arch/arm/boot/dts/sun4i-a10-pcduino.dts b/arch/arm/boot/dts/sun4i-a10-pcduino.dts -index 2820229..817cdca 100644 --- a/arch/arm/boot/dts/sun4i-a10-pcduino.dts +++ b/arch/arm/boot/dts/sun4i-a10-pcduino.dts @@ -74,6 +74,15 @@ @@ -154,6 +140,3 @@ index 2820229..817cdca 100644 }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/214-3-dt-sun7i-add-axp209-to-cubietruck.patch b/target/linux/sunxi/patches-3.14/214-3-dt-sun7i-add-axp209-to-cubietruck.patch index af8ca02..0cc8f8b 100644 --- a/target/linux/sunxi/patches-3.14/214-3-dt-sun7i-add-axp209-to-cubietruck.patch +++ b/target/linux/sunxi/patches-3.14/214-3-dt-sun7i-add-axp209-to-cubietruck.patch @@ -9,13 +9,11 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts | 10 ++++++++++ 2 files changed, 20 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 9a127d1..ebf6a2f 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -@@ -137,6 +137,16 @@ +@@ -89,6 +89,16 @@ pinctrl-names = "default"; - pinctrl-0 = <&i2c0_pins_a>; + pinctrl-0 = <&uart0_pins_a>; status = "okay"; + + axp: axp20x@34 { @@ -29,9 +27,7 @@ index 9a127d1..ebf6a2f 100644 + }; }; - i2c1: i2c@01c2b000 { -diff --git a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts -index 15f1f3f..926f111 100644 + gmac: ethernet@01c50000 { --- a/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts +++ b/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts @@ -127,6 +127,16 @@ @@ -51,6 +47,3 @@ index 15f1f3f..926f111 100644 }; i2c1: i2c@01c2b000 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/215-2-dt-sun5i-add-address-and-sizecells-to-i2c.patch b/target/linux/sunxi/patches-3.14/215-2-dt-sun5i-add-address-and-sizecells-to-i2c.patch index 5f79073..9b5fd57 100644 --- a/target/linux/sunxi/patches-3.14/215-2-dt-sun5i-add-address-and-sizecells-to-i2c.patch +++ b/target/linux/sunxi/patches-3.14/215-2-dt-sun5i-add-address-and-sizecells-to-i2c.patch @@ -9,8 +9,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun5i-a13.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi -index 280ffee..68ab353 100644 --- a/arch/arm/boot/dts/sun5i-a13.dtsi +++ b/arch/arm/boot/dts/sun5i-a13.dtsi @@ -503,6 +503,8 @@ @@ -40,6 +38,3 @@ index 280ffee..68ab353 100644 }; timer@01c60000 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/215-3-dt-sun7i-add-address-and-sizecells-to-i2c.patch b/target/linux/sunxi/patches-3.14/215-3-dt-sun7i-add-address-and-sizecells-to-i2c.patch index a699644..35ae842 100644 --- a/target/linux/sunxi/patches-3.14/215-3-dt-sun7i-add-address-and-sizecells-to-i2c.patch +++ b/target/linux/sunxi/patches-3.14/215-3-dt-sun7i-add-address-and-sizecells-to-i2c.patch @@ -9,8 +9,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 2e66c85..15ea85e 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -848,6 +848,8 @@ @@ -58,6 +56,3 @@ index 2e66c85..15ea85e 100644 }; gmac: ethernet@01c50000 { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/215-dt-sun4i-add-address-and-sizecells-to-i2c.patch b/target/linux/sunxi/patches-3.14/215-dt-sun4i-add-address-and-sizecells-to-i2c.patch index c8c8ae1..60fe06f 100644 --- a/target/linux/sunxi/patches-3.14/215-dt-sun4i-add-address-and-sizecells-to-i2c.patch +++ b/target/linux/sunxi/patches-3.14/215-dt-sun4i-add-address-and-sizecells-to-i2c.patch @@ -9,8 +9,6 @@ Signed-off-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun4i-a10.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 4b90a18..2a705e7 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi @@ -712,6 +712,8 @@ @@ -40,6 +38,3 @@ index 4b90a18..2a705e7 100644 }; }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/216-dt-sun7i-add-i2c-to-cubietruck.patch b/target/linux/sunxi/patches-3.14/216-dt-sun7i-add-i2c-to-cubietruck.patch index 1e972d8..2b4c243 100644 --- a/target/linux/sunxi/patches-3.14/216-dt-sun7i-add-i2c-to-cubietruck.patch +++ b/target/linux/sunxi/patches-3.14/216-dt-sun7i-add-i2c-to-cubietruck.patch @@ -14,13 +14,11 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 8a1009d..f9dcb61 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -@@ -33,6 +33,24 @@ - pinctrl-0 = <&uart0_pins_a>; - status = "okay"; +@@ -112,6 +112,24 @@ + reg = <1>; + }; }; + + i2c0: i2c@01c2ac00 { @@ -43,6 +41,3 @@ index 8a1009d..f9dcb61 100644 }; leds { --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/220-clk-sunxi-remove-calls-to-clk_put.patch b/target/linux/sunxi/patches-3.14/220-clk-sunxi-remove-calls-to-clk_put.patch index 9d87e88..bac72f9 100644 --- a/target/linux/sunxi/patches-3.14/220-clk-sunxi-remove-calls-to-clk_put.patch +++ b/target/linux/sunxi/patches-3.14/220-clk-sunxi-remove-calls-to-clk_put.patch @@ -12,11 +12,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> drivers/clk/sunxi/clk-sunxi.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) -diff --git a/drivers/clk/sunxi/clk-sunxi.c b/drivers/clk/sunxi/clk-sunxi.c -index 9afd8dd..a10a645 100644 --- a/drivers/clk/sunxi/clk-sunxi.c +++ b/drivers/clk/sunxi/clk-sunxi.c -@@ -1325,17 +1325,13 @@ static void __init sunxi_clock_protect(void) +@@ -1325,17 +1325,13 @@ static void __init sunxi_clock_protect(v /* memory bus clock - sun5i+ */ clk = clk_get(NULL, "mbus"); @@ -36,6 +34,3 @@ index 9afd8dd..a10a645 100644 } static void __init sunxi_init_clocks(void) --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/230-net-rfkill-changes.patch b/target/linux/sunxi/patches-3.14/230-net-rfkill-changes.patch index ca71a91..d5e1078 100644 --- a/target/linux/sunxi/patches-3.14/230-net-rfkill-changes.patch +++ b/target/linux/sunxi/patches-3.14/230-net-rfkill-changes.patch @@ -12,44 +12,25 @@ Signed-off-by: Chen-Yu Tsai <wens@csie.org> net/rfkill/rfkill-gpio.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index bd2a5b9..97ec12a 100644 --- a/net/rfkill/rfkill-gpio.c +++ b/net/rfkill/rfkill-gpio.c -@@ -117,8 +117,8 @@ static int rfkill_gpio_probe(struct platform_device *pdev) - if (!rfkill->shutdown_name) - return -ENOMEM; +@@ -26,6 +26,7 @@ + #include <linux/slab.h> + #include <linux/acpi.h> + #include <linux/gpio/consumer.h> ++#include <linux/of_gpio.h> -- snprintf(rfkill->reset_name, len + 6 , "%s_reset", rfkill->name); -- snprintf(rfkill->shutdown_name, len + 9, "%s_shutdown", rfkill->name); -+ snprintf(rfkill->reset_name, len + 7 , "%s_reset", rfkill->name); -+ snprintf(rfkill->shutdown_name, len + 10, "%s_shutdown", rfkill->name); + #include <linux/rfkill-gpio.h> - rfkill->clk = devm_clk_get(&pdev->dev, clk_name); +@@ -39,6 +40,7 @@ struct rfkill_gpio_data { + char *reset_name; + char *shutdown_name; + struct clk *clk; ++ int clk_frequency; --- -2.0.3 - -From d91c313c08167978c3fb20b327b6a7abb7b00ffd Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai <wens@csie.org> -Date: Fri, 17 Jan 2014 14:47:27 +0800 -Subject: [PATCH] net: rfkill: gpio: use - clk_prepare_enable/clk_disable_unprepare - -rfkill-gpio calls clk_enable() without first calling clk_prepare(), -resulting in a warning and no effect. Switch to clk_prepare_enable() -and clk_disable_unprepare. - -Signed-off-by: Chen-Yu Tsai <wens@csie.org> ---- - net/rfkill/rfkill-gpio.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index 97ec12a..c7081b7 100644 ---- a/net/rfkill/rfkill-gpio.c -+++ b/net/rfkill/rfkill-gpio.c -@@ -51,10 +51,10 @@ static int rfkill_gpio_set_power(void *data, bool blocked) + bool clk_enabled; + }; +@@ -51,15 +53,15 @@ static int rfkill_gpio_set_power(void *d gpiod_set_value(rfkill->shutdown_gpio, 0); gpiod_set_value(rfkill->reset_gpio, 0); if (!IS_ERR(rfkill->clk) && rfkill->clk_enabled) @@ -62,96 +43,13 @@ index 97ec12a..c7081b7 100644 gpiod_set_value(rfkill->reset_gpio, 1); gpiod_set_value(rfkill->shutdown_gpio, 1); } --- -2.0.3 - -From f6dc85e22d3215a26f509fb5b34ca34c56a0d8b4 Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai <wens@csie.org> -Date: Fri, 17 Jan 2014 14:47:28 +0800 -Subject: [PATCH] net: rfkill: gpio: fix reversed clock enable state - -rfkill-gpio has clk_enabled = blocked, which is true when rfkill -blocks the device. This results in calling clock enable/disable at -the wrong time. Reversing the value fixes this. - -Signed-off-by: Chen-Yu Tsai <wens@csie.org> ---- - net/rfkill/rfkill-gpio.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index c7081b7..3084fa3 100644 ---- a/net/rfkill/rfkill-gpio.c -+++ b/net/rfkill/rfkill-gpio.c -@@ -59,7 +59,7 @@ static int rfkill_gpio_set_power(void *data, bool blocked) - gpiod_set_value(rfkill->shutdown_gpio, 1); - } - rfkill->clk_enabled = blocked; + rfkill->clk_enabled = !blocked; return 0; } --- -2.0.3 - -From 57301a41d4a82902e967f6bd9f09ba6ca31fcbed Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai <wens@csie.org> -Date: Fri, 17 Jan 2014 14:47:29 +0800 -Subject: [PATCH] net: rfkill: gpio: add device tree support - -Signed-off-by: Chen-Yu Tsai <wens@csie.org> ---- - .../devicetree/bindings/rfkill/rfkill-gpio.txt | 26 ++++++++++++++++++++++ - net/rfkill/rfkill-gpio.c | 23 +++++++++++++++++++ - 2 files changed, 49 insertions(+) - create mode 100644 Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt - -diff --git a/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt b/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt -new file mode 100644 -index 0000000..8a07ea4 ---- /dev/null -+++ b/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt -@@ -0,0 +1,26 @@ -+GPIO controlled RFKILL devices -+ -+Required properties: -+- compatible : Must be "rfkill-gpio". -+- rfkill-name : Name of RFKILL device -+- rfkill-type : Type of RFKILL device: 1 for WiFi, 2 for BlueTooth -+- NAME_shutdown-gpios : GPIO phandle to shutdown control -+ (phandle must be the second) -+- NAME_reset-gpios : GPIO phandle to reset control -+ -+NAME must match the rfkill-name property. NAME_shutdown-gpios or -+NAME_reset-gpios, or both, must be defined. -+ -+Optional properties: -+- clocks : phandle to clock to enable/disable -+ -+Example: -+ -+ rfkill_bt: rfkill@0 { -+ compatible = "rfkill-gpio"; -+ rfkill-name = "bluetooth"; -+ rfkill-type = <2>; -+ bluetooth_shutdown-gpios = <0>, <&pio 7 18 0>; -+ bluetooth_reset-gpios = <&pio 7 24 0>; -+ clocks = <&clk_out_a>; -+ }; -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index 3084fa3..48381a8 100644 ---- a/net/rfkill/rfkill-gpio.c -+++ b/net/rfkill/rfkill-gpio.c -@@ -26,6 +26,7 @@ - #include <linux/slab.h> - #include <linux/acpi.h> - #include <linux/gpio/consumer.h> -+#include <linux/of_gpio.h> - - #include <linux/rfkill-gpio.h> - -@@ -83,6 +84,18 @@ static int rfkill_gpio_acpi_probe(struct device *dev, +@@ -83,6 +85,19 @@ static int rfkill_gpio_acpi_probe(struct return 0; } @@ -163,6 +61,7 @@ index 3084fa3..48381a8 100644 + rfkill->name = np->name; + of_property_read_string(np, "rfkill-name", &rfkill->name); + of_property_read_u32(np, "rfkill-type", &rfkill->type); ++ of_property_read_u32(np, "clock-frequency", &rfkill->clk_frequency); + + return 0; +} @@ -170,7 +69,7 @@ index 3084fa3..48381a8 100644 static int rfkill_gpio_probe(struct platform_device *pdev) { struct rfkill_gpio_platform_data *pdata = pdev->dev.platform_data; -@@ -100,6 +113,10 @@ static int rfkill_gpio_probe(struct platform_device *pdev) +@@ -100,6 +115,10 @@ static int rfkill_gpio_probe(struct plat ret = rfkill_gpio_acpi_probe(&pdev->dev, rfkill); if (ret) return ret; @@ -181,7 +80,22 @@ index 3084fa3..48381a8 100644 } else if (pdata) { clk_name = pdata->power_clk_name; rfkill->name = pdata->name; -@@ -189,6 +206,11 @@ static const struct acpi_device_id rfkill_acpi_match[] = { +@@ -117,10 +136,12 @@ static int rfkill_gpio_probe(struct plat + if (!rfkill->shutdown_name) + return -ENOMEM; + +- snprintf(rfkill->reset_name, len + 6 , "%s_reset", rfkill->name); +- snprintf(rfkill->shutdown_name, len + 9, "%s_shutdown", rfkill->name); ++ snprintf(rfkill->reset_name, len + 7 , "%s_reset", rfkill->name); ++ snprintf(rfkill->shutdown_name, len + 10, "%s_shutdown", rfkill->name); + + rfkill->clk = devm_clk_get(&pdev->dev, clk_name); ++ if (!IS_ERR(rfkill->clk) && rfkill->clk_frequency > 0) ++ clk_set_rate(rfkill->clk, rfkill->clk_frequency); + + gpio = devm_gpiod_get_index(&pdev->dev, rfkill->reset_name, 0); + if (!IS_ERR(gpio)) { +@@ -189,6 +210,11 @@ static const struct acpi_device_id rfkil { }, }; @@ -193,7 +107,7 @@ index 3084fa3..48381a8 100644 static struct platform_driver rfkill_gpio_driver = { .probe = rfkill_gpio_probe, .remove = rfkill_gpio_remove, -@@ -196,6 +218,7 @@ static struct platform_driver rfkill_gpio_driver = { +@@ -196,6 +222,7 @@ static struct platform_driver rfkill_gpi .name = "rfkill_gpio", .owner = THIS_MODULE, .acpi_match_table = ACPI_PTR(rfkill_acpi_match), @@ -201,71 +115,34 @@ index 3084fa3..48381a8 100644 }, }; --- -2.0.3 - -From 83c43937ee8c5fcb38241a8e89c2b93e5b0f9526 Mon Sep 17 00:00:00 2001 -From: Chen-Yu Tsai <wens@csie.org> -Date: Fri, 17 Jan 2014 14:47:30 +0800 -Subject: [PATCH] net: rfkill: gpio: add clock-frequency device tree property - -Some devices, such as Broadcom Bluetooth devices, require a specific -clock rate for the clock tied to the rfkill device. Add clock-frequency -property so we can specify this from the device tree. - -Signed-off-by: Chen-Yu Tsai <wens@csie.org> ---- - Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt | 2 ++ - net/rfkill/rfkill-gpio.c | 4 ++++ - 2 files changed, 6 insertions(+) - -diff --git a/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt b/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt -index 8a07ea4..8b8db0a 100644 ---- a/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt +--- /dev/null +++ b/Documentation/devicetree/bindings/rfkill/rfkill-gpio.txt -@@ -13,6 +13,7 @@ NAME_reset-gpios, or both, must be defined. - - Optional properties: - - clocks : phandle to clock to enable/disable +@@ -0,0 +1,28 @@ ++GPIO controlled RFKILL devices ++ ++Required properties: ++- compatible : Must be "rfkill-gpio". ++- rfkill-name : Name of RFKILL device ++- rfkill-type : Type of RFKILL device: 1 for WiFi, 2 for BlueTooth ++- NAME_shutdown-gpios : GPIO phandle to shutdown control ++ (phandle must be the second) ++- NAME_reset-gpios : GPIO phandle to reset control ++ ++NAME must match the rfkill-name property. NAME_shutdown-gpios or ++NAME_reset-gpios, or both, must be defined. ++ ++Optional properties: ++- clocks : phandle to clock to enable/disable +- clock-frequency : clock rate to set for the given clock - - Example: - -@@ -23,4 +24,5 @@ Example: - bluetooth_shutdown-gpios = <0>, <&pio 7 18 0>; - bluetooth_reset-gpios = <&pio 7 24 0>; - clocks = <&clk_out_a>; ++ ++Example: ++ ++ rfkill_bt: rfkill@0 { ++ compatible = "rfkill-gpio"; ++ rfkill-name = "bluetooth"; ++ rfkill-type = <2>; ++ bluetooth_shutdown-gpios = <0>, <&pio 7 18 0>; ++ bluetooth_reset-gpios = <&pio 7 24 0>; ++ clocks = <&clk_out_a>; + clock-frequency = <32678>; - }; -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index 48381a8..3092681 100644 ---- a/net/rfkill/rfkill-gpio.c -+++ b/net/rfkill/rfkill-gpio.c -@@ -40,6 +40,7 @@ struct rfkill_gpio_data { - char *reset_name; - char *shutdown_name; - struct clk *clk; -+ int clk_frequency; - - bool clk_enabled; - }; -@@ -92,6 +93,7 @@ static int rfkill_gpio_dt_probe(struct device *dev, - rfkill->name = np->name; - of_property_read_string(np, "rfkill-name", &rfkill->name); - of_property_read_u32(np, "rfkill-type", &rfkill->type); -+ of_property_read_u32(np, "clock-frequency", &rfkill->clk_frequency); - - return 0; - } -@@ -138,6 +140,8 @@ static int rfkill_gpio_probe(struct platform_device *pdev) - snprintf(rfkill->shutdown_name, len + 10, "%s_shutdown", rfkill->name); - - rfkill->clk = devm_clk_get(&pdev->dev, clk_name); -+ if (!IS_ERR(rfkill->clk) && rfkill->clk_frequency > 0) -+ clk_set_rate(rfkill->clk, rfkill->clk_frequency); - - gpio = devm_gpiod_get_index(&pdev->dev, rfkill->reset_name, 0); - if (!IS_ERR(gpio)) { --- -2.0.3 - ++ }; diff --git a/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch b/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch index 8f9914f..ec11647 100644 --- a/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch +++ b/target/linux/sunxi/patches-3.14/231-1-brcmfmac-fix-sdio-sending.patch @@ -19,11 +19,9 @@ Signed-off-by: John W. Linville <linville@tuxdriver.com> drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c -index fa35b23..bd19323 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c -@@ -827,7 +827,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev *sdiodev, bool write, u32 address, +@@ -827,7 +827,7 @@ brcmf_sdiod_ramrw(struct brcmf_sdio_dev } if (!write) memcpy(data, pkt->data, dsize); @@ -32,6 +30,3 @@ index fa35b23..bd19323 100644 /* Adjust for next transfer (if any) */ size -= dsize; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/231-2-brcmfmac-fix-use-of-skb-ctrlbuf-in-SDIO.patch b/target/linux/sunxi/patches-3.14/231-2-brcmfmac-fix-use-of-skb-ctrlbuf-in-SDIO.patch index 5743e66..1ba8e6e 100644 --- a/target/linux/sunxi/patches-3.14/231-2-brcmfmac-fix-use-of-skb-ctrlbuf-in-SDIO.patch +++ b/target/linux/sunxi/patches-3.14/231-2-brcmfmac-fix-use-of-skb-ctrlbuf-in-SDIO.patch @@ -19,11 +19,9 @@ Signed-off-by: John W. Linville <linville@tuxdriver.com> drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c -index ddaa9ef..e006e7c 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c -@@ -1955,7 +1955,7 @@ static int brcmf_sdio_txpkt_prep_sg(struct brcmf_sdio *bus, +@@ -1955,7 +1955,7 @@ static int brcmf_sdio_txpkt_prep_sg(stru memcpy(pkt_pad->data, pkt->data + pkt->len - tail_chop, tail_chop); @@ -32,7 +30,7 @@ index ddaa9ef..e006e7c 100644 skb_trim(pkt, pkt->len - tail_chop); skb_trim(pkt_pad, tail_pad + tail_chop); __skb_queue_after(pktq, pkt, pkt_pad); -@@ -2003,7 +2003,7 @@ brcmf_sdio_txpkt_prep(struct brcmf_sdio *bus, struct sk_buff_head *pktq, +@@ -2003,7 +2003,7 @@ brcmf_sdio_txpkt_prep(struct brcmf_sdio * already properly aligned and does not * need an sdpcm header. */ @@ -41,7 +39,7 @@ index ddaa9ef..e006e7c 100644 continue; /* align packet data pointer */ -@@ -2067,11 +2067,11 @@ brcmf_sdio_txpkt_postp(struct brcmf_sdio *bus, struct sk_buff_head *pktq) +@@ -2067,11 +2067,11 @@ brcmf_sdio_txpkt_postp(struct brcmf_sdio u8 *hdr; u32 dat_offset; u16 tail_pad; @@ -55,7 +53,7 @@ index ddaa9ef..e006e7c 100644 if (dummy_flags & ALIGN_SKB_FLAG) { chop_len = dummy_flags & ALIGN_SKB_CHOP_LEN_MASK; if (chop_len) { -@@ -2554,6 +2554,8 @@ static int brcmf_sdio_bus_txdata(struct device *dev, struct sk_buff *pkt) +@@ -2554,6 +2554,8 @@ static int brcmf_sdio_bus_txdata(struct /* Priority based enq */ spin_lock_irqsave(&bus->txqlock, flags); @@ -64,6 +62,3 @@ index ddaa9ef..e006e7c 100644 if (!brcmf_c_prec_enq(bus->sdiodev->dev, &bus->txq, pkt, prec)) { skb_pull(pkt, bus->tx_hdrlen); brcmf_err("out of bus->txq !!!\n"); --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/232-1-dt-sun7i-add-wifi-to-cubietruck.patch b/target/linux/sunxi/patches-3.14/232-1-dt-sun7i-add-wifi-to-cubietruck.patch index 2e80804..1fad950 100644 --- a/target/linux/sunxi/patches-3.14/232-1-dt-sun7i-add-wifi-to-cubietruck.patch +++ b/target/linux/sunxi/patches-3.14/232-1-dt-sun7i-add-wifi-to-cubietruck.patch @@ -14,8 +14,6 @@ but this is not supported in this patch. arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 66bb3ef..2444806 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts @@ -28,6 +28,23 @@ @@ -61,9 +59,9 @@ index 66bb3ef..2444806 100644 ahci_pwr_pin_cubietruck: ahci_pwr_pin@1 { allwinner,pins = "PH12"; allwinner,function = "gpio_out"; -@@ -69,6 +98,13 @@ - allwinner,drive = <0>; - allwinner,pull = <0>; +@@ -83,6 +112,13 @@ + allwinner,drive = <0>; + allwinner,pull = <2>; }; + + wifi_host_wake_pin: wifi_host_wake_pin@0 { @@ -75,7 +73,7 @@ index 66bb3ef..2444806 100644 }; uart0: serial@01c28000 { -@@ -147,4 +183,15 @@ +@@ -171,4 +207,15 @@ reg_usb2_vbus: usb2-vbus { status = "okay"; }; @@ -91,6 +89,3 @@ index 66bb3ef..2444806 100644 + gpio = <&pio 7 9 0>; + }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/232-2-dt-sun7i-add-bluetooth-to-cubietruck.patch b/target/linux/sunxi/patches-3.14/232-2-dt-sun7i-add-bluetooth-to-cubietruck.patch index e41eb82..ccfb7a2 100644 --- a/target/linux/sunxi/patches-3.14/232-2-dt-sun7i-add-bluetooth-to-cubietruck.patch +++ b/target/linux/sunxi/patches-3.14/232-2-dt-sun7i-add-bluetooth-to-cubietruck.patch @@ -14,11 +14,9 @@ GPIO, but this is not supported in this patch. arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -index 2444806..9a127d1 100644 --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts -@@ -105,6 +105,20 @@ +@@ -119,6 +119,20 @@ allwinner,drive = <0>; allwinner,pull = <0>; }; @@ -39,8 +37,8 @@ index 2444806..9a127d1 100644 }; uart0: serial@01c28000 { -@@ -113,6 +127,12 @@ - status = "okay"; +@@ -149,6 +163,12 @@ + }; }; + uart2: serial@01c28800 { @@ -52,7 +50,7 @@ index 2444806..9a127d1 100644 i2c0: i2c@01c2ac00 { pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins_a>; -@@ -194,4 +214,20 @@ +@@ -218,4 +238,20 @@ enable-active-high; gpio = <&pio 7 9 0>; }; @@ -73,6 +71,3 @@ index 2444806..9a127d1 100644 + }; + }; }; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/250-pwm-add-driver.patch b/target/linux/sunxi/patches-3.14/250-pwm-add-driver.patch index 8d77a34..d4af96f 100644 --- a/target/linux/sunxi/patches-3.14/250-pwm-add-driver.patch +++ b/target/linux/sunxi/patches-3.14/250-pwm-add-driver.patch @@ -1,8 +1,6 @@ -diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig -index 5b34ff29ea38..178b017be827 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig -@@ -217,6 +217,15 @@ config PWM_SPEAR +@@ -187,6 +187,15 @@ config PWM_SPEAR To compile this driver as a module, choose M here: the module will be called pwm-spear. @@ -18,11 +16,9 @@ index 5b34ff29ea38..178b017be827 100644 config PWM_TEGRA tristate "NVIDIA Tegra PWM support" depends on ARCH_TEGRA -diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile -index e57d2c38a794..39997ea2e276 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile -@@ -19,6 +19,7 @@ obj-$(CONFIG_PWM_PXA) += pwm-pxa.o +@@ -16,6 +16,7 @@ obj-$(CONFIG_PWM_PXA) += pwm-pxa.o obj-$(CONFIG_PWM_RENESAS_TPU) += pwm-renesas-tpu.o obj-$(CONFIG_PWM_SAMSUNG) += pwm-samsung.o obj-$(CONFIG_PWM_SPEAR) += pwm-spear.o @@ -30,9 +26,6 @@ index e57d2c38a794..39997ea2e276 100644 obj-$(CONFIG_PWM_TEGRA) += pwm-tegra.o obj-$(CONFIG_PWM_TIECAP) += pwm-tiecap.o obj-$(CONFIG_PWM_TIEHRPWM) += pwm-tiehrpwm.o -diff --git a/drivers/pwm/pwm-sunxi.c b/drivers/pwm/pwm-sunxi.c -new file mode 100644 -index 000000000000..e7c3ca1d3c42 --- /dev/null +++ b/drivers/pwm/pwm-sunxi.c @@ -0,0 +1,338 @@ diff --git a/target/linux/sunxi/patches-3.14/251-1-dt-sun4i-add-pinmux-for-pwm.patch b/target/linux/sunxi/patches-3.14/251-1-dt-sun4i-add-pinmux-for-pwm.patch index 00881f0..5eb30b1 100644 --- a/target/linux/sunxi/patches-3.14/251-1-dt-sun4i-add-pinmux-for-pwm.patch +++ b/target/linux/sunxi/patches-3.14/251-1-dt-sun4i-add-pinmux-for-pwm.patch @@ -11,11 +11,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index fe845eb..8810ce4 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -477,6 +477,20 @@ +@@ -521,6 +521,20 @@ #size-cells = <0>; #gpio-cells = <3>; @@ -36,6 +34,3 @@ index fe845eb..8810ce4 100644 uart0_pins_a: uart0@0 { allwinner,pins = "PB22", "PB23"; allwinner,function = "uart0"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/251-2-dt-sun7i-add-pinmux-for-pwm.patch b/target/linux/sunxi/patches-3.14/251-2-dt-sun7i-add-pinmux-for-pwm.patch index 128e064..1206237 100644 --- a/target/linux/sunxi/patches-3.14/251-2-dt-sun7i-add-pinmux-for-pwm.patch +++ b/target/linux/sunxi/patches-3.14/251-2-dt-sun7i-add-pinmux-for-pwm.patch @@ -11,11 +11,9 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index f9f5e0c..2eaf7c0f 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -554,6 +554,20 @@ +@@ -584,6 +584,20 @@ #size-cells = <0>; #gpio-cells = <3>; @@ -36,6 +34,3 @@ index f9f5e0c..2eaf7c0f 100644 uart0_pins_a: uart0@0 { allwinner,pins = "PB22", "PB23"; allwinner,function = "uart0"; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/252-1-dt-sun4i-add-pwm-support.patch b/target/linux/sunxi/patches-3.14/252-1-dt-sun4i-add-pwm-support.patch index fd06b0b..4b16ab2 100644 --- a/target/linux/sunxi/patches-3.14/252-1-dt-sun4i-add-pwm-support.patch +++ b/target/linux/sunxi/patches-3.14/252-1-dt-sun4i-add-pwm-support.patch @@ -11,12 +11,10 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun4i-a10.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi -index 8810ce4..4dc3761 100644 --- a/arch/arm/boot/dts/sun4i-a10.dtsi +++ b/arch/arm/boot/dts/sun4i-a10.dtsi -@@ -563,6 +563,14 @@ - interrupts = <24>; +@@ -628,6 +628,14 @@ + status = "disabled"; }; + pwm: pwm@01c20e00 { @@ -28,8 +26,5 @@ index 8810ce4..4dc3761 100644 + }; + sid: eeprom@01c23800 { - compatible = "allwinner,sun4i-a10-sid"; + compatible = "allwinner,sun4i-sid"; reg = <0x01c23800 0x10>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/252-2-dt-sun7i-add-pwm-support.patch b/target/linux/sunxi/patches-3.14/252-2-dt-sun7i-add-pwm-support.patch index 3bb1186..dc9636b 100644 --- a/target/linux/sunxi/patches-3.14/252-2-dt-sun7i-add-pwm-support.patch +++ b/target/linux/sunxi/patches-3.14/252-2-dt-sun7i-add-pwm-support.patch @@ -11,12 +11,10 @@ Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> arch/arm/boot/dts/sun7i-a20.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 2eaf7c0f..61a4b5e 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi -@@ -706,6 +706,14 @@ - interrupts = <0 24 4>; +@@ -764,6 +764,14 @@ + status = "disabled"; }; + pwm: pwm@01c20e00 { @@ -30,6 +28,3 @@ index 2eaf7c0f..61a4b5e 100644 sid: eeprom@01c23800 { compatible = "allwinner,sun7i-a20-sid"; reg = <0x01c23800 0x200>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/260-dt-sun7i-enable-arm-pmu.patch b/target/linux/sunxi/patches-3.14/260-dt-sun7i-enable-arm-pmu.patch index 41ff076..4f703e7 100644 --- a/target/linux/sunxi/patches-3.14/260-dt-sun7i-enable-arm-pmu.patch +++ b/target/linux/sunxi/patches-3.14/260-dt-sun7i-enable-arm-pmu.patch @@ -11,8 +11,6 @@ Reviewed-by: Hans de Goede <hdegoede@redhat.com> arch/arm/boot/dts/sun7i-a20.dtsi | 6 ++++++ 1 file changed, 6 insertions(+) -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 9dd904d..f9f5e0c 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -57,6 +57,12 @@ @@ -28,6 +26,3 @@ index 9dd904d..f9f5e0c 100644 clocks { #address-cells = <1>; #size-cells = <1>; --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/270-dt-sun7i-add-ss-to-a20.patch b/target/linux/sunxi/patches-3.14/270-dt-sun7i-add-ss-to-a20.patch index 4a5ceba..11a6ed0 100644 --- a/target/linux/sunxi/patches-3.14/270-dt-sun7i-add-ss-to-a20.patch +++ b/target/linux/sunxi/patches-3.14/270-dt-sun7i-add-ss-to-a20.patch @@ -1,5 +1,3 @@ -diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi -index 6acdbdf..19b1ced 100644 --- a/arch/arm/boot/dts/sun7i-a20.dtsi +++ b/arch/arm/boot/dts/sun7i-a20.dtsi @@ -529,6 +529,14 @@ @@ -17,7 +15,3 @@ index 6acdbdf..19b1ced 100644 spi2: spi@01c17000 { compatible = "allwinner,sun4i-a10-spi"; reg = <0x01c17000 0x1000>; --- -1.8.5.5 - -
\ No newline at end of file diff --git a/target/linux/sunxi/patches-3.14/271-crypto-add-ss.patch b/target/linux/sunxi/patches-3.14/271-crypto-add-ss.patch index 782a537..a5e2d06 100644 --- a/target/linux/sunxi/patches-3.14/271-crypto-add-ss.patch +++ b/target/linux/sunxi/patches-3.14/271-crypto-add-ss.patch @@ -1,8 +1,6 @@ -diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig -index 03ccdb0..a2acda4 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig -@@ -418,4 +418,21 @@ config CRYPTO_DEV_MXS_DCP +@@ -419,4 +419,21 @@ config CRYPTO_DEV_MXS_DCP To compile this driver as a module, choose M here: the module will be called mxs-dcp. @@ -24,26 +22,18 @@ index 03ccdb0..a2acda4 100644 + will be called sunxi-ss. + endif # CRYPTO_HW -diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile -index 482f090..855292a 100644 --- a/drivers/crypto/Makefile +++ b/drivers/crypto/Makefile -@@ -23,3 +23,4 @@ obj-$(CONFIG_CRYPTO_DEV_S5P) += s5p-sss.o - obj-$(CONFIG_CRYPTO_DEV_SAHARA) += sahara.o +@@ -23,3 +23,4 @@ obj-$(CONFIG_CRYPTO_DEV_SAHARA) += sahar obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o + obj-$(CONFIG_CRYPTO_DEV_TEGRA_AES) += tegra-aes.o obj-$(CONFIG_CRYPTO_DEV_UX500) += ux500/ +obj-$(CONFIG_CRYPTO_DEV_SUNXI_SS) += sunxi-ss/ -diff --git a/drivers/crypto/sunxi-ss/Makefile b/drivers/crypto/sunxi-ss/Makefile -new file mode 100644 -index 0000000..8bb287d --- /dev/null +++ b/drivers/crypto/sunxi-ss/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_CRYPTO_DEV_SUNXI_SS) += sunxi-ss.o +sunxi-ss-y += sunxi-ss-core.o sunxi-ss-hash.o sunxi-ss-cipher.o -diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-cipher.c b/drivers/crypto/sunxi-ss/sunxi-ss-cipher.c -new file mode 100644 -index 0000000..c2422f7 --- /dev/null +++ b/drivers/crypto/sunxi-ss/sunxi-ss-cipher.c @@ -0,0 +1,461 @@ @@ -508,9 +498,6 @@ index 0000000..c2422f7 + memcpy(op->key, key, keylen); + return 0; +} -diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-core.c b/drivers/crypto/sunxi-ss/sunxi-ss-core.c -new file mode 100644 -index 0000000..c76016e --- /dev/null +++ b/drivers/crypto/sunxi-ss/sunxi-ss-core.c @@ -0,0 +1,308 @@ @@ -822,9 +809,6 @@ index 0000000..c76016e +MODULE_DESCRIPTION("Allwinner Security System cryptographic accelerator"); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Corentin LABBE <clabbe.montjoie@gmail.com>"); -diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-hash.c b/drivers/crypto/sunxi-ss/sunxi-ss-hash.c -new file mode 100644 -index 0000000..6412bfb --- /dev/null +++ b/drivers/crypto/sunxi-ss/sunxi-ss-hash.c @@ -0,0 +1,241 @@ @@ -1069,9 +1053,6 @@ index 0000000..6412bfb + + return sunxi_hash_final(areq); +} -diff --git a/drivers/crypto/sunxi-ss/sunxi-ss.h b/drivers/crypto/sunxi-ss/sunxi-ss.h -new file mode 100644 -index 0000000..94aca20 --- /dev/null +++ b/drivers/crypto/sunxi-ss/sunxi-ss.h @@ -0,0 +1,183 @@ @@ -1258,7 +1239,3 @@ index 0000000..94aca20 + unsigned int keylen); +int sunxi_ss_des3_setkey(struct crypto_ablkcipher *tfm, const u8 *key, + unsigned int keylen); --- -1.8.5.5 - -
\ No newline at end of file diff --git a/target/linux/sunxi/patches-3.14/300-dt-sun7i-add-pcduino3.patch b/target/linux/sunxi/patches-3.14/300-dt-sun7i-add-pcduino3.patch index 55b86d3..9b84426 100644 --- a/target/linux/sunxi/patches-3.14/300-dt-sun7i-add-pcduino3.patch +++ b/target/linux/sunxi/patches-3.14/300-dt-sun7i-add-pcduino3.patch @@ -25,12 +25,10 @@ Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu> 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 arch/arm/boot/dts/sun7i-a20-pcduino3.dts -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 6967393..b1b59ea 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile -@@ -353,7 +353,8 @@ dtb-$(CONFIG_MACH_SUN7I) += \ - sun6i-a31-colombus.dtb \ +@@ -292,7 +292,8 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ + sun6i-a31-colombus.dtb \ sun7i-a20-cubieboard2.dtb \ sun7i-a20-cubietruck.dtb \ - sun7i-a20-olinuxino-micro.dtb @@ -39,9 +37,3 @@ index 6967393..b1b59ea 100644 dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \ tegra20-iris-512.dtb \ tegra20-medcom-wide.dtb \ -diff --git a/arch/arm/boot/dts/sun7i-a20-pcduino3.dts b/arch/arm/boot/dts/sun7i-a20-pcduino3.dts -new file mode 100644 -index 0000000..fc6a542 --- -2.0.3 - diff --git a/target/linux/sunxi/patches-3.14/301-dt-sun7i-update-pcduino3.patch b/target/linux/sunxi/patches-3.14/301-dt-sun7i-update-pcduino3.patch index 7a097d7..7dfc95a 100644 --- a/target/linux/sunxi/patches-3.14/301-dt-sun7i-update-pcduino3.patch +++ b/target/linux/sunxi/patches-3.14/301-dt-sun7i-update-pcduino3.patch @@ -1,6 +1,5 @@ -diff -ruN old/arch/arm/boot/dts/sun7i-a20-pcduino3.dts new/arch/arm/boot/dts/sun7i-a20-pcduino3.dts ---- old/arch/arm/boot/dts/sun7i-a20-pcduino3.dts 2014-08-01 21:28:06.000000000 +0200 -+++ new/arch/arm/boot/dts/sun7i-a20-pcduino3.dts 2014-08-03 16:52:51.621238166 +0200 +--- a/arch/arm/boot/dts/sun7i-a20-pcduino3.dts ++++ b/arch/arm/boot/dts/sun7i-a20-pcduino3.dts @@ -12,8 +12,7 @@ /dts-v1/; diff --git a/target/linux/sunxi/patches-3.14/302-dt-sun7i-add-bananapi-Makefile.patch b/target/linux/sunxi/patches-3.14/302-dt-sun7i-add-bananapi-Makefile.patch index 272b501..88fad31 100644 --- a/target/linux/sunxi/patches-3.14/302-dt-sun7i-add-bananapi-Makefile.patch +++ b/target/linux/sunxi/patches-3.14/302-dt-sun7i-add-bananapi-Makefile.patch @@ -1,7 +1,6 @@ -diff -ruN old/arch/arm/boot/dts/Makefile new/arch/arm/boot/dts/Makefile ---- old/arch/arm/boot/dts/Makefile 2014-08-03 22:59:45.000000000 +0200 -+++ new/arch/arm/boot/dts/Makefile 2014-08-03 23:12:30.208474257 +0200 -@@ -290,6 +290,7 @@ +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -290,6 +290,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \ sun5i-a13-olinuxino.dtb \ sun5i-a13-olinuxino-micro.dtb \ sun6i-a31-colombus.dtb \ diff --git a/target/linux/sunxi/patches-3.14/303-dt-sun7i-update-bananapi.patch b/target/linux/sunxi/patches-3.14/303-dt-sun7i-update-bananapi.patch index 1c8f839..60ea0eb 100644 --- a/target/linux/sunxi/patches-3.14/303-dt-sun7i-update-bananapi.patch +++ b/target/linux/sunxi/patches-3.14/303-dt-sun7i-update-bananapi.patch @@ -1,6 +1,5 @@ -diff -ruN old/arch/arm/boot/dts/sun7i-a20-bananapi.dts new/arch/arm/boot/dts/sun7i-a20-bananapi.dts ---- old/arch/arm/boot/dts/sun7i-a20-bananapi.dts 2014-08-01 21:28:06.000000000 +0200 -+++ new/arch/arm/boot/dts/sun7i-a20-bananapi.dts 2014-08-04 00:49:24.552906049 +0200 +--- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts ++++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts @@ -12,8 +12,7 @@ /dts-v1/; |