summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbrodkorb@conet.de>2015-01-19 14:52:06 +0100
committerWaldemar Brodkorb <wbrodkorb@conet.de>2015-01-19 14:52:06 +0100
commitff00cdac1c5bdbe4159b081e291717d6349da941 (patch)
tree7da7f70be10d3b27452fa76d90d0bb7fb62c61f8
parentee0a8b0fb0aa82ff6bbf04990ed74916c1b5f709 (diff)
update to latest stable linux kernel
-rw-r--r--mk/kernel-ver.mk6
-rw-r--r--target/arm/raspberry-pi/patches/3.18.3/raspberry-pi.patch (renamed from target/arm/raspberry-pi/patches/3.18.2/raspberry-pi.patch)3384
-rw-r--r--target/config/Config.in.kernelversion.choice6
-rw-r--r--target/config/Config.in.kernelversion.default2
-rw-r--r--target/linux/patches/3.18.3/bsd-compatibility.patch (renamed from target/linux/patches/3.18.2/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.18.3/cleankernel.patch (renamed from target/linux/patches/3.18.2/cleankernel.patch)0
-rw-r--r--target/linux/patches/3.18.3/cris-header.patch (renamed from target/linux/patches/3.18.2/cris-header.patch)0
-rw-r--r--target/linux/patches/3.18.3/defaults.patch (renamed from target/linux/patches/3.18.2/defaults.patch)0
-rw-r--r--target/linux/patches/3.18.3/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.18.2/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.18.3/gemalto.patch (renamed from target/linux/patches/3.18.2/gemalto.patch)0
-rw-r--r--target/linux/patches/3.18.3/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.18.2/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/3.18.3/lemote-rfkill.patch (renamed from target/linux/patches/3.18.2/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.18.3/microblaze-axi.patch (renamed from target/linux/patches/3.18.2/microblaze-axi.patch)0
-rw-r--r--target/linux/patches/3.18.3/microblaze-ethernet.patch (renamed from target/linux/patches/3.18.2/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.18.3/mkpiggy.patch (renamed from target/linux/patches/3.18.2/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.18.3/mtd-rootfs.patch (renamed from target/linux/patches/3.18.2/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.18.3/nfsv3-tcp.patch (renamed from target/linux/patches/3.18.2/nfsv3-tcp.patch)0
-rw-r--r--target/linux/patches/3.18.3/non-static.patch (renamed from target/linux/patches/3.18.2/non-static.patch)0
-rw-r--r--target/linux/patches/3.18.3/patch-fblogo (renamed from target/linux/patches/3.18.2/patch-fblogo)0
-rw-r--r--target/linux/patches/3.18.3/patch-yaffs2 (renamed from target/linux/patches/3.18.2/patch-yaffs2)0
-rw-r--r--target/linux/patches/3.18.3/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.18.2/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.18.3/relocs.patch (renamed from target/linux/patches/3.18.2/relocs.patch)0
-rw-r--r--target/linux/patches/3.18.3/sgidefs.patch (renamed from target/linux/patches/3.18.2/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.18.3/sortext.patch (renamed from target/linux/patches/3.18.2/sortext.patch)0
-rw-r--r--target/linux/patches/3.18.3/startup.patch (renamed from target/linux/patches/3.18.2/startup.patch)0
-rw-r--r--target/linux/patches/3.18.3/wlan-cf.patch (renamed from target/linux/patches/3.18.2/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.18.3/xargs.patch (renamed from target/linux/patches/3.18.2/xargs.patch)0
-rw-r--r--target/m68k/qemu-m68k/patches/3.18.3/m68k-coldfire-fec.patch (renamed from target/m68k/qemu-m68k/patches/3.18.2/m68k-coldfire-fec.patch)0
-rw-r--r--target/m68k/qemu-m68k/patches/3.18.3/qemu-coldfire.patch (renamed from target/m68k/qemu-m68k/patches/3.18.2/qemu-coldfire.patch)0
-rw-r--r--target/mips64/lemote-yeelong/patches/3.18.3/sm7xx-fb.patch (renamed from target/mips64/lemote-yeelong/patches/3.18.2/sm7xx-fb.patch)0
30 files changed, 1439 insertions, 1959 deletions
diff --git a/mk/kernel-ver.mk b/mk/kernel-ver.mk
index 2089f0193..d04b4281e 100644
--- a/mk/kernel-ver.mk
+++ b/mk/kernel-ver.mk
@@ -1,8 +1,8 @@
-ifeq ($(ADK_KERNEL_VERSION_3_18_2),y)
-KERNEL_VERSION:= 3.18.2
+ifeq ($(ADK_KERNEL_VERSION_3_18_3),y)
+KERNEL_VERSION:= 3.18.3
KERNEL_MOD_VERSION:= $(KERNEL_VERSION)
KERNEL_RELEASE:= 1
-KERNEL_HASH:= 1090fa94ddddc38e514f07872315af84032ba7cdb9715c21d5a562a1072b1abf
+KERNEL_HASH:= 0e024cd0bba93f777e733381b1ee2d55a76e4b30e096b0668aba979390e94255
endif
ifeq ($(ADK_KERNEL_VERSION_3_14_28),y)
KERNEL_VERSION:= 3.14.28
diff --git a/target/arm/raspberry-pi/patches/3.18.2/raspberry-pi.patch b/target/arm/raspberry-pi/patches/3.18.3/raspberry-pi.patch
index 6fb100f30..4543ea066 100644
--- a/target/arm/raspberry-pi/patches/3.18.2/raspberry-pi.patch
+++ b/target/arm/raspberry-pi/patches/3.18.3/raspberry-pi.patch
@@ -1,6 +1,6 @@
-diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dts/bcm2708.dtsi
---- linux-3.18.1/arch/arm/boot/dts/bcm2708.dtsi 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/bcm2708.dtsi 2015-01-09 13:30:02.180124919 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/bcm2708.dtsi linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708.dtsi
+--- linux-3.18.3/arch/arm/boot/dts/bcm2708.dtsi 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708.dtsi 2015-01-19 14:30:16.166226125 +0100
@@ -0,0 +1,110 @@
+/include/ "skeleton.dtsi"
+
@@ -112,9 +112,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708.dtsi linux-rpi/arch/arm/boot/dt
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts
---- linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-01-09 13:30:02.180124919 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708-rpi-b.dts
+--- linux-3.18.3/arch/arm/boot/dts/bcm2708-rpi-b.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708-rpi-b.dts 2015-01-19 14:30:16.166226125 +0100
@@ -0,0 +1,101 @@
+/dts-v1/;
+
@@ -217,9 +217,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b.dts linux-rpi/arch/arm/bo
+ act_led_trigger = <&act_led>,"linux,default-trigger";
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
---- linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-01-09 13:30:02.180124919 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
+--- linux-3.18.3/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts 2015-01-19 14:30:16.166226125 +0100
@@ -0,0 +1,101 @@
+/dts-v1/;
+
@@ -322,9 +322,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts linux-rpi/arch/a
+ act_led_trigger = <&act_led>,"linux,default-trigger";
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/hifiberry-dac-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/hifiberry-dac-overlay.dts 2015-01-09 13:30:02.188124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-dac-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/hifiberry-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-dac-overlay.dts 2015-01-19 14:30:16.170226125 +0100
@@ -0,0 +1,34 @@
+// Definitions for HiFiBerry DAC
+/dts-v1/;
@@ -360,9 +360,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-dac-overlay.dts linux-rpi/arc
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 2015-01-09 13:30:02.188124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts 2015-01-19 14:30:16.170226125 +0100
@@ -0,0 +1,39 @@
+// Definitions for HiFiBerry DAC+
+/dts-v1/;
@@ -403,9 +403,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-dacplus-overlay.dts linux-rpi
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/hifiberry-digi-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/hifiberry-digi-overlay.dts 2015-01-09 13:30:02.188124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-digi-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/hifiberry-digi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/hifiberry-digi-overlay.dts 2015-01-19 14:30:16.170226125 +0100
@@ -0,0 +1,39 @@
+// Definitions for HiFiBerry Digi
+/dts-v1/;
@@ -446,9 +446,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/hifiberry-digi-overlay.dts linux-rpi/ar
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/iqaudio-dac-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/iqaudio-dac-overlay.dts 2015-01-09 13:30:02.200124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/iqaudio-dac-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/iqaudio-dac-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/iqaudio-dac-overlay.dts 2015-01-19 14:30:16.178226125 +0100
@@ -0,0 +1,39 @@
+// Definitions for IQaudIO DAC
+/dts-v1/;
@@ -489,9 +489,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/iqaudio-dac-overlay.dts linux-rpi/arch/
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 2015-01-09 13:30:02.200124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts 2015-01-19 14:30:16.178226125 +0100
@@ -0,0 +1,39 @@
+// Definitions for IQaudIO DAC+
+/dts-v1/;
@@ -532,9 +532,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/iqaudio-dacplus-overlay.dts linux-rpi/a
+ };
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts
---- linux-3.18.1/arch/arm/boot/dts/lirc-rpi-overlay.dts 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/lirc-rpi-overlay.dts 2015-01-09 13:30:02.204124917 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi-3.18.x/arch/arm/boot/dts/lirc-rpi-overlay.dts
+--- linux-3.18.3/arch/arm/boot/dts/lirc-rpi-overlay.dts 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/lirc-rpi-overlay.dts 2015-01-19 14:30:16.182226125 +0100
@@ -0,0 +1,57 @@
+// Definitions for lirc-rpi module
+/dts-v1/;
@@ -593,9 +593,9 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/lirc-rpi-overlay.dts linux-rpi/arch/arm
+ debug = <&lirc_rpi>,"rpi,debug:0";
+ };
+};
-diff -Nur linux-3.18.1/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/Makefile
---- linux-3.18.1/arch/arm/boot/dts/Makefile 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/boot/dts/Makefile 2015-01-09 13:30:02.172124919 -0600
+diff -Nur linux-3.18.3/arch/arm/boot/dts/Makefile linux-rpi-3.18.x/arch/arm/boot/dts/Makefile
+--- linux-3.18.3/arch/arm/boot/dts/Makefile 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/boot/dts/Makefile 2015-01-19 14:30:16.162226125 +0100
@@ -53,6 +53,8 @@
dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
@@ -613,10 +613,10 @@ diff -Nur linux-3.18.1/arch/arm/boot/dts/Makefile linux-rpi/arch/arm/boot/dts/Ma
endif
# *.dtb used to be generated in the directory above. Clean out the
-diff -Nur linux-3.18.1/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig
---- linux-3.18.1/arch/arm/configs/bcmrpi_defconfig 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2015-01-09 13:30:02.232124918 -0600
-@@ -0,0 +1,1120 @@
+diff -Nur linux-3.18.3/arch/arm/configs/bcmrpi_defconfig linux-rpi-3.18.x/arch/arm/configs/bcmrpi_defconfig
+--- linux-3.18.3/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/configs/bcmrpi_defconfig 2015-01-19 14:30:16.198226124 +0100
+@@ -0,0 +1,1123 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_PHYS_OFFSET=0
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -1056,8 +1056,11 @@ diff -Nur linux-3.18.1/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/conf
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
++CONFIG_USB_NET_HUAWEI_CDC_NCM=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_DM9601=m
++CONFIG_USB_NET_SR9700=m
++CONFIG_USB_NET_SR9800=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=y
+CONFIG_USB_NET_GL620A=m
@@ -1737,9 +1740,9 @@ diff -Nur linux-3.18.1/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/conf
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.18.1/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig
---- linux-3.18.1/arch/arm/configs/bcmrpi_quick_defconfig 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig 2015-01-09 13:30:02.232124918 -0600
+diff -Nur linux-3.18.3/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi-3.18.x/arch/arm/configs/bcmrpi_quick_defconfig
+--- linux-3.18.3/arch/arm/configs/bcmrpi_quick_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/configs/bcmrpi_quick_defconfig 2015-01-19 14:30:16.198226124 +0100
@@ -0,0 +1,197 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_LOCALVERSION="-quick"
@@ -1938,9 +1941,9 @@ diff -Nur linux-3.18.1/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/ar
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.18.1/arch/arm/include/asm/dma-mapping.h linux-rpi/arch/arm/include/asm/dma-mapping.h
---- linux-3.18.1/arch/arm/include/asm/dma-mapping.h 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/include/asm/dma-mapping.h 2015-01-09 13:30:02.240124918 -0600
+diff -Nur linux-3.18.3/arch/arm/include/asm/dma-mapping.h linux-rpi-3.18.x/arch/arm/include/asm/dma-mapping.h
+--- linux-3.18.3/arch/arm/include/asm/dma-mapping.h 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/include/asm/dma-mapping.h 2015-01-19 14:30:16.206226124 +0100
@@ -58,37 +58,21 @@
#ifndef __arch_pfn_to_dma
static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn)
@@ -1980,9 +1983,9 @@ diff -Nur linux-3.18.1/arch/arm/include/asm/dma-mapping.h linux-rpi/arch/arm/inc
return (dma_addr_t)__virt_to_bus((unsigned long)(addr));
}
-diff -Nur linux-3.18.1/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h
---- linux-3.18.1/arch/arm/include/asm/irqflags.h 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/include/asm/irqflags.h 2015-01-09 12:27:20.304159359 -0600
+diff -Nur linux-3.18.3/arch/arm/include/asm/irqflags.h linux-rpi-3.18.x/arch/arm/include/asm/irqflags.h
+--- linux-3.18.3/arch/arm/include/asm/irqflags.h 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/include/asm/irqflags.h 2015-01-19 14:27:12.494231582 +0100
@@ -145,12 +145,22 @@
}
@@ -2009,9 +2012,9 @@ diff -Nur linux-3.18.1/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/includ
:
: "r" (flags)
: "memory", "cc");
-diff -Nur linux-3.18.1/arch/arm/include/asm/string.h linux-rpi/arch/arm/include/asm/string.h
---- linux-3.18.1/arch/arm/include/asm/string.h 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/include/asm/string.h 2015-01-09 12:27:20.308159360 -0600
+diff -Nur linux-3.18.3/arch/arm/include/asm/string.h linux-rpi-3.18.x/arch/arm/include/asm/string.h
+--- linux-3.18.3/arch/arm/include/asm/string.h 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/include/asm/string.h 2015-01-19 14:27:12.498231582 +0100
@@ -24,6 +24,11 @@
#define __HAVE_ARCH_MEMSET
extern void * memset(void *, int, __kernel_size_t);
@@ -2024,9 +2027,9 @@ diff -Nur linux-3.18.1/arch/arm/include/asm/string.h linux-rpi/arch/arm/include/
extern void __memzero(void *ptr, __kernel_size_t n);
#define memset(p,v,n) \
-diff -Nur linux-3.18.1/arch/arm/include/asm/uaccess.h linux-rpi/arch/arm/include/asm/uaccess.h
---- linux-3.18.1/arch/arm/include/asm/uaccess.h 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/include/asm/uaccess.h 2015-01-09 13:30:02.244124918 -0600
+diff -Nur linux-3.18.3/arch/arm/include/asm/uaccess.h linux-rpi-3.18.x/arch/arm/include/asm/uaccess.h
+--- linux-3.18.3/arch/arm/include/asm/uaccess.h 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/include/asm/uaccess.h 2015-01-19 14:30:16.210226124 +0100
@@ -475,6 +475,7 @@
#ifdef CONFIG_MMU
@@ -2035,9 +2038,9 @@ diff -Nur linux-3.18.1/arch/arm/include/asm/uaccess.h linux-rpi/arch/arm/include
extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n);
extern unsigned long __must_check __copy_to_user_std(void __user *to, const void *from, unsigned long n);
extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n);
-diff -Nur linux-3.18.1/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
---- linux-3.18.1/arch/arm/Kconfig 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/Kconfig 2015-01-09 13:30:02.172124919 -0600
+diff -Nur linux-3.18.3/arch/arm/Kconfig linux-rpi-3.18.x/arch/arm/Kconfig
+--- linux-3.18.3/arch/arm/Kconfig 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/Kconfig 2015-01-19 14:30:16.158226125 +0100
@@ -381,6 +381,23 @@
This enables support for systems based on Atmel
AT91RM9200 and AT91SAM9* processors.
@@ -2070,9 +2073,9 @@ diff -Nur linux-3.18.1/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
source "arch/arm/mach-zynq/Kconfig"
-diff -Nur linux-3.18.1/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
---- linux-3.18.1/arch/arm/Kconfig.debug 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/Kconfig.debug 2015-01-09 13:30:02.172124919 -0600
+diff -Nur linux-3.18.3/arch/arm/Kconfig.debug linux-rpi-3.18.x/arch/arm/Kconfig.debug
+--- linux-3.18.3/arch/arm/Kconfig.debug 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/Kconfig.debug 2015-01-19 14:30:16.158226125 +0100
@@ -985,6 +985,14 @@
options; the platform specific options are deprecated
and will be soon removed.
@@ -2088,9 +2091,9 @@ diff -Nur linux-3.18.1/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
endchoice
config DEBUG_EXYNOS_UART
-diff -Nur linux-3.18.1/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S
---- linux-3.18.1/arch/arm/kernel/fiqasm.S 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/kernel/fiqasm.S 2015-01-09 13:30:02.248124918 -0600
+diff -Nur linux-3.18.3/arch/arm/kernel/fiqasm.S linux-rpi-3.18.x/arch/arm/kernel/fiqasm.S
+--- linux-3.18.3/arch/arm/kernel/fiqasm.S 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/kernel/fiqasm.S 2015-01-19 14:30:16.210226124 +0100
@@ -47,3 +47,7 @@
mov r0, r0 @ avoid hazard prior to ARMv4
ret lr
@@ -2099,9 +2102,9 @@ diff -Nur linux-3.18.1/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
-diff -Nur linux-3.18.1/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c
---- linux-3.18.1/arch/arm/kernel/process.c 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/kernel/process.c 2015-01-09 13:30:02.252124918 -0600
+diff -Nur linux-3.18.3/arch/arm/kernel/process.c linux-rpi-3.18.x/arch/arm/kernel/process.c
+--- linux-3.18.3/arch/arm/kernel/process.c 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/kernel/process.c 2015-01-19 14:30:16.214226124 +0100
@@ -166,6 +166,16 @@
}
#endif
@@ -2119,9 +2122,9 @@ diff -Nur linux-3.18.1/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/proce
/*
* Called by kexec, immediately prior to machine_kexec().
*
-diff -Nur linux-3.18.1/arch/arm/lib/arm-mem.h linux-rpi/arch/arm/lib/arm-mem.h
---- linux-3.18.1/arch/arm/lib/arm-mem.h 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/arm-mem.h 2015-01-09 12:27:20.320159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/arm-mem.h linux-rpi-3.18.x/arch/arm/lib/arm-mem.h
+--- linux-3.18.3/arch/arm/lib/arm-mem.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/arm-mem.h 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,159 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -2282,9 +2285,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/arm-mem.h linux-rpi/arch/arm/lib/arm-mem.h
+ .endif
+92:
+.endm
-diff -Nur linux-3.18.1/arch/arm/lib/copy_from_user.S linux-rpi/arch/arm/lib/copy_from_user.S
---- linux-3.18.1/arch/arm/lib/copy_from_user.S 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/lib/copy_from_user.S 2015-01-09 12:27:20.320159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/copy_from_user.S linux-rpi-3.18.x/arch/arm/lib/copy_from_user.S
+--- linux-3.18.3/arch/arm/lib/copy_from_user.S 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/copy_from_user.S 2015-01-19 14:27:12.506231582 +0100
@@ -84,11 +84,13 @@
.text
@@ -2300,9 +2303,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/copy_from_user.S linux-rpi/arch/arm/lib/copy
.pushsection .fixup,"ax"
.align 0
-diff -Nur linux-3.18.1/arch/arm/lib/exports_rpi.c linux-rpi/arch/arm/lib/exports_rpi.c
---- linux-3.18.1/arch/arm/lib/exports_rpi.c 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/exports_rpi.c 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/exports_rpi.c linux-rpi-3.18.x/arch/arm/lib/exports_rpi.c
+--- linux-3.18.3/arch/arm/lib/exports_rpi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/exports_rpi.c 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2014, Raspberry Pi (Trading) Ltd.
@@ -2341,9 +2344,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/exports_rpi.c linux-rpi/arch/arm/lib/exports
+#include <linux/module.h>
+
+EXPORT_SYMBOL(memcmp);
-diff -Nur linux-3.18.1/arch/arm/lib/Makefile linux-rpi/arch/arm/lib/Makefile
---- linux-3.18.1/arch/arm/lib/Makefile 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/lib/Makefile 2015-01-09 13:30:02.256124918 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/Makefile linux-rpi-3.18.x/arch/arm/lib/Makefile
+--- linux-3.18.3/arch/arm/lib/Makefile 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/Makefile 2015-01-19 14:30:16.218226124 +0100
@@ -6,15 +6,24 @@
lib-y := backtrace.o changebit.o csumipv6.o csumpartial.o \
@@ -2372,9 +2375,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/Makefile linux-rpi/arch/arm/lib/Makefile
mmu-y := clear_user.o copy_page.o getuser.o putuser.o
# the code in uaccess.S is not preemption safe and
-diff -Nur linux-3.18.1/arch/arm/lib/memcmp_rpi.S linux-rpi/arch/arm/lib/memcmp_rpi.S
---- linux-3.18.1/arch/arm/lib/memcmp_rpi.S 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/memcmp_rpi.S 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/memcmp_rpi.S linux-rpi-3.18.x/arch/arm/lib/memcmp_rpi.S
+--- linux-3.18.3/arch/arm/lib/memcmp_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/memcmp_rpi.S 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,285 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -2661,9 +2664,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/memcmp_rpi.S linux-rpi/arch/arm/lib/memcmp_r
+ .unreq DAT7
+ .unreq OFF
+ENDPROC(memcmp)
-diff -Nur linux-3.18.1/arch/arm/lib/memcpymove.h linux-rpi/arch/arm/lib/memcpymove.h
---- linux-3.18.1/arch/arm/lib/memcpymove.h 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/memcpymove.h 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/memcpymove.h linux-rpi-3.18.x/arch/arm/lib/memcpymove.h
+--- linux-3.18.3/arch/arm/lib/memcpymove.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/memcpymove.h 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,506 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -3171,9 +3174,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/memcpymove.h linux-rpi/arch/arm/lib/memcpymo
+ .unreq LAST
+ .unreq OFF
+.endm
-diff -Nur linux-3.18.1/arch/arm/lib/memcpy_rpi.S linux-rpi/arch/arm/lib/memcpy_rpi.S
---- linux-3.18.1/arch/arm/lib/memcpy_rpi.S 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/memcpy_rpi.S 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/memcpy_rpi.S linux-rpi-3.18.x/arch/arm/lib/memcpy_rpi.S
+--- linux-3.18.3/arch/arm/lib/memcpy_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/memcpy_rpi.S 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,59 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -3234,9 +3237,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/memcpy_rpi.S linux-rpi/arch/arm/lib/memcpy_r
+ENTRY(memcpy)
+ memcpy 0
+ENDPROC(memcpy)
-diff -Nur linux-3.18.1/arch/arm/lib/memmove_rpi.S linux-rpi/arch/arm/lib/memmove_rpi.S
---- linux-3.18.1/arch/arm/lib/memmove_rpi.S 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/memmove_rpi.S 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/memmove_rpi.S linux-rpi-3.18.x/arch/arm/lib/memmove_rpi.S
+--- linux-3.18.3/arch/arm/lib/memmove_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/memmove_rpi.S 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,61 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -3299,9 +3302,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/memmove_rpi.S linux-rpi/arch/arm/lib/memmove
+ bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */
+ memcpy 1
+ENDPROC(memmove)
-diff -Nur linux-3.18.1/arch/arm/lib/memset_rpi.S linux-rpi/arch/arm/lib/memset_rpi.S
---- linux-3.18.1/arch/arm/lib/memset_rpi.S 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/lib/memset_rpi.S 2015-01-09 12:27:20.324159360 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/memset_rpi.S linux-rpi-3.18.x/arch/arm/lib/memset_rpi.S
+--- linux-3.18.3/arch/arm/lib/memset_rpi.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/memset_rpi.S 2015-01-19 14:27:12.506231582 +0100
@@ -0,0 +1,121 @@
+/*
+Copyright (c) 2013, Raspberry Pi Foundation
@@ -3424,9 +3427,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/memset_rpi.S linux-rpi/arch/arm/lib/memset_r
+ .unreq DAT2
+ .unreq DAT3
+ENDPROC(memset)
-diff -Nur linux-3.18.1/arch/arm/lib/uaccess_with_memcpy.c linux-rpi/arch/arm/lib/uaccess_with_memcpy.c
---- linux-3.18.1/arch/arm/lib/uaccess_with_memcpy.c 2014-12-16 11:39:45.000000000 -0600
-+++ linux-rpi/arch/arm/lib/uaccess_with_memcpy.c 2015-01-09 13:30:02.260124918 -0600
+diff -Nur linux-3.18.3/arch/arm/lib/uaccess_with_memcpy.c linux-rpi-3.18.x/arch/arm/lib/uaccess_with_memcpy.c
+--- linux-3.18.3/arch/arm/lib/uaccess_with_memcpy.c 2015-01-16 16:04:08.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/lib/uaccess_with_memcpy.c 2015-01-19 14:30:16.218226124 +0100
@@ -22,6 +22,14 @@
#include <asm/current.h>
#include <asm/page.h>
@@ -3570,9 +3573,9 @@ diff -Nur linux-3.18.1/arch/arm/lib/uaccess_with_memcpy.c linux-rpi/arch/arm/lib
static unsigned long noinline
__clear_user_memset(void __user *addr, unsigned long n)
-diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c
---- linux-3.18.1/arch/arm/mach-bcm2708/armctrl.c 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2015-01-09 13:30:02.268124918 -0600
+diff -Nur linux-3.18.3/arch/arm/mach-bcm2708/armctrl.c linux-rpi-3.18.x/arch/arm/mach-bcm2708/armctrl.c
+--- linux-3.18.3/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/mach-bcm2708/armctrl.c 2015-01-19 14:30:16.226226123 +0100
@@ -0,0 +1,315 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.c
@@ -3889,9 +3892,9 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-b
+ armctrl_dt_init();
+ return 0;
+}
-diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h
---- linux-3.18.1/arch/arm/mach-bcm2708/armctrl.h 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2015-01-09 12:27:20.336159360 -0600
+diff -Nur linux-3.18.3/arch/arm/mach-bcm2708/armctrl.h linux-rpi-3.18.x/arch/arm/mach-bcm2708/armctrl.h
+--- linux-3.18.3/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/mach-bcm2708/armctrl.h 2015-01-19 14:27:12.514231581 +0100
@@ -0,0 +1,27 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.h
@@ -3920,9 +3923,9 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-b
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
-diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c
---- linux-3.18.1/arch/arm/mach-bcm2708/bcm2708.c 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2015-01-09 13:30:02.268124918 -0600
+diff -Nur linux-3.18.3/arch/arm/mach-bcm2708/bcm2708.c linux-rpi-3.18.x/arch/arm/mach-bcm2708/bcm2708.c
+--- linux-3.18.3/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/mach-bcm2708/bcm2708.c 2015-01-19 14:30:16.226226123 +0100
@@ -0,0 +1,1095 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.c
@@ -5019,10 +5022,10 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-b
+module_param(reboot_part, uint, 0644);
+module_param(w1_gpio_pin, uint, 0644);
+module_param(w1_gpio_pullup, uint, 0644);
-diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c
---- linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2015-01-09 13:30:02.268124918 -0600
-@@ -0,0 +1,402 @@
+diff -Nur linux-3.18.3/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi-3.18.x/arch/arm/mach-bcm2708/bcm2708_gpio.c
+--- linux-3.18.3/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi-3.18.x/arch/arm/mach-bcm2708/bcm2708_gpio.c 2015-01-19 14:30:16.226226123 +0100
+@@ -0,0 +1,426 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c
+ *
@@ -5068,6 +5071,8 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+#define GPIOUD(x) (0x94+(x)*4)
+#define GPIOUDCLK(x) (0x98+(x)*4)
+
++#define GPIO_BANKS 2
++
+enum { GPIO_FSEL_INPUT, GPIO_FSEL_OUTPUT,
+ GPIO_FSEL_ALT5, GPIO_FSEL_ALT_4,
+ GPIO_FSEL_ALT0, GPIO_FSEL_ALT1,
@@ -5264,8 +5269,6 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+ unsigned long high = readl(gpio->base + GPIOHEN(gb));
+ unsigned long low = readl(gpio->base + GPIOLEN(gb));
+
-+ writel(1 << go, gpio->base + GPIOEDS(gb));
-+
+ if (gpio->rising[gb] & (1 << go)) {
+ writel(rising | (1 << go), gpio->base + GPIOREN(gb));
+ } else {
@@ -5306,12 +5309,24 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+ unsigned bank;
+ int i;
+ unsigned gpio;
-+ for (bank = 0; bank <= 1; bank++) {
++ unsigned level_bits;
++ struct bcm2708_gpio *gpio_data = dev_id;
++
++ for (bank = 0; bank < GPIO_BANKS; bank++) {
+ edsr = readl(__io_address(GPIO_BASE) + GPIOEDS(bank));
++ level_bits = gpio_data->high[bank] | gpio_data->low[bank];
++
+ for_each_set_bit(i, &edsr, 32) {
+ gpio = i + bank * 32;
++ /* ack edge triggered IRQs immediately */
++ if (!(level_bits & (1<<i)))
++ writel(1<<i,
++ __io_address(GPIO_BASE) + GPIOEDS(bank));
+ generic_handle_irq(gpio_to_irq(gpio));
-+ writel(1<<i,__io_address(GPIO_BASE) + GPIOEDS(bank));
++ /* ack level triggered IRQ after handling them */
++ if (level_bits & (1<<i))
++ writel(1<<i,
++ __io_address(GPIO_BASE) + GPIOEDS(bank));
+ }
+ }
+ return IRQ_HANDLED;
@@ -5331,9 +5346,12 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+
+ for (irq = GPIO_IRQ_START; irq < (GPIO_IRQ_START + GPIO_IRQS); irq++) {
+ irq_set_chip_data(irq, ucb);
-+ irq_set_chip(irq, &bcm2708_irqchip);
++ irq_set_chip_and_handler(irq, &bcm2708_irqchip,
++ handle_simple_irq);
+ set_irq_flags(irq, IRQF_VALID);
+ }
++
++ bcm2708_gpio_irq.dev_id = ucb;
+ setup_irq(IRQ_GPIO3, &bcm2708_gpio_irq);
+}
+
@@ -5349,6 +5367,7 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+{
+ struct bcm2708_gpio *ucb;
+ struct resource *res;
++ int bank;
+ int err = 0;
+
+ printk(KERN_INFO DRIVER_NAME ": bcm2708_gpio_probe %p\n", dev);
@@ -5377,11 +5396,19 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+ ucb->gc.set = bcm2708_gpio_set;
+ ucb->gc.can_sleep = 0;
+
++ for (bank = 0; bank < GPIO_BANKS; bank++) {
++ writel(0, ucb->base + GPIOREN(bank));
++ writel(0, ucb->base + GPIOFEN(bank));
++ writel(0, ucb->base + GPIOHEN(bank));
++ writel(0, ucb->base + GPIOLEN(bank));
++ writel(0, ucb->base + GPIOAREN(bank));
++ writel(0, ucb->base + GPIOAFEN(bank));
++ writel(~0, ucb->base + GPIOEDS(bank));
++ }
++
+ bcm2708_gpio_irq_init(ucb);
+
+ err = gpiochip_add(&ucb->gc);
-+ if (err)
-+ goto err;
+
+err:
+ return err;
@@ -5425,9 +5452,9 @@ diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/m
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-3.18.1/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h
---- linux-3.18.1/arch/arm/mach-bcm2708/bcm2708.h 1969-12-31 18:00:00.000000000 -0600
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2015-01-09 12:27:20.336159360 -0600
+diff -Nur linux-3.18.3/arch/arm/mac