summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2014-07-07 12:07:20 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2014-07-07 12:07:47 +0200
commitb224cf732599fa4963b372cb89c4a25978510d31 (patch)
tree2bd38afd2eb06a0f1a32e8b3fcdd107cd9c7c332 /target
parent5bf933f9b3e7966c3b8ebd656a70e85dcb28bda9 (diff)
bump to 3.15.4
Diffstat (limited to 'target')
-rw-r--r--target/arm/cubox-i/patches/3.15.4/rmk.patch (renamed from target/arm/cubox-i/patches/3.15.2/rmk.patch)0
-rw-r--r--target/arm/cubox-i/patches/3.15.4/sdma-firmware-cubox-i.patch (renamed from target/arm/cubox-i/patches/3.15.2/sdma-firmware-cubox-i.patch)0
-rw-r--r--target/arm/raspberry-pi/patches/3.15.4/raspberrypi.patch (renamed from target/arm/raspberry-pi/patches/3.15.2/raspberrypi.patch)4329
-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.15.4/bsd-compatibility.patch (renamed from target/linux/patches/3.15.2/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.15.4/cleankernel.patch (renamed from target/linux/patches/3.15.2/cleankernel.patch)0
-rw-r--r--target/linux/patches/3.15.4/defaults.patch (renamed from target/linux/patches/3.15.2/defaults.patch)0
-rw-r--r--target/linux/patches/3.15.4/disable-netfilter.patch (renamed from target/linux/patches/3.15.2/disable-netfilter.patch)0
-rw-r--r--target/linux/patches/3.15.4/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.15.2/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.15.4/gemalto.patch (renamed from target/linux/patches/3.15.2/gemalto.patch)0
-rw-r--r--target/linux/patches/3.15.4/initramfs-nosizelimit.patch (renamed from target/linux/patches/3.15.2/initramfs-nosizelimit.patch)0
-rw-r--r--target/linux/patches/3.15.4/lemote-rfkill.patch (renamed from target/linux/patches/3.15.2/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.15.4/lz4.patch (renamed from target/linux/patches/3.15.2/lz4.patch)0
-rw-r--r--target/linux/patches/3.15.4/microblaze-axi.patch (renamed from target/linux/patches/3.15.2/microblaze-axi.patch)0
-rw-r--r--target/linux/patches/3.15.4/microblaze-ethernet.patch (renamed from target/linux/patches/3.15.2/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.15.4/mkpiggy.patch (renamed from target/linux/patches/3.15.2/mkpiggy.patch)0
-rw-r--r--target/linux/patches/3.15.4/mtd-rootfs.patch (renamed from target/linux/patches/3.15.2/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.15.4/nfsv3-tcp.patch (renamed from target/linux/patches/3.15.2/nfsv3-tcp.patch)0
-rw-r--r--target/linux/patches/3.15.4/non-static.patch (renamed from target/linux/patches/3.15.2/non-static.patch)0
-rw-r--r--target/linux/patches/3.15.4/patch-fblogo (renamed from target/linux/patches/3.15.2/patch-fblogo)0
-rw-r--r--target/linux/patches/3.15.4/patch-yaffs2 (renamed from target/linux/patches/3.15.2/patch-yaffs2)0
-rw-r--r--target/linux/patches/3.15.4/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.15.2/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.15.4/regmap-boolean.patch (renamed from target/linux/patches/3.15.2/regmap-boolean.patch)0
-rw-r--r--target/linux/patches/3.15.4/relocs.patch (renamed from target/linux/patches/3.15.2/relocs.patch)0
-rw-r--r--target/linux/patches/3.15.4/sgidefs.patch (renamed from target/linux/patches/3.15.2/sgidefs.patch)0
-rw-r--r--target/linux/patches/3.15.4/sortext.patch (renamed from target/linux/patches/3.15.2/sortext.patch)0
-rw-r--r--target/linux/patches/3.15.4/startup.patch (renamed from target/linux/patches/3.15.2/startup.patch)0
-rw-r--r--target/linux/patches/3.15.4/tcp-fastopen.patch (renamed from target/linux/patches/3.15.2/tcp-fastopen.patch)0
-rw-r--r--target/linux/patches/3.15.4/wlan-cf.patch (renamed from target/linux/patches/3.15.2/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.15.4/xargs.patch (renamed from target/linux/patches/3.15.2/xargs.patch)0
-rw-r--r--target/mips/mikrotik-rb532/patches/3.15.4/rb532-cfgfs.patch (renamed from target/mips/mikrotik-rb532/patches/3.15.2/rb532-cfgfs.patch)0
-rw-r--r--target/mips/mikrotik-rb532/patches/3.15.4/rb532-serial.patch (renamed from target/mips/mikrotik-rb532/patches/3.15.2/rb532-serial.patch)0
33 files changed, 3572 insertions, 765 deletions
diff --git a/target/arm/cubox-i/patches/3.15.2/rmk.patch b/target/arm/cubox-i/patches/3.15.4/rmk.patch
index 7ccbf3b4a..7ccbf3b4a 100644
--- a/target/arm/cubox-i/patches/3.15.2/rmk.patch
+++ b/target/arm/cubox-i/patches/3.15.4/rmk.patch
diff --git a/target/arm/cubox-i/patches/3.15.2/sdma-firmware-cubox-i.patch b/target/arm/cubox-i/patches/3.15.4/sdma-firmware-cubox-i.patch
index 13f94a208..13f94a208 100644
--- a/target/arm/cubox-i/patches/3.15.2/sdma-firmware-cubox-i.patch
+++ b/target/arm/cubox-i/patches/3.15.4/sdma-firmware-cubox-i.patch
diff --git a/target/arm/raspberry-pi/patches/3.15.2/raspberrypi.patch b/target/arm/raspberry-pi/patches/3.15.4/raspberrypi.patch
index bfc70b248..4607439bc 100644
--- a/target/arm/raspberry-pi/patches/3.15.2/raspberrypi.patch
+++ b/target/arm/raspberry-pi/patches/3.15.4/raspberrypi.patch
@@ -1,6 +1,6 @@
-diff -Nur linux-3.15/arch/arm/configs/bcmrpi_cutdown_defconfig linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig
---- linux-3.15/arch/arm/configs/bcmrpi_cutdown_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/configs/bcmrpi_cutdown_defconfig linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig
+--- linux-3.15.4/arch/arm/configs/bcmrpi_cutdown_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,503 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -505,9 +505,9 @@ diff -Nur linux-3.15/arch/arm/configs/bcmrpi_cutdown_defconfig linux-rpi/arch/ar
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_BCM2708=m
-diff -Nur linux-3.15/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig
---- linux-3.15/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig
+--- linux-3.15.4/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,1099 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -1608,9 +1608,9 @@ diff -Nur linux-3.15/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/config
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.15/arch/arm/configs/bcmrpi_emergency_defconfig linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig
---- linux-3.15/arch/arm/configs/bcmrpi_emergency_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/configs/bcmrpi_emergency_defconfig linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig
+--- linux-3.15.4/arch/arm/configs/bcmrpi_emergency_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,532 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -2144,9 +2144,9 @@ diff -Nur linux-3.15/arch/arm/configs/bcmrpi_emergency_defconfig linux-rpi/arch/
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.15/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig
---- linux-3.15/arch/arm/configs/bcmrpi_quick_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig
+--- linux-3.15.4/arch/arm/configs/bcmrpi_quick_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,197 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_LOCALVERSION="-quick"
@@ -2345,9 +2345,9 @@ diff -Nur linux-3.15/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/arm/
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.15/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h
---- linux-3.15/arch/arm/include/asm/irqflags.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/include/asm/irqflags.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h
+--- linux-3.15.4/arch/arm/include/asm/irqflags.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/include/asm/irqflags.h 2014-07-07 10:44:57.000000000 +0200
@@ -145,12 +145,22 @@
}
@@ -2374,9 +2374,9 @@ diff -Nur linux-3.15/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/
:
: "r" (flags)
: "memory", "cc");
-diff -Nur linux-3.15/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
---- linux-3.15/arch/arm/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/Kconfig 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
+--- linux-3.15.4/arch/arm/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig 2014-07-07 10:44:57.000000000 +0200
@@ -384,6 +384,24 @@
This enables support for systems based on Atmel
AT91RM9200 and AT91SAM9* processors.
@@ -2410,9 +2410,9 @@ diff -Nur linux-3.15/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
source "arch/arm/mach-zynq/Kconfig"
-diff -Nur linux-3.15/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
---- linux-3.15/arch/arm/Kconfig.debug 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/Kconfig.debug 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
+--- linux-3.15.4/arch/arm/Kconfig.debug 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig.debug 2014-07-07 10:44:57.000000000 +0200
@@ -916,6 +916,14 @@
options; the platform specific options are deprecated
and will be soon removed.
@@ -2428,9 +2428,9 @@ diff -Nur linux-3.15/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
endchoice
config DEBUG_EXYNOS_UART
-diff -Nur linux-3.15/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S
---- linux-3.15/arch/arm/kernel/fiqasm.S 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/kernel/fiqasm.S 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S
+--- linux-3.15.4/arch/arm/kernel/fiqasm.S 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/kernel/fiqasm.S 2014-07-07 10:44:57.000000000 +0200
@@ -47,3 +47,7 @@
mov r0, r0 @ avoid hazard prior to ARMv4
mov pc, lr
@@ -2439,9 +2439,9 @@ diff -Nur linux-3.15/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
-diff -Nur linux-3.15/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c
---- linux-3.15/arch/arm/kernel/process.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/kernel/process.c 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c
+--- linux-3.15.4/arch/arm/kernel/process.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/kernel/process.c 2014-07-07 10:44:57.000000000 +0200
@@ -171,6 +171,16 @@
}
#endif
@@ -2459,9 +2459,9 @@ diff -Nur linux-3.15/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process
/*
* Called by kexec, immediately prior to machine_kexec().
*
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c
---- linux-3.15/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,219 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.c
@@ -2682,9 +2682,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm
+ init_FIQ(FIQ_START);
+ return 0;
+}
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h
---- linux-3.15/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.h
@@ -2713,9 +2713,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c
---- linux-3.15/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,1031 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.c
@@ -3748,9 +3748,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm
+module_param(reboot_part, uint, 0644);
+module_param(w1_gpio_pin, uint, 0644);
+module_param(w1_gpio_pullup, uint, 0644);
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c
---- linux-3.15/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2014-06-29 11:34:17.000000000 +0200
@@ -0,0 +1,361 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c
@@ -4113,9 +4113,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mac
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h
---- linux-3.15/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,49 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.h
@@ -4166,9 +4166,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm
+}
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/clock.c linux-rpi/arch/arm/mach-bcm2708/clock.c
---- linux-3.15/arch/arm/mach-bcm2708/clock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/clock.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/clock.c linux-rpi/arch/arm/mach-bcm2708/clock.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/clock.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/clock.c 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,61 @@
+/*
+ * linux/arch/arm/mach-bcm2708/clock.c
@@ -4231,9 +4231,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/clock.c linux-rpi/arch/arm/mach-bcm27
+ return -EIO;
+}
+EXPORT_SYMBOL(clk_set_rate);
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/clock.h linux-rpi/arch/arm/mach-bcm2708/clock.h
---- linux-3.15/arch/arm/mach-bcm2708/clock.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/clock.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/clock.h linux-rpi/arch/arm/mach-bcm2708/clock.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/clock.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/clock.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,24 @@
+/*
+ * linux/arch/arm/mach-bcm2708/clock.h
@@ -4259,9 +4259,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/clock.h linux-rpi/arch/arm/mach-bcm27
+struct clk {
+ unsigned long rate;
+};
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2708/dma.c
---- linux-3.15/arch/arm/mach-bcm2708/dma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/dma.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2708/dma.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/dma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/dma.c 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,407 @@
+/*
+ * linux/arch/arm/mach-bcm2708/dma.c
@@ -4670,9 +4670,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/dma.c linux-rpi/arch/arm/mach-bcm2708
+MODULE_LICENSE("GPL");
+
+MODULE_PARM_DESC(dmachans, "Bitmap of DMA channels available to the ARM");
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/arm_control.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_control.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,419 @@
+/*
+ * linux/arch/arm/mach-bcm2708/arm_control.h
@@ -5093,9 +5093,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_control.h linux-rpi/
+#define AJBTDO HW_REGISTER_RW(AJB_BASE+0x0c)
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_power.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/arm_power.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/arm_power.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,60 @@
+/*
+ * linux/arch/arm/mach-bcm2708/include/mach/arm_power.h
@@ -5157,9 +5157,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/arm_power.h linux-rpi/ar
+};
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/clkdev.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/clkdev.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,7 @@
+#ifndef __ASM_MACH_CLKDEV_H
+#define __ASM_MACH_CLKDEV_H
@@ -5168,9 +5168,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/clkdev.h linux-rpi/arch/
+#define __clk_put(clk) do { } while (0)
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/debug-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/debug-macro.S 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,22 @@
+/* arch/arm/mach-bcm2708/include/mach/debug-macro.S
+ *
@@ -5194,9 +5194,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/debug-macro.S linux-rpi/
+ .endm
+
+#include <debug/pl01x.S>
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/dma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/dma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/dma.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,90 @@
+/*
+ * linux/arch/arm/mach-bcm2708/include/mach/dma.h
@@ -5288,9 +5288,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/dma.h linux-rpi/arch/arm
+
+
+#endif /* _MACH_BCM2708_DMA_H */
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/entry-macro.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/entry-macro.S 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,69 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/entry-macro.S
@@ -5361,9 +5361,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/entry-macro.S linux-rpi/
+1020: @ EQ will be set if no irqs pending
+
+ .endm
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/frc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/frc.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -5403,9 +5403,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/frc.h linux-rpi/arch/arm
+extern unsigned long long frc_clock_ticks63(void);
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/gpio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/gpio.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,17 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/gpio.h
@@ -5424,9 +5424,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/gpio.h linux-rpi/arch/ar
+#define irq_to_gpio(x) ((x) - GPIO_IRQ_START)
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/hardware.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/hardware.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,28 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/hardware.h
@@ -5456,9 +5456,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/hardware.h linux-rpi/arc
+#include <mach/platform.h>
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/io.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/io.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,27 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/io.h
@@ -5487,9 +5487,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/io.h linux-rpi/arch/arm/
+#define __io(a) __typesafe_io(a)
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/irqs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/irqs.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,197 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/irqs.h
@@ -5688,9 +5688,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/irqs.h linux-rpi/arch/ar
+#define NR_IRQS (HARD_IRQS+FIQ_IRQS+GPIO_IRQS+SPARE_IRQS)
+
+#endif /* _BCM2708_IRQS_H_ */
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/memory.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/memory.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,57 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/memory.h
@@ -5749,9 +5749,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/memory.h linux-rpi/arch/
+#define __bus_to_pfn(x) __phys_to_pfn((x) - (BUS_OFFSET - PLAT_PHYS_OFFSET))
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/platform.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/platform.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,228 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/platform.h
@@ -5981,9 +5981,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/platform.h linux-rpi/arc
+#endif
+
+/* END */
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/power.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/power.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/power.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,26 @@
+/*
+ * linux/arch/arm/mach-bcm2708/power.h
@@ -6011,9 +6011,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/power.h linux-rpi/arch/a
+extern int bcm_power_close(BCM_POWER_HANDLE_T handle);
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/system.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/system.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,38 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/system.h
@@ -6053,9 +6053,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/system.h linux-rpi/arch/
+}
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/timex.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/timex.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,23 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/timex.h
@@ -6080,9 +6080,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/timex.h linux-rpi/arch/a
+ */
+
+#define CLOCK_TICK_RATE (1000000)
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/uncompress.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/uncompress.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,84 @@
+/*
+ * arch/arm/mach-bcn2708/include/mach/uncompress.h
@@ -6168,9 +6168,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/uncompress.h linux-rpi/a
+ * nothing to do
+ */
+#define arch_decomp_wdog()
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/vcio.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vcio.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vcio.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,141 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/vcio.h
@@ -6313,9 +6313,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vcio.h linux-rpi/arch/ar
+#define DEVICE_FILE_NAME "char_dev"
+
+#endif
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/vc_mem.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vc_mem.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vc_mem.h 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,35 @@
+/*****************************************************************************
+* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved.
@@ -6352,9 +6352,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vc_mem.h linux-rpi/arch/
+#endif
+
+#endif /* VC_MEM_H */
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h
---- linux-3.15/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h
+--- linux-3.15.4/arch/arm/mach-bcm2708/include/mach/vmalloc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/include/mach/vmalloc.h 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,20 @@
+/*
+ * arch/arm/mach-bcm2708/include/mach/vmalloc.h
@@ -6376,9 +6376,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/include/mach/vmalloc.h linux-rpi/arch
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#define VMALLOC_END (0xe8000000)
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bcm2708/Kconfig
---- linux-3.15/arch/arm/mach-bcm2708/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/Kconfig 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bcm2708/Kconfig
+--- linux-3.15.4/arch/arm/mach-bcm2708/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/Kconfig 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,41 @@
+menu "Broadcom BCM2708 Implementations"
+ depends on ARCH_BCM2708
@@ -6421,9 +6421,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/Kconfig linux-rpi/arch/arm/mach-bcm27
+ help
+ Binds spidev driver to the SPI0 master
+endmenu
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-bcm2708/Makefile
---- linux-3.15/arch/arm/mach-bcm2708/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/Makefile 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-bcm2708/Makefile
+--- linux-3.15.4/arch/arm/mach-bcm2708/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/Makefile 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,7 @@
+#
+# Makefile for the linux kernel.
@@ -6432,16 +6432,16 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/Makefile linux-rpi/arch/arm/mach-bcm2
+obj-$(CONFIG_MACH_BCM2708) += clock.o bcm2708.o armctrl.o vcio.o power.o dma.o
+obj-$(CONFIG_BCM2708_GPIO) += bcm2708_gpio.o
+obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/Makefile.boot linux-rpi/arch/arm/mach-bcm2708/Makefile.boot
---- linux-3.15/arch/arm/mach-bcm2708/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/Makefile.boot 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/Makefile.boot linux-rpi/arch/arm/mach-bcm2708/Makefile.boot
+--- linux-3.15.4/arch/arm/mach-bcm2708/Makefile.boot 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/Makefile.boot 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,3 @@
+ zreladdr-y := 0x00008000
+params_phys-y := 0x00000100
+initrd_phys-y := 0x00800000
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bcm2708/power.c
---- linux-3.15/arch/arm/mach-bcm2708/power.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/power.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bcm2708/power.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/power.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/power.c 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,194 @@
+/*
+ * linux/arch/arm/mach-bcm2708/power.c
@@ -6637,9 +6637,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/power.c linux-rpi/arch/arm/mach-bcm27
+MODULE_AUTHOR("Phil Elwell");
+MODULE_DESCRIPTION("Interface to BCM2708 power management");
+MODULE_LICENSE("GPL");
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm2708/vcio.c
---- linux-3.15/arch/arm/mach-bcm2708/vcio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/vcio.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm2708/vcio.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/vcio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/vcio.c 2014-07-07 10:44:57.000000000 +0200
@@ -0,0 +1,474 @@
+/*
+ * linux/arch/arm/mach-bcm2708/vcio.c
@@ -7115,9 +7115,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/vcio.c linux-rpi/arch/arm/mach-bcm270
+MODULE_DESCRIPTION("ARM I/O to VideoCore processor");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm-mbox");
-diff -Nur linux-3.15/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-bcm2708/vc_mem.c
---- linux-3.15/arch/arm/mach-bcm2708/vc_mem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/arch/arm/mach-bcm2708/vc_mem.c 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-bcm2708/vc_mem.c
+--- linux-3.15.4/arch/arm/mach-bcm2708/vc_mem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/vc_mem.c 2014-04-13 17:32:40.000000000 +0200
@@ -0,0 +1,432 @@
+/*****************************************************************************
+* Copyright 2010 - 2011 Broadcom Corporation. All rights reserved.
@@ -7551,9 +7551,9 @@ diff -Nur linux-3.15/arch/arm/mach-bcm2708/vc_mem.c linux-rpi/arch/arm/mach-bcm2
+module_param(mem_size, uint, 0644);
+module_param(mem_base, uint, 0644);
+
-diff -Nur linux-3.15/arch/arm/Makefile linux-rpi/arch/arm/Makefile
---- linux-3.15/arch/arm/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/Makefile 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/Makefile linux-rpi/arch/arm/Makefile
+--- linux-3.15.4/arch/arm/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/Makefile 2014-07-07 10:44:57.000000000 +0200
@@ -143,6 +143,7 @@
# by CONFIG_* macro name.
machine-$(CONFIG_ARCH_AT91) += at91
@@ -7562,9 +7562,9 @@ diff -Nur linux-3.15/arch/arm/Makefile linux-rpi/arch/arm/Makefile
machine-$(CONFIG_ARCH_BERLIN) += berlin
machine-$(CONFIG_ARCH_CLPS711X) += clps711x
machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
-diff -Nur linux-3.15/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig
---- linux-3.15/arch/arm/mm/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/mm/Kconfig 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig
+--- linux-3.15.4/arch/arm/mm/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/mm/Kconfig 2014-07-07 10:44:58.000000000 +0200
@@ -358,7 +358,7 @@
# ARMv6
@@ -7574,9 +7574,9 @@ diff -Nur linux-3.15/arch/arm/mm/Kconfig linux-rpi/arch/arm/mm/Kconfig
select CPU_32v6
select CPU_ABRT_EV6
select CPU_CACHE_V6
-diff -Nur linux-3.15/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S
---- linux-3.15/arch/arm/mm/proc-v6.S 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/mm/proc-v6.S 2014-06-11 21:05:18.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S
+--- linux-3.15.4/arch/arm/mm/proc-v6.S 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/mm/proc-v6.S 2014-07-07 10:44:58.000000000 +0200
@@ -73,10 +73,19 @@
*
* IRQs are already disabled.
@@ -7600,9 +7600,9 @@ diff -Nur linux-3.15/arch/arm/mm/proc-v6.S linux-rpi/arch/arm/mm/proc-v6.S
mov pc, lr
ENTRY(cpu_v6_dcache_clean_area)
-diff -Nur linux-3.15/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach-types
---- linux-3.15/arch/arm/tools/mach-types 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/arch/arm/tools/mach-types 2014-06-11 21:03:20.000000000 +0200
+diff -Nur linux-3.15.4/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach-types
+--- linux-3.15.4/arch/arm/tools/mach-types 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/arm/tools/mach-types 2014-04-13 17:32:41.000000000 +0200
@@ -522,6 +522,7 @@
prima2_evb MACH_PRIMA2_EVB PRIMA2_EVB 3103
paz00 MACH_PAZ00 PAZ00 3128
@@ -7611,9 +7611,1012 @@ diff -Nur linux-3.15/arch/arm/tools/mach-types linux-rpi/arch/arm/tools/mach-typ
ag5evm MACH_AG5EVM AG5EVM 3189
ics_if_voip MACH_ICS_IF_VOIP ICS_IF_VOIP 3206
wlf_cragg_6410 MACH_WLF_CRAGG_6410 WLF_CRAGG_6410 3207
-diff -Nur linux-3.15/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt
---- linux-3.15/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt 2014-06-11 21:03:19.000000000 +0200
+diff -Nur linux-3.15.4/arch/mips/include/asm/sigcontext.h linux-rpi/arch/mips/include/asm/sigcontext.h
+--- linux-3.15.4/arch/mips/include/asm/sigcontext.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/include/asm/sigcontext.h 2014-07-07 10:44:58.000000000 +0200
+@@ -32,6 +32,8 @@
+ __u32 sc_lo2;
+ __u32 sc_hi3;
+ __u32 sc_lo3;
++ __u64 sc_msaregs[32]; /* Most significant 64 bits */
++ __u32 sc_msa_csr;
+ };
+ #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32 */
+ #endif /* _ASM_SIGCONTEXT_H */
+diff -Nur linux-3.15.4/arch/mips/include/uapi/asm/sigcontext.h linux-rpi/arch/mips/include/uapi/asm/sigcontext.h
+--- linux-3.15.4/arch/mips/include/uapi/asm/sigcontext.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/include/uapi/asm/sigcontext.h 2014-07-07 10:44:58.000000000 +0200
+@@ -12,6 +12,10 @@
+ #include <linux/types.h>
+ #include <asm/sgidefs.h>
+
++/* Bits which may be set in sc_used_math */
++#define USEDMATH_FP (1 << 0)
++#define USEDMATH_MSA (1 << 1)
++
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
+
+ /*
+@@ -37,6 +41,8 @@
+ unsigned long sc_lo2;
+ unsigned long sc_hi3;
+ unsigned long sc_lo3;
++ unsigned long long sc_msaregs[32]; /* Most significant 64 bits */
++ unsigned long sc_msa_csr;
+ };
+
+ #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */
+@@ -70,6 +76,8 @@
+ __u32 sc_used_math;
+ __u32 sc_dsp;
+ __u32 sc_reserved;
++ __u64 sc_msaregs[32];
++ __u32 sc_msa_csr;
+ };
+
+
+diff -Nur linux-3.15.4/arch/mips/kernel/asm-offsets.c linux-rpi/arch/mips/kernel/asm-offsets.c
+--- linux-3.15.4/arch/mips/kernel/asm-offsets.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kernel/asm-offsets.c 2014-07-07 10:44:58.000000000 +0200
+@@ -295,6 +295,7 @@
+ OFFSET(SC_LO2, sigcontext, sc_lo2);
+ OFFSET(SC_HI3, sigcontext, sc_hi3);
+ OFFSET(SC_LO3, sigcontext, sc_lo3);
++ OFFSET(SC_MSAREGS, sigcontext, sc_msaregs);
+ BLANK();
+ }
+ #endif
+@@ -309,6 +310,7 @@
+ OFFSET(SC_MDLO, sigcontext, sc_mdlo);
+ OFFSET(SC_PC, sigcontext, sc_pc);
+ OFFSET(SC_FPC_CSR, sigcontext, sc_fpc_csr);
++ OFFSET(SC_MSAREGS, sigcontext, sc_msaregs);
+ BLANK();
+ }
+ #endif
+@@ -320,6 +322,7 @@
+ OFFSET(SC32_FPREGS, sigcontext32, sc_fpregs);
+ OFFSET(SC32_FPC_CSR, sigcontext32, sc_fpc_csr);
+ OFFSET(SC32_FPC_EIR, sigcontext32, sc_fpc_eir);
++ OFFSET(SC32_MSAREGS, sigcontext32, sc_msaregs);
+ BLANK();
+ }
+ #endif
+diff -Nur linux-3.15.4/arch/mips/kernel/irq-msc01.c linux-rpi/arch/mips/kernel/irq-msc01.c
+--- linux-3.15.4/arch/mips/kernel/irq-msc01.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kernel/irq-msc01.c 2014-04-13 17:32:42.000000000 +0200
+@@ -131,7 +131,7 @@
+
+ board_bind_eic_interrupt = &msc_bind_eic_interrupt;
+
+- for (; nirq > 0; nirq--, imp++) {
++ for (; nirq >= 0; nirq--, imp++) {
+ int n = imp->im_irq;
+
+ switch (imp->im_type) {
+diff -Nur linux-3.15.4/arch/mips/kernel/r4k_fpu.S linux-rpi/arch/mips/kernel/r4k_fpu.S
+--- linux-3.15.4/arch/mips/kernel/r4k_fpu.S 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kernel/r4k_fpu.S 2014-07-07 10:44:58.000000000 +0200
+@@ -13,6 +13,7 @@
+ * Copyright (C) 1999, 2001 Silicon Graphics, Inc.
+ */
+ #include <asm/asm.h>
++#include <asm/asmmacro.h>
+ #include <asm/errno.h>
+ #include <asm/fpregdef.h>
+ #include <asm/mipsregs.h>
+@@ -245,6 +246,218 @@
+ END(_restore_fp_context32)
+ #endif
+
++#ifdef CONFIG_CPU_HAS_MSA
++
++ .macro save_sc_msareg wr, off, sc, tmp
++#ifdef CONFIG_64BIT
++ copy_u_d \tmp, \wr, 1
++ EX sd \tmp, (\off+(\wr*8))(\sc)
++#elif defined(CONFIG_CPU_LITTLE_ENDIAN)
++ copy_u_w \tmp, \wr, 2
++ EX sw \tmp, (\off+(\wr*8)+0)(\sc)
++ copy_u_w \tmp, \wr, 3
++ EX sw \tmp, (\off+(\wr*8)+4)(\sc)
++#else /* CONFIG_CPU_BIG_ENDIAN */
++ copy_u_w \tmp, \wr, 2
++ EX sw \tmp, (\off+(\wr*8)+4)(\sc)
++ copy_u_w \tmp, \wr, 3
++ EX sw \tmp, (\off+(\wr*8)+0)(\sc)
++#endif
++ .endm
++
++/*
++ * int _save_msa_context(struct sigcontext *sc)
++ *
++ * Save the upper 64 bits of each vector register along with the MSA_CSR
++ * register into sc. Returns zero on success, else non-zero.
++ */
++LEAF(_save_msa_context)
++ save_sc_msareg 0, SC_MSAREGS, a0, t0
++ save_sc_msareg 1, SC_MSAREGS, a0, t0
++ save_sc_msareg 2, SC_MSAREGS, a0, t0
++ save_sc_msareg 3, SC_MSAREGS, a0, t0
++ save_sc_msareg 4, SC_MSAREGS, a0, t0
++ save_sc_msareg 5, SC_MSAREGS, a0, t0
++ save_sc_msareg 6, SC_MSAREGS, a0, t0
++ save_sc_msareg 7, SC_MSAREGS, a0, t0
++ save_sc_msareg 8, SC_MSAREGS, a0, t0
++ save_sc_msareg 9, SC_MSAREGS, a0, t0
++ save_sc_msareg 10, SC_MSAREGS, a0, t0
++ save_sc_msareg 11, SC_MSAREGS, a0, t0
++ save_sc_msareg 12, SC_MSAREGS, a0, t0
++ save_sc_msareg 13, SC_MSAREGS, a0, t0
++ save_sc_msareg 14, SC_MSAREGS, a0, t0
++ save_sc_msareg 15, SC_MSAREGS, a0, t0
++ save_sc_msareg 16, SC_MSAREGS, a0, t0
++ save_sc_msareg 17, SC_MSAREGS, a0, t0
++ save_sc_msareg 18, SC_MSAREGS, a0, t0
++ save_sc_msareg 19, SC_MSAREGS, a0, t0
++ save_sc_msareg 20, SC_MSAREGS, a0, t0
++ save_sc_msareg 21, SC_MSAREGS, a0, t0
++ save_sc_msareg 22, SC_MSAREGS, a0, t0
++ save_sc_msareg 23, SC_MSAREGS, a0, t0
++ save_sc_msareg 24, SC_MSAREGS, a0, t0
++ save_sc_msareg 25, SC_MSAREGS, a0, t0
++ save_sc_msareg 26, SC_MSAREGS, a0, t0
++ save_sc_msareg 27, SC_MSAREGS, a0, t0
++ save_sc_msareg 28, SC_MSAREGS, a0, t0
++ save_sc_msareg 29, SC_MSAREGS, a0, t0
++ save_sc_msareg 30, SC_MSAREGS, a0, t0
++ save_sc_msareg 31, SC_MSAREGS, a0, t0
++ jr ra
++ li v0, 0
++ END(_save_msa_context)
++
++#ifdef CONFIG_MIPS32_COMPAT
++
++/*
++ * int _save_msa_context32(struct sigcontext32 *sc)
++ *
++ * Save the upper 64 bits of each vector register along with the MSA_CSR
++ * register into sc. Returns zero on success, else non-zero.
++ */
++LEAF(_save_msa_context32)
++ save_sc_msareg 0, SC32_MSAREGS, a0, t0
++ save_sc_msareg 1, SC32_MSAREGS, a0, t0
++ save_sc_msareg 2, SC32_MSAREGS, a0, t0
++ save_sc_msareg 3, SC32_MSAREGS, a0, t0
++ save_sc_msareg 4, SC32_MSAREGS, a0, t0
++ save_sc_msareg 5, SC32_MSAREGS, a0, t0
++ save_sc_msareg 6, SC32_MSAREGS, a0, t0
++ save_sc_msareg 7, SC32_MSAREGS, a0, t0
++ save_sc_msareg 8, SC32_MSAREGS, a0, t0
++ save_sc_msareg 9, SC32_MSAREGS, a0, t0
++ save_sc_msareg 10, SC32_MSAREGS, a0, t0
++ save_sc_msareg 11, SC32_MSAREGS, a0, t0
++ save_sc_msareg 12, SC32_MSAREGS, a0, t0
++ save_sc_msareg 13, SC32_MSAREGS, a0, t0
++ save_sc_msareg 14, SC32_MSAREGS, a0, t0
++ save_sc_msareg 15, SC32_MSAREGS, a0, t0
++ save_sc_msareg 16, SC32_MSAREGS, a0, t0
++ save_sc_msareg 17, SC32_MSAREGS, a0, t0
++ save_sc_msareg 18, SC32_MSAREGS, a0, t0
++ save_sc_msareg 19, SC32_MSAREGS, a0, t0
++ save_sc_msareg 20, SC32_MSAREGS, a0, t0
++ save_sc_msareg 21, SC32_MSAREGS, a0, t0
++ save_sc_msareg 22, SC32_MSAREGS, a0, t0
++ save_sc_msareg 23, SC32_MSAREGS, a0, t0
++ save_sc_msareg 24, SC32_MSAREGS, a0, t0
++ save_sc_msareg 25, SC32_MSAREGS, a0, t0
++ save_sc_msareg 26, SC32_MSAREGS, a0, t0
++ save_sc_msareg 27, SC32_MSAREGS, a0, t0
++ save_sc_msareg 28, SC32_MSAREGS, a0, t0
++ save_sc_msareg 29, SC32_MSAREGS, a0, t0
++ save_sc_msareg 30, SC32_MSAREGS, a0, t0
++ save_sc_msareg 31, SC32_MSAREGS, a0, t0
++ jr ra
++ li v0, 0
++ END(_save_msa_context32)
++
++#endif /* CONFIG_MIPS32_COMPAT */
++
++ .macro restore_sc_msareg wr, off, sc, tmp
++#ifdef CONFIG_64BIT
++ EX ld \tmp, (\off+(\wr*8))(\sc)
++ insert_d \wr, 1, \tmp
++#elif defined(CONFIG_CPU_LITTLE_ENDIAN)
++ EX lw \tmp, (\off+(\wr*8)+0)(\sc)
++ insert_w \wr, 2, \tmp
++ EX lw \tmp, (\off+(\wr*8)+4)(\sc)
++ insert_w \wr, 3, \tmp
++#else /* CONFIG_CPU_BIG_ENDIAN */
++ EX lw \tmp, (\off+(\wr*8)+4)(\sc)
++ insert_w \wr, 2, \tmp
++ EX lw \tmp, (\off+(\wr*8)+0)(\sc)
++ insert_w \wr, 3, \tmp
++#endif
++ .endm
++
++/*
++ * int _restore_msa_context(struct sigcontext *sc)
++ */
++LEAF(_restore_msa_context)
++ restore_sc_msareg 0, SC_MSAREGS, a0, t0
++ restore_sc_msareg 1, SC_MSAREGS, a0, t0
++ restore_sc_msareg 2, SC_MSAREGS, a0, t0
++ restore_sc_msareg 3, SC_MSAREGS, a0, t0
++ restore_sc_msareg 4, SC_MSAREGS, a0, t0
++ restore_sc_msareg 5, SC_MSAREGS, a0, t0
++ restore_sc_msareg 6, SC_MSAREGS, a0, t0
++ restore_sc_msareg 7, SC_MSAREGS, a0, t0
++ restore_sc_msareg 8, SC_MSAREGS, a0, t0
++ restore_sc_msareg 9, SC_MSAREGS, a0, t0
++ restore_sc_msareg 10, SC_MSAREGS, a0, t0
++ restore_sc_msareg 11, SC_MSAREGS, a0, t0
++ restore_sc_msareg 12, SC_MSAREGS, a0, t0
++ restore_sc_msareg 13, SC_MSAREGS, a0, t0
++ restore_sc_msareg 14, SC_MSAREGS, a0, t0
++ restore_sc_msareg 15, SC_MSAREGS, a0, t0
++ restore_sc_msareg 16, SC_MSAREGS, a0, t0
++ restore_sc_msareg 17, SC_MSAREGS, a0, t0
++ restore_sc_msareg 18, SC_MSAREGS, a0, t0
++ restore_sc_msareg 19, SC_MSAREGS, a0, t0
++ restore_sc_msareg 20, SC_MSAREGS, a0, t0
++ restore_sc_msareg 21, SC_MSAREGS, a0, t0
++ restore_sc_msareg 22, SC_MSAREGS, a0, t0
++ restore_sc_msareg 23, SC_MSAREGS, a0, t0
++ restore_sc_msareg 24, SC_MSAREGS, a0, t0
++ restore_sc_msareg 25, SC_MSAREGS, a0, t0
++ restore_sc_msareg 26, SC_MSAREGS, a0, t0
++ restore_sc_msareg 27, SC_MSAREGS, a0, t0
++ restore_sc_msareg 28, SC_MSAREGS, a0, t0
++ restore_sc_msareg 29, SC_MSAREGS, a0, t0
++ restore_sc_msareg 30, SC_MSAREGS, a0, t0
++ restore_sc_msareg 31, SC_MSAREGS, a0, t0
++ jr ra
++ li v0, 0
++ END(_restore_msa_context)
++
++#ifdef CONFIG_MIPS32_COMPAT
++
++/*
++ * int _restore_msa_context32(struct sigcontext32 *sc)
++ */
++LEAF(_restore_msa_context32)
++ restore_sc_msareg 0, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 1, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 2, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 3, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 4, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 5, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 6, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 7, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 8, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 9, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 10, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 11, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 12, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 13, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 14, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 15, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 16, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 17, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 18, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 19, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 20, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 21, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 22, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 23, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 24, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 25, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 26, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 27, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 28, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 29, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 30, SC32_MSAREGS, a0, t0
++ restore_sc_msareg 31, SC32_MSAREGS, a0, t0
++ jr ra
++ li v0, 0
++ END(_restore_msa_context32)
++
++#endif /* CONFIG_MIPS32_COMPAT */
++
++#endif /* CONFIG_CPU_HAS_MSA */
++
+ .set reorder
+
+ .type fault@function
+diff -Nur linux-3.15.4/arch/mips/kernel/signal32.c linux-rpi/arch/mips/kernel/signal32.c
+--- linux-3.15.4/arch/mips/kernel/signal32.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kernel/signal32.c 2014-07-07 10:44:58.000000000 +0200
+@@ -30,6 +30,7 @@
+ #include <asm/sim.h>
+ #include <asm/ucontext.h>
+ #include <asm/fpu.h>
++#include <asm/msa.h>
+ #include <asm/war.h>
+ #include <asm/vdso.h>
+ #include <asm/dsp.h>
+@@ -42,6 +43,9 @@
+ extern asmlinkage int _save_fp_context32(struct sigcontext32 __user *sc);
+ extern asmlinkage int _restore_fp_context32(struct sigcontext32 __user *sc);
+
++extern asmlinkage int _save_msa_context32(struct sigcontext32 __user *sc);
++extern asmlinkage int _restore_msa_context32(struct sigcontext32 __user *sc);
++
+ /*
+ * Including <asm/unistd.h> would give use the 64-bit syscall numbers ...
+ */
+@@ -111,19 +115,59 @@
+ }
+
+ /*
++ * These functions will save only the upper 64 bits of the vector registers,
++ * since the lower 64 bits have already been saved as the scalar FP context.
++ */
++static int copy_msa_to_sigcontext32(struct sigcontext32 __user *sc)
++{
++ int i;
++ int err = 0;
++
++ for (i = 0; i < NUM_FPU_REGS; i++) {
++ err |=
++ __put_user(get_fpr64(&current->thread.fpu.fpr[i], 1),
++ &sc->sc_msaregs[i]);
++ }
++ err |= __put_user(current->thread.fpu.msacsr, &sc->sc_msa_csr);
++
++ return err;
++}
++
++static int copy_msa_from_sigcontext32(struct sigcontext32 __user *sc)
++{
++ int i;
++ int err = 0;
++ u64 val;
++
++ for (i = 0; i < NUM_FPU_REGS; i++) {
++ err |= __get_user(val, &sc->sc_msaregs[i]);
++ set_fpr64(&current->thread.fpu.fpr[i], 1, val);
++ }
++ err |= __get_user(current->thread.fpu.msacsr, &sc->sc_msa_csr);
++
++ return err;
++}
++
++/*
+ * sigcontext handlers
+ */
+-static int protected_save_fp_context32(struct sigcontext32 __user *sc)
++static int protected_save_fp_context32(struct sigcontext32 __user *sc,
++ unsigned used_math)
+ {
+ int err;
++ bool save_msa = cpu_has_msa && (used_math & USEDMATH_MSA);
+ while (1) {
+ lock_fpu_owner();
+ if (is_fpu_owner()) {
+ err = save_fp_context32(sc);
++ if (save_msa && !err)
++ err = _save_msa_context32(sc);
+ unlock_fpu_owner();
+ } else {
+ unlock_fpu_owner();
+ err = copy_fp_to_sigcontext32(sc);
++ if (save_msa && !err)
++ err = copy_msa_to_sigcontext32(sc);
+ }
+ if (likely(!err))
+ break;
+@@ -137,17 +181,28 @@
+ return err;
+ }
+
+-static int protected_restore_fp_context32(struct sigcontext32 __user *sc)
++static int protected_restore_fp_context32(struct sigcontext32 __user *sc,
++ unsigned used_math)
+ {
+ int err, tmp __maybe_unused;
++ bool restore_msa = cpu_has_msa && (used_math & USEDMATH_MSA);
+ while (1) {
+ lock_fpu_owner();
+ if (is_fpu_owner()) {
+ err = restore_fp_context32(sc);
++ if (restore_msa && !err) {
++ enable_msa();
++ err = _restore_msa_context32(sc);
++ } else {
++ /* signal handler may have used MSA */
++ disable_msa();
++ }
+ unlock_fpu_owner();
+ } else {
+ unlock_fpu_owner();
+ err = copy_fp_from_sigcontext32(sc);
++ if (restore_msa && !err)
++ err = copy_msa_from_sigcontext32(sc);
+ }
+ if (likely(!err))
+ break;
+@@ -186,7 +241,8 @@
+ err |= __put_user(mflo3(), &sc->sc_lo3);
+ }
+
+- used_math = !!used_math();
++ used_math = used_math() ? USEDMATH_FP : 0;
++ used_math |= thread_msa_context_live() ? USEDMATH_MSA : 0;
+ err |= __put_user(used_math, &sc->sc_used_math);
+
+ if (used_math) {
+@@ -194,20 +250,21 @@
+ * Save FPU state to signal context. Signal handler
+ * will "inherit" current FPU state.
+ */
+- err |= protected_save_fp_context32(sc);
++ err |= protected_save_fp_context32(sc, used_math);
+ }
+ return err;
+ }
+
+ static int
+-check_and_restore_fp_context32(struct sigcontext32 __user *sc)
++check_and_restore_fp_context32(struct sigcontext32 __user *sc,
++ unsigned used_math)
+ {
+ int err, sig;
+
+ err = sig = fpcsr_pending(&sc->sc_fpc_csr);
+ if (err > 0)
+ err = 0;
+- err |= protected_restore_fp_context32(sc);
++ err |= protected_restore_fp_context32(sc, used_math);
+ return err ?: sig;
+ }
+
+@@ -244,9 +301,10 @@
+ if (used_math) {
+ /* restore fpu context if we have used it before */
+ if (!err)
+- err = check_and_restore_fp_context32(sc);
++ err = check_and_restore_fp_context32(sc, used_math);
+ } else {
+- /* signal handler may have used FPU. Give it up. */
++ /* signal handler may have used FPU or MSA. Disable them. */
++ disable_msa();
+ lose_fpu(0);
+ }
+
+diff -Nur linux-3.15.4/arch/mips/kernel/signal.c linux-rpi/arch/mips/kernel/signal.c
+--- linux-3.15.4/arch/mips/kernel/signal.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kernel/signal.c 2014-07-07 10:44:58.000000000 +0200
+@@ -31,6 +31,7 @@
+ #include <linux/bitops.h>
+ #include <asm/cacheflush.h>
+ #include <asm/fpu.h>
++#include <asm/msa.h>
+ #include <asm/sim.h>
+ #include <asm/ucontext.h>
+ #include <asm/cpu-features.h>
+@@ -47,6 +48,9 @@
+ extern asmlinkage int _save_fp_context(struct sigcontext __user *sc);
+ extern asmlinkage int _restore_fp_context(struct sigcontext __user *sc);
+
++extern asmlinkage int _save_msa_context(struct sigcontext __user *sc);
++extern asmlinkage int _restore_msa_context(struct sigcontext __user *sc);
++
+ struct sigframe {
+ u32 sf_ass[4]; /* argument save space for o32 */
+ u32 sf_pad[2]; /* Was: signal trampoline */
+@@ -96,20 +100,60 @@
+ }
+
+ /*
++ * These functions will save only the upper 64 bits of the vector registers,
++ * since the lower 64 bits have already been saved as the scalar FP context.
++ */
++static int copy_msa_to_sigcontext(struct sigcontext __user *sc)
++{
++ int i;
++ int err = 0;
++
++ for (i = 0; i < NUM_FPU_REGS; i++) {
++ err |=
++ __put_user(get_fpr64(&current->thread.fpu.fpr[i], 1),
++ &sc->sc_msaregs[i]);
++ }
++ err |= __put_user(current->thread.fpu.msacsr, &sc->sc_msa_csr);
++
++ return err;
++}
++
++static int copy_msa_from_sigcontext(struct sigcontext __user *sc)
++{
++ int i;
++ int err = 0;
++ u64 val;
++
++ for (i = 0; i < NUM_FPU_REGS; i++) {
++ err |= __get_user(val, &sc->sc_msaregs[i]);
++ set_fpr64(&current->thread.fpu.fpr[i], 1, val);
++ }
++ err |= __get_user(current->thread.fpu.msacsr, &sc->sc_msa_csr);
++
++ return err;
++}
++
++/*
+ * Helper routines
+ */
+-static int protected_save_fp_context(struct sigcontext __user *sc)
++static int protected_save_fp_context(struct sigcontext __user *sc,
++ unsigned used_math)
+ {
+ int err;
++ bool save_msa = cpu_has_msa && (used_math & USEDMATH_MSA);
+ #ifndef CONFIG_EVA
+ while (1) {
+ lock_fpu_owner();
+ if (is_fpu_owner()) {
+ err = save_fp_context(sc);
++ if (save_msa && !err)
++ err = _save_msa_context(sc);
+ unlock_fpu_owner();
+ } else {
+ unlock_fpu_owner();
+ err = copy_fp_to_sigcontext(sc);
++ if (save_msa && !err)
++ err = copy_msa_to_sigcontext(sc);
+ }
+ if (likely(!err))
+ break;
+@@ -125,24 +169,38 @@
+ * EVA does not have FPU EVA instructions so saving fpu context directly
+ * does not work.
+ */
++ disable_msa();
+ lose_fpu(1);
+ err = save_fp_context(sc); /* this might fail */
++ if (save_msa && !err)
++ err = copy_msa_to_sigcontext(sc);
+ #endif
+ return err;
+ }
+
+-static int protected_restore_fp_context(struct sigcontext __user *sc)
++static int protected_restore_fp_context(struct sigcontext __user *sc,
++ unsigned used_math)
+ {
+ int err, tmp __maybe_unused;
++ bool restore_msa = cpu_has_msa && (used_math & USEDMATH_MSA);
+ #ifndef CONFIG_EVA
+ while (1) {
+ lock_fpu_owner();
+ if (is_fpu_owner()) {
+ err = restore_fp_context(sc);
++ if (restore_msa && !err) {
++ enable_msa();
++ err = _restore_msa_context(sc);
++ } else {
++ /* signal handler may have used MSA */
++ disable_msa();
++ }
+ unlock_fpu_owner();
+ } else {
+ unlock_fpu_owner();
+ err = copy_fp_from_sigcontext(sc);
++ if (!err && (used_math & USEDMATH_MSA))
++ err = copy_msa_from_sigcontext(sc);
+ }
+ if (likely(!err))
+ break;
+@@ -158,8 +216,11 @@
+ * EVA does not have FPU EVA instructions so restoring fpu context
+ * directly does not work.
+ */
++ enable_msa();
+ lose_fpu(0);
+ err = restore_fp_context(sc); /* this might fail */
++ if (restore_msa && !err)
++ err = copy_msa_from_sigcontext(sc);
+ #endif
+ return err;
+ }
+@@ -191,7 +252,8 @@
+ err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
+ }
+
+- used_math = !!used_math();
++ used_math = used_math() ? USEDMATH_FP : 0;
++ used_math |= thread_msa_context_live() ? USEDMATH_MSA : 0;
+ err |= __put_user(used_math, &sc->sc_used_math);
+
+ if (used_math) {
+@@ -199,7 +261,7 @@
+ * Save FPU state to signal context. Signal handler
+ * will "inherit" current FPU state.
+ */
+- err |= protected_save_fp_context(sc);
++ err |= protected_save_fp_context(sc, used_math);
+ }
+ return err;
+ }
+@@ -224,14 +286,14 @@
+ }
+
+ static int
+-check_and_restore_fp_context(struct sigcontext __user *sc)
++check_and_restore_fp_context(struct sigcontext __user *sc, unsigned used_math)
+ {
+ int err, sig;
+
+ err = sig = fpcsr_pending(&sc->sc_fpc_csr);
+ if (err > 0)
+ err = 0;
+- err |= protected_restore_fp_context(sc);
++ err |= protected_restore_fp_context(sc, used_math);
+ return err ?: sig;
+ }
+
+@@ -271,9 +333,10 @@
+ if (used_math) {
+ /* restore fpu context if we have used it before */
+ if (!err)
+- err = check_and_restore_fp_context(sc);
++ err = check_and_restore_fp_context(sc, used_math);
+ } else {
+- /* signal handler may have used FPU. Give it up. */
++ /* signal handler may have used FPU or MSA. Disable them. */
++ disable_msa();
+ lose_fpu(0);
+ }
+
+diff -Nur linux-3.15.4/arch/mips/kvm/kvm_mips.c linux-rpi/arch/mips/kvm/kvm_mips.c
+--- linux-3.15.4/arch/mips/kvm/kvm_mips.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/mips/kvm/kvm_mips.c 2014-07-07 10:44:58.000000000 +0200
+@@ -149,7 +149,9 @@
+ if (kvm->arch.guest_pmap[i] != KVM_INVALID_PAGE)
+ kvm_mips_release_pfn_clean(kvm->arch.guest_pmap[i]);
+ }
+- kfree(kvm->arch.guest_pmap);
++
++ if (kvm->arch.guest_pmap)
++ kfree(kvm->arch.guest_pmap);
+
+ kvm_for_each_vcpu(i, vcpu, kvm) {
+ kvm_arch_vcpu_free(vcpu);
+@@ -387,9 +389,12 @@
+
+ kvm_mips_dump_stats(vcpu);
+
+- kfree(vcpu->arch.guest_ebase);
+- kfree(vcpu->arch.kseg0_commpage);
+- kfree(vcpu);
++ if (vcpu->arch.guest_ebase)
++ kfree(vcpu->arch.guest_ebase);
++
++ if (vcpu->arch.kseg0_commpage)
++ kfree(vcpu->arch.kseg0_commpage);
++
+ }
+
+ void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)
+diff -Nur linux-3.15.4/arch/powerpc/include/asm/switch_to.h linux-rpi/arch/powerpc/include/asm/switch_to.h
+--- linux-3.15.4/arch/powerpc/include/asm/switch_to.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/include/asm/switch_to.h 2014-07-07 10:44:59.000000000 +0200
+@@ -84,8 +84,6 @@
+ {
+ #ifdef CONFIG_PPC_BOOK3S_64
+ /* EBB perf events are not inherited, so clear all EBB state. */
+- t->thread.ebbrr = 0;
+- t->thread.ebbhr = 0;
+ t->thread.bescr = 0;
+ t->thread.mmcr2 = 0;
+ t->thread.mmcr0 = 0;
+diff -Nur linux-3.15.4/arch/powerpc/include/asm/systbl.h linux-rpi/arch/powerpc/include/asm/systbl.h
+--- linux-3.15.4/arch/powerpc/include/asm/systbl.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/include/asm/systbl.h 2014-07-07 10:44:59.000000000 +0200
+@@ -190,7 +190,7 @@
+ SYSCALL_SPU(capget)
+ SYSCALL_SPU(capset)
+ COMPAT_SYS(sigaltstack)
+-SYSX_SPU(sys_sendfile64,compat_sys_sendfile,sys_sendfile)
++COMPAT_SYS_SPU(sendfile)
+ SYSCALL(ni_syscall)
+ SYSCALL(ni_syscall)
+ PPC_SYS(vfork)
+diff -Nur linux-3.15.4/arch/powerpc/include/uapi/asm/cputable.h linux-rpi/arch/powerpc/include/uapi/asm/cputable.h
+--- linux-3.15.4/arch/powerpc/include/uapi/asm/cputable.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/include/uapi/asm/cputable.h 2014-04-13 17:32:42.000000000 +0200
+@@ -41,6 +41,5 @@
+ #define PPC_FEATURE2_EBB 0x10000000
+ #define PPC_FEATURE2_ISEL 0x08000000
+ #define PPC_FEATURE2_TAR 0x04000000
+-#define PPC_FEATURE2_VEC_CRYPTO 0x02000000
+
+ #endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */
+diff -Nur linux-3.15.4/arch/powerpc/kernel/cputable.c linux-rpi/arch/powerpc/kernel/cputable.c
+--- linux-3.15.4/arch/powerpc/kernel/cputable.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/kernel/cputable.c 2014-07-07 10:44:59.000000000 +0200
+@@ -109,8 +109,7 @@
+ PPC_FEATURE_PSERIES_PERFMON_COMPAT)
+ #define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \
+ PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \
+- PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \
+- PPC_FEATURE2_VEC_CRYPTO)
++ PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR)
+ #define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\
+ PPC_FEATURE_TRUE_LE | \
+ PPC_FEATURE_HAS_ALTIVEC_COMP)
+diff -Nur linux-3.15.4/arch/powerpc/kernel/legacy_serial.c linux-rpi/arch/powerpc/kernel/legacy_serial.c
+--- linux-3.15.4/arch/powerpc/kernel/legacy_serial.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/kernel/legacy_serial.c 2014-07-07 10:44:59.000000000 +0200
+@@ -48,9 +48,6 @@
+ static unsigned int legacy_serial_count;
+ static int legacy_serial_console = -1;
+
+-static const upf_t legacy_port_flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
+- UPF_SHARE_IRQ | UPF_FIXED_PORT;
+-
+ static unsigned int tsi_serial_in(struct uart_port *p, int offset)
+ {
+ unsigned int tmp;
+@@ -156,6 +153,8 @@
+ {
+ u64 addr;
+ const __be32 *addrp;
++ upf_t flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_SHARE_IRQ
++ | UPF_FIXED_PORT;
+ struct device_node *tsi = of_get_parent(np);
+
+ /* We only support ports that have a clock frequency properly
+@@ -186,11 +185,9 @@
+ * IO port value. It will be fixed up later along with the irq
+ */
+ if (tsi && !strcmp(tsi->type, "tsi-bridge"))
+- return add_legacy_port(np, -1, UPIO_TSI, addr, addr,
+- NO_IRQ, legacy_port_flags, 0);
++ return add_legacy_port(np, -1, UPIO_TSI, addr, addr, NO_IRQ, flags, 0);
+ else
+- return add_legacy_port(np, -1, UPIO_MEM, addr, addr,
+- NO_IRQ, legacy_port_flags, 0);
++ return add_legacy_port(np, -1, UPIO_MEM, addr, addr, NO_IRQ, flags, 0);
+ }
+
+ static int __init add_legacy_isa_port(struct device_node *np,
+@@ -236,7 +233,7 @@
+
+ /* Add port, irq will be dealt with later */
+ return add_legacy_port(np, index, UPIO_PORT, be32_to_cpu(reg[1]),
+- taddr, NO_IRQ, legacy_port_flags, 0);
++ taddr, NO_IRQ, UPF_BOOT_AUTOCONF, 0);
+
+ }
+
+@@ -309,7 +306,7 @@
+ * IO port value. It will be fixed up later along with the irq
+ */
+ return add_legacy_port(np, index, iotype, base, addr, NO_IRQ,
+- legacy_port_flags, np != pci_dev);
++ UPF_BOOT_AUTOCONF, np != pci_dev);
+ }
+ #endif
+
+diff -Nur linux-3.15.4/arch/powerpc/kernel/setup-common.c linux-rpi/arch/powerpc/kernel/setup-common.c
+--- linux-3.15.4/arch/powerpc/kernel/setup-common.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/kernel/setup-common.c 2014-07-07 10:44:59.000000000 +0200
+@@ -459,17 +459,9 @@
+ }
+
+ for (j = 0; j < nthreads && cpu < nr_cpu_ids; j++) {
+- bool avail;
+-
+ DBG(" thread %d -> cpu %d (hard id %d)\n",
+ j, cpu, be32_to_cpu(intserv[j]));
+-
+- avail = of_device_is_available(dn);
+- if (!avail)
+- avail = !of_property_match_string(dn,
+- "enable-method", "spin-table");
+-
+- set_cpu_present(cpu, avail);
++ set_cpu_present(cpu, true);
+ set_hard_smp_processor_id(cpu, be32_to_cpu(intserv[j]));
+ set_cpu_possible(cpu, true);
+ cpu++;
+diff -Nur linux-3.15.4/arch/powerpc/kernel/time.c linux-rpi/arch/powerpc/kernel/time.c
+--- linux-3.15.4/arch/powerpc/kernel/time.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/kernel/time.c 2014-07-07 10:44:59.000000000 +0200
+@@ -551,7 +551,7 @@
+ may_hard_irq_enable();
+
+
+-#if defined(CONFIG_PPC32) && defined(CONFIG_PPC_PMAC)
++#if defined(CONFIG_PPC32) && defined(CONFIG_PMAC)
+ if (atomic_read(&ppc_n_lost_interrupts) != 0)
+ do_IRQ(regs);
+ #endif
+diff -Nur linux-3.15.4/arch/powerpc/lib/sstep.c linux-rpi/arch/powerpc/lib/sstep.c
+--- linux-3.15.4/arch/powerpc/lib/sstep.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/lib/sstep.c 2014-07-07 10:44:59.000000000 +0200
+@@ -1470,7 +1470,7 @@
+ regs->gpr[rd] = byterev_4(val);
+ goto ldst_done;
+
+-#ifdef CONFIG_PPC_FPU
++#ifdef CONFIG_PPC_CPU
+ case 535: /* lfsx */
+ case 567: /* lfsux */
+ if (!(regs->msr & MSR_FP))
+diff -Nur linux-3.15.4/arch/powerpc/mm/hash_utils_64.c linux-rpi/arch/powerpc/mm/hash_utils_64.c
+--- linux-3.15.4/arch/powerpc/mm/hash_utils_64.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/mm/hash_utils_64.c 2014-07-07 10:44:59.000000000 +0200
+@@ -964,22 +964,6 @@
+ trap, vsid, ssize, psize, lpsize, pte);
+ }
+
+-static void check_paca_psize(unsigned long ea, struct mm_struct *mm,
+- int psize, bool user_region)
+-{
+- if (user_region) {
+- if (psize != get_paca_psize(ea)) {
+- get_paca()->context = mm->context;
+- slb_flush_and_rebolt();
+- }
+- } else if (get_paca()->vmalloc_sllp !=
+- mmu_psize_defs[mmu_vmalloc_psize].sllp) {
+- get_paca()->vmalloc_sllp =
+- mmu_psize_defs[mmu_vmalloc_psize].sllp;
+- slb_vmalloc_update();
+- }
+-}
+-
+ /* Result code is:
+ * 0 - handled
+ * 1 - normal page fault
+@@ -1101,8 +1085,6 @@
+ WARN_ON(1);
+ }
+ #endif
+- check_paca_psize(ea, mm, psize, user_region);
+-
+ goto bail;
+ }
+
+@@ -1143,8 +1125,17 @@
+ #endif
+ }
+ }
+-
+- check_paca_psize(ea, mm, psize, user_region);
++ if (user_region) {
++ if (psize != get_paca_psize(ea)) {
++ get_paca()->context = mm->context;
++ slb_flush_and_rebolt();
++ }
++ } else if (get_paca()->vmalloc_sllp !=
++ mmu_psize_defs[mmu_vmalloc_psize].sllp) {
++ get_paca()->vmalloc_sllp =
++ mmu_psize_defs[mmu_vmalloc_psize].sllp;
++ slb_vmalloc_update();
++ }
+ #endif /* CONFIG_PPC_64K_PAGES */
+
+ #ifdef CONFIG_PPC_HAS_HASH_64K
+diff -Nur linux-3.15.4/arch/powerpc/platforms/powernv/opal-sysparam.c linux-rpi/arch/powerpc/platforms/powernv/opal-sysparam.c
+--- linux-3.15.4/arch/powerpc/platforms/powernv/opal-sysparam.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/platforms/powernv/opal-sysparam.c 2014-07-07 10:44:59.000000000 +0200
+@@ -260,10 +260,10 @@
+ attr[i].kobj_attr.attr.mode = S_IRUGO;
+ break;
+ case OPAL_SYSPARAM_WRITE:
+- attr[i].kobj_attr.attr.mode = S_IWUSR;
++ attr[i].kobj_attr.attr.mode = S_IWUGO;
+ break;
+ case OPAL_SYSPARAM_RW:
+- attr[i].kobj_attr.attr.mode = S_IRUGO | S_IWUSR;
++ attr[i].kobj_attr.attr.mode = S_IRUGO | S_IWUGO;
+ break;
+ default:
+ break;
+diff -Nur linux-3.15.4/arch/powerpc/platforms/pseries/eeh_pseries.c linux-rpi/arch/powerpc/platforms/pseries/eeh_pseries.c
+--- linux-3.15.4/arch/powerpc/platforms/pseries/eeh_pseries.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/powerpc/platforms/pseries/eeh_pseries.c 2014-07-07 10:44:59.000000000 +0200
+@@ -464,7 +464,6 @@
+ } else {
+ result = EEH_STATE_NOT_SUPPORT;
+ }
+- break;
+ default:
+ result = EEH_STATE_NOT_SUPPORT;
+ }
+diff -Nur linux-3.15.4/arch/x86/include/asm/ptrace.h linux-rpi/arch/x86/include/asm/ptrace.h
+--- linux-3.15.4/arch/x86/include/asm/ptrace.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/arch/x86/include/asm/ptrace.h 2014-07-07 10:44:59.000000000 +0200
+@@ -231,22 +231,6 @@
+
+ #define ARCH_HAS_USER_SINGLE_STEP_INFO
+
+-/*
+- * When hitting ptrace_stop(), we cannot return using SYSRET because
+- * that does not restore the full CPU state, only a minimal set. The
+- * ptracer can change arbitrary register values, which is usually okay
+- * because the usual ptrace stops run off the signal delivery path which
+- * forces IRET; however, ptrace_event() stops happen in arbitrary places
+- * in the kernel and don't force IRET path.
+- *
+- * So force IRET path after a ptrace stop.
+- */
+-#define arch_ptrace_stop_needed(code, info) \
+-({ \
+- set_thread_flag(TIF_NOTIFY_RESUME); \
+- false; \
+-})
+-
+ struct user_desc;
+ extern int do_get_thread_area(struct task_struct *p, int idx,
+ struct user_desc __user *info);
+diff -Nur linux-3.15.4/Documentation/sound/alsa/HD-Audio-Models.txt linux-rpi/Documentation/sound/alsa/HD-Audio-Models.txt
+--- linux-3.15.4/Documentation/sound/alsa/HD-Audio-Models.txt 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/Documentation/sound/alsa/HD-Audio-Models.txt 2014-07-07 10:44:57.000000000 +0200
+@@ -286,11 +286,6 @@
+ hp-inv-led HP with broken BIOS for inverted mute LED
+ auto BIOS setup (default)
+
+-STAC92HD95
+-==========
+- hp-led LED support for HP laptops
+- hp-bass Bass HPF setup for HP Spectre 13
+-
+ STAC9872
+ ========
+ vaio VAIO laptop without SPDIF
+diff -Nur linux-3.15.4/Documentation/SubmittingPatches linux-rpi/Documentation/SubmittingPatches
+--- linux-3.15.4/Documentation/SubmittingPatches 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/Documentation/SubmittingPatches 2014-07-07 10:44:56.000000000 +0200
+@@ -132,20 +132,6 @@
+ platform_set_drvdata(), but left the variable "dev" unused,
+ delete it.
+
+-If your patch fixes a bug in a specific commit, e.g. you found an issue using
+-git-bisect, please use the 'Fixes:' tag with the first 12 characters of the
+-SHA-1 ID, and the one line summary.
+-Example:
+-
+- Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()")
+-
+-The following git-config settings can be used to add a pretty format for
+-outputting the above style in the git log or git show commands
+-
+- [core]
+- abbrev = 12
+- [pretty]
+- fixes = Fixes: %h (\"%s\")
+
+ 3) Separate your changes.
+
+@@ -457,7 +443,7 @@
+ have been included in the discussion
+
+
+-14) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes:
++14) Using Reported-by:, Tested-by:, Reviewed-by: and Suggested-by:
+
+ If this patch fixes a problem reported by somebody else, consider adding a
+ Reported-by: tag to credit the reporter for their contribution. Please
+@@ -512,12 +498,6 @@
+ idea reporters, they will, hopefully, be inspired to help us again in the
+ future.
+
+-A Fixes: tag indicates that the patch fixes an issue in a previous commit. It
+-is used to make it easy to determine where a bug originated, which can help
+-review a bug fix. This tag also assists the stable kernel team in determining
+-which stable kernel versions should receive your fix. This is the preferred
+-method for indicating a bug fixed by the patch. See #2 above for more details.
+-
+
+ 15) The canonical patch format
+
+diff -Nur linux-3.15.4/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt
+--- linux-3.15.4/Documentation/video4linux/bcm2835-v4l2.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/Documentation/video4linux/bcm2835-v4l2.txt 2014-04-13 17:32:39.000000000 +0200
@@ -0,0 +1,60 @@
+
+BCM2835 (aka Raspberry Pi) V4L2 driver
@@ -7675,9 +8678,196 @@ diff -Nur linux-3.15/Documentation/video4linux/bcm2835-v4l2.txt linux-rpi/Docume
+List of available formats:
+
+$ v4l2-ctl --list-formats
-diff -Nur linux-3.15/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/broadcom/Kconfig
---- linux-3.15/drivers/char/broadcom/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/char/broadcom/Kconfig 2014-06-11 21:03:22.000000000 +0200
+diff -Nur linux-3.15.4/drivers/block/mtip32xx/mtip32xx.c linux-rpi/drivers/block/mtip32xx/mtip32xx.c
+--- linux-3.15.4/drivers/block/mtip32xx/mtip32xx.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/block/mtip32xx/mtip32xx.c 2014-07-07 10:45:00.000000000 +0200
+@@ -1529,37 +1529,6 @@
+ be16_to_cpus(&buf[i]);
+ }
+
+-static void mtip_set_timeout(struct driver_data *dd,
+- struct host_to_dev_fis *fis,
+- unsigned int *timeout, u8 erasemode)
+-{
+- switch (fis->command) {
+- case ATA_CMD_DOWNLOAD_MICRO:
+- *timeout = 120000; /* 2 minutes */
+- break;
+- case ATA_CMD_SEC_ERASE_UNIT:
+- case 0xFC:
+- if (erasemode)
+- *timeout = ((*(dd->port->identify + 90) * 2) * 60000);
+- else
+- *timeout = ((*(dd->port->identify + 89) * 2) * 60000);
+- break;
+- case ATA_CMD_STANDBYNOW1:
+- *timeout = 120000; /* 2 minutes */
+- break;
+- case 0xF7:
+- case 0xFA:
+- *timeout = 60000; /* 60 seconds */
+- break;
+- case ATA_CMD_SMART:
+- *timeout = 15000; /* 15 seconds */
+- break;
+- default:
+- *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS;
+- break;
+- }
+-}
+-
+ /*
+ * Request the device identity information.
+ *
+@@ -1675,7 +1644,6 @@
+ int rv;
+ struct host_to_dev_fis fis;
+ unsigned long start;
+- unsigned int timeout;
+
+ /* Build the FIS. */
+ memset(&fis, 0, sizeof(struct host_to_dev_fis));
+@@ -1683,8 +1651,6 @@
+ fis.opts = 1 << 7;
+ fis.command = ATA_CMD_STANDBYNOW1;
+
+- mtip_set_timeout(port->dd, &fis, &timeout, 0);
+-
+ start = jiffies;
+ rv = mtip_exec_internal_command(port,
+ &fis,
+@@ -1693,7 +1659,7 @@
+ 0,
+ 0,
+ GFP_ATOMIC,
+- timeout);
++ 15000);
+ dbg_printk(MTIP_DRV_NAME "Time taken to complete standby cmd: %d ms\n",
+ jiffies_to_msecs(jiffies - start));
+ if (rv)
+@@ -2236,6 +2202,36 @@
+ }
+ return rv;
+ }
++static void mtip_set_timeout(struct driver_data *dd,
++ struct host_to_dev_fis *fis,
++ unsigned int *timeout, u8 erasemode)
++{
++ switch (fis->command) {
++ case ATA_CMD_DOWNLOAD_MICRO:
++ *timeout = 120000; /* 2 minutes */
++ break;
++ case ATA_CMD_SEC_ERASE_UNIT:
++ case 0xFC:
++ if (erasemode)
++ *timeout = ((*(dd->port->identify + 90) * 2) * 60000);
++ else
++ *timeout = ((*(dd->port->identify + 89) * 2) * 60000);
++ break;
++ case ATA_CMD_STANDBYNOW1:
++ *timeout = 120000; /* 2 minutes */
++ break;
++ case 0xF7:
++ case 0xFA:
++ *timeout = 60000; /* 60 seconds */
++ break;
++ case ATA_CMD_SMART:
++ *timeout = 15000; /* 15 seconds */
++ break;
++ default:
++ *timeout = MTIP_IOCTL_COMMAND_TIMEOUT_MS;
++ break;
++ }
++}
+
+ /*
+ * Executes a taskfile
+@@ -4483,57 +4479,6 @@
+ static DEFINE_HANDLER(6);
+ static DEFINE_HANDLER(7);
+
+-static void mtip_disable_link_opts(struct driver_data *dd, struct pci_dev *pdev)
+-{
+- int pos;
+- unsigned short pcie_dev_ctrl;
+-
+- pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
+- if (pos) {
+- pci_read_config_word(pdev,
+- pos + PCI_EXP_DEVCTL,
+- &pcie_dev_ctrl);
+- if (pcie_dev_ctrl & (1 << 11) ||
+- pcie_dev_ctrl & (1 << 4)) {
+- dev_info(&dd->pdev->dev,
+- "Disabling ERO/No-Snoop on bridge device %04x:%04x\n",
+- pdev->vendor, pdev->device);
+- pcie_dev_ctrl &= ~(PCI_EXP_DEVCTL_NOSNOOP_EN |
+- PCI_EXP_DEVCTL_RELAX_EN);
+- pci_write_config_word(pdev,
+- pos + PCI_EXP_DEVCTL,
+- pcie_dev_ctrl);
+- }
+- }
+-}
+-
+-static void mtip_fix_ero_nosnoop(struct driver_data *dd, struct pci_dev *pdev)
+-{
+- /*
+- * This workaround is specific to AMD/ATI chipset with a PCI upstream
+- * device with device id 0x5aXX
+- */
+- if (pdev->bus && pdev->bus->self) {
+- if (pdev->bus->self->vendor == PCI_VENDOR_ID_ATI &&
+- ((pdev->bus->self->device & 0xff00) == 0x5a00)) {
+- mtip_disable_link_opts(dd, pdev->bus->self);
+- } else {
+- /* Check further up the topology */
+- struct pci_dev *parent_dev = pdev->bus->self;
+- if (parent_dev->bus &&
+- parent_dev->bus->parent &&
+- parent_dev->bus->parent->self &&
+- parent_dev->bus->parent->self->vendor ==
+- PCI_VENDOR_ID_ATI &&
+- (parent_dev->bus->parent->self->device &
+- 0xff00) == 0x5a00) {
+- mtip_disable_link_opts(dd,
+- parent_dev->bus->parent->self);
+- }
+- }
+- }
+-}
+-
+ /*
+ * Called for each supported PCI device detected.
+ *
+@@ -4685,8 +4630,6 @@
+ goto msi_initialize_err;
+ }
+
+- mtip_fix_ero_nosnoop(dd, pdev);
+-
+ /* Initialize the block layer. */
+ rv = mtip_block_initialize(dd);
+ if (rv < 0) {
+@@ -4992,13 +4935,13 @@
+ */
+ static void __exit mtip_exit(void)
+ {
++ debugfs_remove_recursive(dfs_parent);
++
+ /* Release the allocated major block device number. */
+ unregister_blkdev(mtip_major, MTIP_DRV_NAME);
+
+ /* Unregister the PCI driver. */
+ pci_unregister_driver(&mtip_pci_driver);
+-
+- debugfs_remove_recursive(dfs_parent);
+ }
+
+ MODULE_AUTHOR("Micron Technology, Inc");
+diff -Nur linux-3.15.4/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/broadcom/Kconfig
+--- linux-3.15.4/drivers/char/broadcom/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/char/broadcom/Kconfig 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1,16 @@
+#
+# Broadcom char driver config
@@ -7695,14 +8885,14 @@ diff -Nur linux-3.15/drivers/char/broadcom/Kconfig linux-rpi/drivers/char/broadc
+ help
+ Helper for videocore CMA access.
+
-diff -Nur linux-3.15/drivers/char/broadcom/Makefile linux-rpi/drivers/char/broadcom/Makefile
---- linux-3.15/drivers/char/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/char/broadcom/Makefile 2014-06-11 21:03:22.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/broadcom/Makefile linux-rpi/drivers/char/broadcom/Makefile
+--- linux-3.15.4/drivers/char/broadcom/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/char/broadcom/Makefile 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1 @@
+obj-$(CONFIG_BCM_VC_CMA) += vc_cma/
-diff -Nur linux-3.15/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/char/broadcom/vc_cma/Makefile
---- linux-3.15/drivers/char/broadcom/vc_cma/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/char/broadcom/vc_cma/Makefile 2014-06-11 21:03:22.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/char/broadcom/vc_cma/Makefile
+--- linux-3.15.4/drivers/char/broadcom/vc_cma/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/char/broadcom/vc_cma/Makefile 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1,14 @@
+ccflags-y += -Wall -Wstrict-prototypes -Wno-trigraphs
+ccflags-y += -Werror
@@ -7718,9 +8908,9 @@ diff -Nur linux-3.15/drivers/char/broadcom/vc_cma/Makefile linux-rpi/drivers/cha
+obj-$(CONFIG_BCM_VC_CMA) += vc-cma.o
+
+vc-cma-objs := vc_cma.o
-diff -Nur linux-3.15/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c
---- linux-3.15/drivers/char/broadcom/vc_cma/vc_cma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c 2014-06-11 21:03:22.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c
+--- linux-3.15.4/drivers/char/broadcom/vc_cma/vc_cma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/char/broadcom/vc_cma/vc_cma.c 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1,1143 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -8865,9 +10055,9 @@ diff -Nur linux-3.15/drivers/char/broadcom/vc_cma/vc_cma.c linux-rpi/drivers/cha
+module_exit(vc_cma_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
-diff -Nur linux-3.15/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/char/hw_random/bcm2708-rng.c
---- linux-3.15/drivers/char/hw_random/bcm2708-rng.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/char/hw_random/bcm2708-rng.c 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/char/hw_random/bcm2708-rng.c
+--- linux-3.15.4/drivers/char/hw_random/bcm2708-rng.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/char/hw_random/bcm2708-rng.c 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -8987,9 +10177,9 @@ diff -Nur linux-3.15/drivers/char/hw_random/bcm2708-rng.c linux-rpi/drivers/char
+
+MODULE_DESCRIPTION("BCM2708 H/W Random Number Generator (RNG) driver");
+MODULE_LICENSE("GPL and additional rights");
-diff -Nur linux-3.15/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw_random/Kconfig
---- linux-3.15/drivers/char/hw_random/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/char/hw_random/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw_random/Kconfig
+--- linux-3.15.4/drivers/char/hw_random/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/char/hw_random/Kconfig 2014-07-07 10:45:00.000000000 +0200
@@ -341,6 +341,17 @@
If unsure, say Y.
@@ -9008,18 +10198,18 @@ diff -Nur linux-3.15/drivers/char/hw_random/Kconfig linux-rpi/drivers/char/hw_ra
config HW_RANDOM_MSM
tristate "Qualcomm SoCs Random Number Generator support"
depends on HW_RANDOM && ARCH_QCOM
-diff -Nur linux-3.15/drivers/char/hw_random/Makefile linux-rpi/drivers/char/hw_random/Makefile
---- linux-3.15/drivers/char/hw_random/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/char/hw_random/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/hw_random/Makefile linux-rpi/drivers/char/hw_random/Makefile
+--- linux-3.15.4/drivers/char/hw_random/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/char/hw_random/Makefile 2014-07-07 10:45:00.000000000 +0200
@@ -29,4 +29,5 @@
obj-$(CONFIG_HW_RANDOM_EXYNOS) += exynos-rng.o
obj-$(CONFIG_HW_RANDOM_TPM) += tpm-rng.o
obj-$(CONFIG_HW_RANDOM_BCM2835) += bcm2835-rng.o
+obj-$(CONFIG_HW_RANDOM_BCM2708) += bcm2708-rng.o
obj-$(CONFIG_HW_RANDOM_MSM) += msm-rng.o
-diff -Nur linux-3.15/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig
---- linux-3.15/drivers/char/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/char/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig
+--- linux-3.15.4/drivers/char/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/char/Kconfig 2014-07-07 10:45:00.000000000 +0200
@@ -581,6 +581,8 @@
source "drivers/s390/char/Kconfig"
@@ -9029,18 +10219,18 @@ diff -Nur linux-3.15/drivers/char/Kconfig linux-rpi/drivers/char/Kconfig
config MSM_SMD_PKT
bool "Enable device interface for some SMD packet ports"
default n
-diff -Nur linux-3.15/drivers/char/Makefile linux-rpi/drivers/char/Makefile
---- linux-3.15/drivers/char/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/char/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/char/Makefile linux-rpi/drivers/char/Makefile
+--- linux-3.15.4/drivers/char/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/char/Makefile 2014-07-07 10:45:00.000000000 +0200
@@ -61,3 +61,5 @@
js-rtc-y = rtc.o
obj-$(CONFIG_TILE_SROM) += tile-srom.o
+
+obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
-diff -Nur linux-3.15/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c
---- linux-3.15/drivers/cpufreq/bcm2835-cpufreq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c 2014-06-11 21:03:22.000000000 +0200
+diff -Nur linux-3.15.4/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c
+--- linux-3.15.4/drivers/cpufreq/bcm2835-cpufreq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/cpufreq/bcm2835-cpufreq.c 2014-07-07 10:45:00.000000000 +0200
@@ -0,0 +1,239 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -9281,9 +10471,46 @@ diff -Nur linux-3.15/drivers/cpufreq/bcm2835-cpufreq.c linux-rpi/drivers/cpufreq
+
+module_init(bcm2835_cpufreq_module_init);
+module_exit(bcm2835_cpufreq_module_exit);
-diff -Nur linux-3.15/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kconfig.arm
---- linux-3.15/drivers/cpufreq/Kconfig.arm 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/cpufreq/Kconfig.arm 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/cpufreq/cpufreq.c linux-rpi/drivers/cpufreq/cpufreq.c
+--- linux-3.15.4/drivers/cpufreq/cpufreq.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/cpufreq/cpufreq.c 2014-07-07 10:45:00.000000000 +0200
+@@ -2166,8 +2166,10 @@
+ struct cpufreq_policy new_policy;
+ int ret;
+
+- if (!policy)
+- return -ENODEV;
++ if (!policy) {
++ ret = -ENODEV;
++ goto no_policy;
++ }
+
+ down_write(&policy->rwsem);
+
+@@ -2186,7 +2188,7 @@
+ new_policy.cur = cpufreq_driver->get(cpu);
+ if (WARN_ON(!new_policy.cur)) {
+ ret = -EIO;
+- goto unlock;
++ goto no_policy;
+ }
+
+ if (!policy->cur) {
+@@ -2201,10 +2203,10 @@
+
+ ret = cpufreq_set_policy(policy, &new_policy);
+
+-unlock:
+ up_write(&policy->rwsem);
+
+ cpufreq_cpu_put(policy);
++no_policy:
+ return ret;
+ }
+ EXPORT_SYMBOL(cpufreq_update_policy);
+diff -Nur linux-3.15.4/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kconfig.arm
+--- linux-3.15.4/drivers/cpufreq/Kconfig.arm 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/cpufreq/Kconfig.arm 2014-07-07 10:45:00.000000000 +0200
@@ -240,6 +240,14 @@
help
This adds the CPUFreq driver support for SPEAr SOCs.
@@ -9299,9 +10526,9 @@ diff -Nur linux-3.15/drivers/cpufreq/Kconfig.arm linux-rpi/drivers/cpufreq/Kconf
config ARM_TEGRA_CPUFREQ
bool "TEGRA CPUFreq support"
depends on ARCH_TEGRA
-diff -Nur linux-3.15/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makefile
---- linux-3.15/drivers/cpufreq/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/cpufreq/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makefile
+--- linux-3.15.4/drivers/cpufreq/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/cpufreq/Makefile 2014-07-07 10:45:00.000000000 +0200
@@ -73,6 +73,7 @@
obj-$(CONFIG_ARM_SA1100_CPUFREQ) += sa1100-cpufreq.o
obj-$(CONFIG_ARM_SA1110_CPUFREQ) += sa1110-cpufreq.o
@@ -9310,9 +10537,35 @@ diff -Nur linux-3.15/drivers/cpufreq/Makefile linux-rpi/drivers/cpufreq/Makefile
obj-$(CONFIG_ARM_TEGRA_CPUFREQ) += tegra-cpufreq.o
obj-$(CONFIG_ARM_VEXPRESS_SPC_CPUFREQ) += vexpress-spc-cpufreq.o
-diff -Nur linux-3.15/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bcm2708-dmaengine.c
---- linux-3.15/drivers/dma/bcm2708-dmaengine.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/dma/bcm2708-dmaengine.c 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/cpufreq/ppc-corenet-cpufreq.c linux-rpi/drivers/cpufreq/ppc-corenet-cpufreq.c
+--- linux-3.15.4/drivers/cpufreq/ppc-corenet-cpufreq.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/cpufreq/ppc-corenet-cpufreq.c 2014-07-07 10:45:01.000000000 +0200
+@@ -138,7 +138,7 @@
+ struct cpufreq_frequency_table *table;
+ struct cpu_data *data;
+ unsigned int cpu = policy->cpu;
+- u64 u64temp;
++ u64 transition_latency_hz;
+
+ np = of_get_cpu_node(cpu, NULL);
+ if (!np)
+@@ -206,10 +206,9 @@
+ for_each_cpu(i, per_cpu(cpu_mask, cpu))
+ per_cpu(cpu_data, i) = data;
+
+- /* Minimum transition latency is 12 platform clocks */
+- u64temp = 12ULL * NSEC_PER_SEC;
+- do_div(u64temp, fsl_get_sys_freq());
+- policy->cpuinfo.transition_latency = u64temp + 1;
++ transition_latency_hz = 12ULL * NSEC_PER_SEC;
++ policy->cpuinfo.transition_latency =
++ do_div(transition_latency_hz, fsl_get_sys_freq());
+
+ of_node_put(np);
+
+diff -Nur linux-3.15.4/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bcm2708-dmaengine.c
+--- linux-3.15.4/drivers/dma/bcm2708-dmaengine.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/dma/bcm2708-dmaengine.c 2014-07-07 10:45:01.000000000 +0200
@@ -0,0 +1,588 @@
+/*
+ * BCM2708 DMA engine support
@@ -9902,9 +11155,9 @@ diff -Nur linux-3.15/drivers/dma/bcm2708-dmaengine.c linux-rpi/drivers/dma/bcm27
+MODULE_DESCRIPTION("BCM2708 DMA engine driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig
---- linux-3.15/drivers/dma/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/dma/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig
+--- linux-3.15.4/drivers/dma/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/dma/Kconfig 2014-07-07 10:45:01.000000000 +0200
@@ -312,6 +312,12 @@
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
@@ -9918,9 +11171,9 @@ diff -Nur linux-3.15/drivers/dma/Kconfig linux-rpi/drivers/dma/Kconfig
config TI_CPPI41
tristate "AM33xx CPPI41 DMA support"
depends on ARCH_OMAP
-diff -Nur linux-3.15/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile
---- linux-3.15/drivers/dma/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/dma/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile
+--- linux-3.15.4/drivers/dma/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/dma/Makefile 2014-07-07 10:45:01.000000000 +0200
@@ -39,6 +39,7 @@
obj-$(CONFIG_MMP_TDMA) += mmp_tdma.o
obj-$(CONFIG_DMA_OMAP) += omap-dma.o
@@ -9929,9 +11182,9 @@ diff -Nur linux-3.15/drivers/dma/Makefile linux-rpi/drivers/dma/Makefile
obj-$(CONFIG_MMP_PDMA) += mmp_pdma.o
obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o
obj-$(CONFIG_TI_CPPI41) += cppi41.o
-diff -Nur linux-3.15/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bcm2835-hwmon.c
---- linux-3.15/drivers/hwmon/bcm2835-hwmon.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/hwmon/bcm2835-hwmon.c 2014-06-11 21:03:30.000000000 +0200
+diff -Nur linux-3.15.4/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bcm2835-hwmon.c
+--- linux-3.15.4/drivers/hwmon/bcm2835-hwmon.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/hwmon/bcm2835-hwmon.c 2014-04-13 17:32:56.000000000 +0200
@@ -0,0 +1,219 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -10152,9 +11405,9 @@ diff -Nur linux-3.15/drivers/hwmon/bcm2835-hwmon.c linux-rpi/drivers/hwmon/bcm28
+MODULE_DESCRIPTION("HW Monitor driver for bcm2835 chip");
+
+module_platform_driver(bcm2835_hwmon_driver);
-diff -Nur linux-3.15/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig
---- linux-3.15/drivers/hwmon/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/hwmon/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig
+--- linux-3.15.4/drivers/hwmon/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/hwmon/Kconfig 2014-07-07 10:45:09.000000000 +0200
@@ -1602,6 +1602,16 @@
This driver provides support for the Ultra45 workstation environmental
sensors.
@@ -10172,9 +11425,9 @@ diff -Nur linux-3.15/drivers/hwmon/Kconfig linux-rpi/drivers/hwmon/Kconfig
if ACPI
comment "ACPI drivers"
-diff -Nur linux-3.15/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile
---- linux-3.15/drivers/hwmon/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/hwmon/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile
+--- linux-3.15.4/drivers/hwmon/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/hwmon/Makefile 2014-07-07 10:45:09.000000000 +0200
@@ -146,6 +146,7 @@
obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
@@ -10183,9 +11436,9 @@ diff -Nur linux-3.15/drivers/hwmon/Makefile linux-rpi/drivers/hwmon/Makefile
obj-$(CONFIG_PMBUS) += pmbus/
-diff -Nur linux-3.15/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/busses/i2c-bcm2708.c
---- linux-3.15/drivers/i2c/busses/i2c-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/i2c/busses/i2c-bcm2708.c 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/busses/i2c-bcm2708.c
+--- linux-3.15.4/drivers/i2c/busses/i2c-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/i2c/busses/i2c-bcm2708.c 2014-07-07 10:45:09.000000000 +0200
@@ -0,0 +1,448 @@
+/*
+ * Driver for Broadcom BCM2708 BSC Controllers
@@ -10635,9 +11888,9 @@ diff -Nur linux-3.15/drivers/i2c/busses/i2c-bcm2708.c linux-rpi/drivers/i2c/buss
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
-diff -Nur linux-3.15/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/Kconfig
---- linux-3.15/drivers/i2c/busses/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/i2c/busses/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/Kconfig
+--- linux-3.15.4/drivers/i2c/busses/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/i2c/busses/Kconfig 2014-07-07 10:45:09.000000000 +0200
@@ -348,6 +348,25 @@
This support is also available as a module. If so, the module
will be called i2c-bcm2835.
@@ -10664,9 +11917,9 @@ diff -Nur linux-3.15/drivers/i2c/busses/Kconfig linux-rpi/drivers/i2c/busses/Kco
config I2C_BCM_KONA
tristate "BCM Kona I2C adapter"
depends on ARCH_BCM_MOBILE
-diff -Nur linux-3.15/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses/Makefile
---- linux-3.15/drivers/i2c/busses/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/i2c/busses/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses/Makefile
+--- linux-3.15.4/drivers/i2c/busses/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/i2c/busses/Makefile 2014-07-07 10:45:09.000000000 +0200
@@ -32,6 +32,7 @@
obj-$(CONFIG_I2C_AT91) += i2c-at91.o
obj-$(CONFIG_I2C_AU1550) += i2c-au1550.o
@@ -10675,9 +11928,526 @@ diff -Nur linux-3.15/drivers/i2c/busses/Makefile linux-rpi/drivers/i2c/busses/Ma
obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o
obj-$(CONFIG_I2C_CADENCE) += i2c-cadence.o
obj-$(CONFIG_I2C_CBUS_GPIO) += i2c-cbus-gpio.o
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c
---- linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/infiniband/core/user_mad.c linux-rpi/drivers/infiniband/core/user_mad.c
+--- linux-3.15.4/drivers/infiniband/core/user_mad.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/core/user_mad.c 2014-04-13 17:32:56.000000000 +0200
+@@ -98,7 +98,7 @@
+
+ struct ib_umad_device {
+ int start_port, end_port;
+- struct kobject kobj;
++ struct kref ref;
+ struct ib_umad_port port[0];
+ };
+
+@@ -134,18 +134,14 @@
+ static void ib_umad_add_one(struct ib_device *device);
+ static void ib_umad_remove_one(struct ib_device *device);
+
+-static void ib_umad_release_dev(struct kobject *kobj)
++static void ib_umad_release_dev(struct kref *ref)
+ {
+ struct ib_umad_device *dev =
+- container_of(kobj, struct ib_umad_device, kobj);
++ container_of(ref, struct ib_umad_device, ref);
+
+ kfree(dev);
+ }
+
+-static struct kobj_type ib_umad_dev_ktype = {
+- .release = ib_umad_release_dev,
+-};
+-
+ static int hdr_size(struct ib_umad_file *file)
+ {
+ return file->use_pkey_index ? sizeof (struct ib_user_mad_hdr) :
+@@ -784,19 +780,27 @@
+ {
+ struct ib_umad_port *port;
+ struct ib_umad_file *file;
+- int ret = -ENXIO;
++ int ret;
+
+ port = container_of(inode->i_cdev, struct ib_umad_port, cdev);
++ if (port)
++ kref_get(&port->umad_dev->ref);
++ else
++ return -ENXIO;
+
+ mutex_lock(&port->file_mutex);
+
+- if (!port->ib_dev)
++ if (!port->ib_dev) {
++ ret = -ENXIO;
+ goto out;
++ }
+
+- ret = -ENOMEM;
+ file = kzalloc(sizeof *file, GFP_KERNEL);
+- if (!file)
++ if (!file) {
++ kref_put(&port->umad_dev->ref, ib_umad_release_dev);
++ ret = -ENOMEM;
+ goto out;
++ }
+
+ mutex_init(&file->mutex);
+ spin_lock_init(&file->send_lock);
+@@ -810,13 +814,6 @@
+ list_add_tail(&file->port_list, &port->file_list);
+
+ ret = nonseekable_open(inode, filp);
+- if (ret) {
+- list_del(&file->port_list);
+- kfree(file);
+- goto out;
+- }
+-
+- kobject_get(&port->umad_dev->kobj);
+
+ out:
+ mutex_unlock(&port->file_mutex);
+@@ -855,7 +852,7 @@
+ mutex_unlock(&file->port->file_mutex);
+
+ kfree(file);
+- kobject_put(&dev->kobj);
++ kref_put(&dev->ref, ib_umad_release_dev);
+
+ return 0;
+ }
+@@ -883,6 +880,10 @@
+ int ret;
+
+ port = container_of(inode->i_cdev, struct ib_umad_port, sm_cdev);
++ if (port)
++ kref_get(&port->umad_dev->ref);
++ else
++ return -ENXIO;
+
+ if (filp->f_flags & O_NONBLOCK) {
+ if (down_trylock(&port->sm_sem)) {
+@@ -897,27 +898,17 @@
+ }
+
+ ret = ib_modify_port(port->ib_dev, port->port_num, 0, &props);
+- if (ret)
+- goto err_up_sem;
++ if (ret) {
++ up(&port->sm_sem);
++ goto fail;
++ }
+
+ filp->private_data = port;
+
+- ret = nonseekable_open(inode, filp);
+- if (ret)
+- goto err_clr_sm_cap;
+-
+- kobject_get(&port->umad_dev->kobj);
+-
+- return 0;
+-
+-err_clr_sm_cap:
+- swap(props.set_port_cap_mask, props.clr_port_cap_mask);
+- ib_modify_port(port->ib_dev, port->port_num, 0, &props);
+-
+-err_up_sem:
+- up(&port->sm_sem);
++ return nonseekable_open(inode, filp);
+
+ fail:
++ kref_put(&port->umad_dev->ref, ib_umad_release_dev);
+ return ret;
+ }
+
+@@ -936,7 +927,7 @@
+
+ up(&port->sm_sem);
+
+- kobject_put(&port->umad_dev->kobj);
++ kref_put(&port->umad_dev->ref, ib_umad_release_dev);
+
+ return ret;
+ }
+@@ -1004,7 +995,6 @@
+ }
+
+ static int ib_umad_init_port(struct ib_device *device, int port_num,
+- struct ib_umad_device *umad_dev,
+ struct ib_umad_port *port)
+ {
+ int devnum;
+@@ -1037,7 +1027,6 @@
+
+ cdev_init(&port->cdev, &umad_fops);
+ port->cdev.owner = THIS_MODULE;
+- port->cdev.kobj.parent = &umad_dev->kobj;
+ kobject_set_name(&port->cdev.kobj, "umad%d", port->dev_num);
+ if (cdev_add(&port->cdev, base, 1))
+ goto err_cdev;
+@@ -1056,7 +1045,6 @@
+ base += IB_UMAD_MAX_PORTS;
+ cdev_init(&port->sm_cdev, &umad_sm_fops);
+ port->sm_cdev.owner = THIS_MODULE;
+- port->sm_cdev.kobj.parent = &umad_dev->kobj;
+ kobject_set_name(&port->sm_cdev.kobj, "issm%d", port->dev_num);
+ if (cdev_add(&port->sm_cdev, base, 1))
+ goto err_sm_cdev;
+@@ -1150,7 +1138,7 @@
+ if (!umad_dev)
+ return;
+
+- kobject_init(&umad_dev->kobj, &ib_umad_dev_ktype);
++ kref_init(&umad_dev->ref);
+
+ umad_dev->start_port = s;
+ umad_dev->end_port = e;
+@@ -1158,8 +1146,7 @@
+ for (i = s; i <= e; ++i) {
+ umad_dev->port[i - s].umad_dev = umad_dev;
+
+- if (ib_umad_init_port(device, i, umad_dev,
+- &umad_dev->port[i - s]))
++ if (ib_umad_init_port(device, i, &umad_dev->port[i - s]))
+ goto err;
+ }
+
+@@ -1171,7 +1158,7 @@
+ while (--i >= s)
+ ib_umad_kill_port(&umad_dev->port[i - s]);
+
+- kobject_put(&umad_dev->kobj);
++ kref_put(&umad_dev->ref, ib_umad_release_dev);
+ }
+
+ static void ib_umad_remove_one(struct ib_device *device)
+@@ -1185,7 +1172,7 @@
+ for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i)
+ ib_umad_kill_port(&umad_dev->port[i]);
+
+- kobject_put(&umad_dev->kobj);
++ kref_put(&umad_dev->ref, ib_umad_release_dev);
+ }
+
+ static char *umad_devnode(struct device *dev, umode_t *mode)
+diff -Nur linux-3.15.4/drivers/infiniband/hw/cxgb4/cq.c linux-rpi/drivers/infiniband/hw/cxgb4/cq.c
+--- linux-3.15.4/drivers/infiniband/hw/cxgb4/cq.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/cxgb4/cq.c 2014-07-07 10:45:09.000000000 +0200
+@@ -940,6 +940,7 @@
+ if (!mm2)
+ goto err4;
+
++ memset(&uresp, 0, sizeof(uresp));
+ uresp.qid_mask = rhp->rdev.cqmask;
+ uresp.cqid = chp->cq.cqid;
+ uresp.size = chp->cq.size;
+@@ -950,8 +951,7 @@
+ uresp.gts_key = ucontext->key;
+ ucontext->key += PAGE_SIZE;
+ spin_unlock(&ucontext->mmap_lock);
+- ret = ib_copy_to_udata(udata, &uresp,
+- sizeof(uresp) - sizeof(uresp.reserved));
++ ret = ib_copy_to_udata(udata, &uresp, sizeof uresp);
+ if (ret)
+ goto err5;
+
+diff -Nur linux-3.15.4/drivers/infiniband/hw/cxgb4/device.c linux-rpi/drivers/infiniband/hw/cxgb4/device.c
+--- linux-3.15.4/drivers/infiniband/hw/cxgb4/device.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/cxgb4/device.c 2014-07-07 10:45:09.000000000 +0200
+@@ -736,7 +736,6 @@
+ pci_resource_len(devp->rdev.lldi.pdev, 2));
+ if (!devp->rdev.bar2_kva) {
+ pr_err(MOD "Unable to ioremap BAR2\n");
+- ib_dealloc_device(&devp->ibdev);
+ return ERR_PTR(-EINVAL);
+ }
+ } else if (ocqp_supported(infop)) {
+@@ -748,7 +747,6 @@
+ devp->rdev.lldi.vr->ocq.size);
+ if (!devp->rdev.oc_mw_kva) {
+ pr_err(MOD "Unable to ioremap onchip mem\n");
+- ib_dealloc_device(&devp->ibdev);
+ return ERR_PTR(-EINVAL);
+ }
+ }
+diff -Nur linux-3.15.4/drivers/infiniband/hw/cxgb4/provider.c linux-rpi/drivers/infiniband/hw/cxgb4/provider.c
+--- linux-3.15.4/drivers/infiniband/hw/cxgb4/provider.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/cxgb4/provider.c 2014-07-07 10:45:09.000000000 +0200
+@@ -122,7 +122,7 @@
+ INIT_LIST_HEAD(&context->mmaps);
+ spin_lock_init(&context->mmap_lock);
+
+- if (udata->outlen < sizeof(uresp) - sizeof(uresp.reserved)) {
++ if (udata->outlen < sizeof(uresp)) {
+ if (!warned++)
+ pr_err(MOD "Warning - downlevel libcxgb4 (non-fatal), device status page disabled.");
+ rhp->rdev.flags |= T4_STATUS_PAGE_DISABLED;
+@@ -140,8 +140,7 @@
+ context->key += PAGE_SIZE;
+ spin_unlock(&context->mmap_lock);
+
+- ret = ib_copy_to_udata(udata, &uresp,
+- sizeof(uresp) - sizeof(uresp.reserved));
++ ret = ib_copy_to_udata(udata, &uresp, sizeof(uresp));
+ if (ret)
+ goto err_mm;
+
+diff -Nur linux-3.15.4/drivers/infiniband/hw/cxgb4/user.h linux-rpi/drivers/infiniband/hw/cxgb4/user.h
+--- linux-3.15.4/drivers/infiniband/hw/cxgb4/user.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/cxgb4/user.h 2014-07-07 10:45:09.000000000 +0200
+@@ -48,7 +48,6 @@
+ __u32 cqid;
+ __u32 size;
+ __u32 qid_mask;
+- __u32 reserved; /* explicit padding (optional for i386) */
+ };
+
+
+@@ -75,6 +74,5 @@
+ struct c4iw_alloc_ucontext_resp {
+ __u64 status_page_key;
+ __u32 status_page_size;
+- __u32 reserved; /* explicit padding (optional for i386) */
+ };
+ #endif
+diff -Nur linux-3.15.4/drivers/infiniband/hw/ipath/ipath_diag.c linux-rpi/drivers/infiniband/hw/ipath/ipath_diag.c
+--- linux-3.15.4/drivers/infiniband/hw/ipath/ipath_diag.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/ipath/ipath_diag.c 2014-07-07 10:45:09.000000000 +0200
+@@ -346,10 +346,6 @@
+ ret = -EFAULT;
+ goto bail;
+ }
+- dp.len = odp.len;
+- dp.unit = odp.unit;
+- dp.data = odp.data;
+- dp.pbc_wd = 0;
+ } else {
+ ret = -EINVAL;
+ goto bail;
+diff -Nur linux-3.15.4/drivers/infiniband/hw/mlx5/cq.c linux-rpi/drivers/infiniband/hw/mlx5/cq.c
+--- linux-3.15.4/drivers/infiniband/hw/mlx5/cq.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/mlx5/cq.c 2014-07-07 10:45:09.000000000 +0200
+@@ -32,7 +32,6 @@
+
+ #include <linux/kref.h>
+ #include <rdma/ib_umem.h>
+-#include <rdma/ib_user_verbs.h>
+ #include "mlx5_ib.h"
+ #include "user.h"
+
+@@ -603,24 +602,14 @@
+ int *cqe_size, int *index, int *inlen)
+ {
+ struct mlx5_ib_create_cq ucmd;
+- size_t ucmdlen;
+ int page_shift;
+ int npages;
+ int ncont;
+ int err;
+
+- ucmdlen =
+- (udata->inlen - sizeof(struct ib_uverbs_cmd_hdr) <
+- sizeof(ucmd)) ? (sizeof(ucmd) -
+- sizeof(ucmd.reserved)) : sizeof(ucmd);
+-
+- if (ib_copy_from_udata(&ucmd, udata, ucmdlen))
++ if (ib_copy_from_udata(&ucmd, udata, sizeof(ucmd)))
+ return -EFAULT;
+
+- if (ucmdlen == sizeof(ucmd) &&
+- ucmd.reserved != 0)
+- return -EINVAL;
+-
+ if (ucmd.cqe_size != 64 && ucmd.cqe_size != 128)
+ return -EINVAL;
+
+diff -Nur linux-3.15.4/drivers/infiniband/hw/mlx5/srq.c linux-rpi/drivers/infiniband/hw/mlx5/srq.c
+--- linux-3.15.4/drivers/infiniband/hw/mlx5/srq.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/mlx5/srq.c 2014-07-07 10:45:09.000000000 +0200
+@@ -35,7 +35,6 @@
+ #include <linux/mlx5/srq.h>
+ #include <linux/slab.h>
+ #include <rdma/ib_umem.h>
+-#include <rdma/ib_user_verbs.h>
+
+ #include "mlx5_ib.h"
+ #include "user.h"
+@@ -79,27 +78,16 @@
+ {
+ struct mlx5_ib_dev *dev = to_mdev(pd->device);
+ struct mlx5_ib_create_srq ucmd;
+- size_t ucmdlen;
+ int err;
+ int npages;
+ int page_shift;
+ int ncont;
+ u32 offset;
+
+- ucmdlen =
+- (udata->inlen - sizeof(struct ib_uverbs_cmd_hdr) <
+- sizeof(ucmd)) ? (sizeof(ucmd) -
+- sizeof(ucmd.reserved)) : sizeof(ucmd);
+-
+- if (ib_copy_from_udata(&ucmd, udata, ucmdlen)) {
++ if (ib_copy_from_udata(&ucmd, udata, sizeof(ucmd))) {
+ mlx5_ib_dbg(dev, "failed copy udata\n");
+ return -EFAULT;
+ }
+-
+- if (ucmdlen == sizeof(ucmd) &&
+- ucmd.reserved != 0)
+- return -EINVAL;
+-
+ srq->wq_sig = !!(ucmd.flags & MLX5_SRQ_FLAG_SIGNATURE);
+
+ srq->umem = ib_umem_get(pd->uobject->context, ucmd.buf_addr, buf_size,
+diff -Nur linux-3.15.4/drivers/infiniband/hw/mlx5/user.h linux-rpi/drivers/infiniband/hw/mlx5/user.h
+--- linux-3.15.4/drivers/infiniband/hw/mlx5/user.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/mlx5/user.h 2014-07-07 10:45:09.000000000 +0200
+@@ -91,7 +91,6 @@
+ __u64 buf_addr;
+ __u64 db_addr;
+ __u32 cqe_size;
+- __u32 reserved; /* explicit padding (optional on i386) */
+ };
+
+ struct mlx5_ib_create_cq_resp {
+@@ -110,7 +109,6 @@
+ __u64 buf_addr;
+ __u64 db_addr;
+ __u32 flags;
+- __u32 reserved; /* explicit padding (optional on i386) */
+ };
+
+ struct mlx5_ib_create_srq_resp {
+diff -Nur linux-3.15.4/drivers/infiniband/hw/qib/qib_mad.c linux-rpi/drivers/infiniband/hw/qib/qib_mad.c
+--- linux-3.15.4/drivers/infiniband/hw/qib/qib_mad.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/hw/qib/qib_mad.c 2014-07-07 10:45:09.000000000 +0200
+@@ -1028,7 +1028,7 @@
+
+ event.event = IB_EVENT_PKEY_CHANGE;
+ event.device = &dd->verbs_dev.ibdev;
+- event.element.port_num = port;
++ event.element.port_num = 1;
+ ib_dispatch_event(&event);
+ }
+ return 0;
+diff -Nur linux-3.15.4/drivers/infiniband/ulp/srp/ib_srp.c linux-rpi/drivers/infiniband/ulp/srp/ib_srp.c
+--- linux-3.15.4/drivers/infiniband/ulp/srp/ib_srp.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/infiniband/ulp/srp/ib_srp.c 2014-07-07 10:45:09.000000000 +0200
+@@ -1594,12 +1594,6 @@
+ err_iu:
+ srp_put_tx_iu(target, iu, SRP_IU_CMD);
+
+- /*
+- * Avoid that the loops that iterate over the request ring can
+- * encounter a dangling SCSI command pointer.
+- */
+- req->scmnd = NULL;
+-
+ spin_lock_irqsave(&target->lock, flags);
+ list_add(&req->list, &target->free_reqs);
+
+diff -Nur linux-3.15.4/drivers/input/mouse/elantech.c linux-rpi/drivers/input/mouse/elantech.c
+--- linux-3.15.4/drivers/input/mouse/elantech.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/input/mouse/elantech.c 2014-07-07 10:45:09.000000000 +0200
+@@ -473,15 +473,8 @@
+ input_report_key(dev, BTN_TOOL_FINGER, fingers == 1);
+ input_report_key(dev, BTN_TOOL_DOUBLETAP, fingers == 2);
+ input_report_key(dev, BTN_TOOL_TRIPLETAP, fingers == 3);
+-
+- /* For clickpads map both buttons to BTN_LEFT */
+- if (etd->fw_version & 0x001000) {
+- input_report_key(dev, BTN_LEFT, packet[0] & 0x03);
+- } else {
+- input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
+- input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
+- }
+-
++ input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
++ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
+ input_report_abs(dev, ABS_PRESSURE, pres);
+ input_report_abs(dev, ABS_TOOL_WIDTH, width);
+
+@@ -491,17 +484,10 @@
+ static void elantech_input_sync_v4(struct psmouse *psmouse)
+ {
+ struct input_dev *dev = psmouse->dev;
+- struct elantech_data *etd = psmouse->private;
+ unsigned char *packet = psmouse->packet;
+
+- /* For clickpads map both buttons to BTN_LEFT */
+- if (etd->fw_version & 0x001000) {
+- input_report_key(dev, BTN_LEFT, packet[0] & 0x03);
+- } else {
+- input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
+- input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
+- }
+-
++ input_report_key(dev, BTN_LEFT, packet[0] & 0x01);
++ input_report_key(dev, BTN_RIGHT, packet[0] & 0x02);
+ input_mt_report_pointer_emulation(dev, true);
+ input_sync(dev);
+ }
+@@ -849,7 +835,7 @@
+ if (etd->set_hw_resolution)
+ etd->reg_10 = 0x0b;
+ else
+- etd->reg_10 = 0x01;
++ etd->reg_10 = 0x03;
+
+ if (elantech_write_reg(psmouse, 0x10, etd->reg_10))
+ rc = -1;
+@@ -1350,8 +1336,7 @@
+ }
+
+ /*
+- * Some hw_version 3 models go into error state when we try to set
+- * bit 3 and/or bit 1 of r10.
++ * Some hw_version 3 models go into error state when we try to set bit 3 of r10
+ */
+ static const struct dmi_system_id no_hw_res_dmi_table[] = {
+ #if defined(CONFIG_DMI) && defined(CONFIG_X86)
+diff -Nur linux-3.15.4/drivers/input/mouse/synaptics.c linux-rpi/drivers/input/mouse/synaptics.c
+--- linux-3.15.4/drivers/input/mouse/synaptics.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/input/mouse/synaptics.c 2014-07-07 10:45:09.000000000 +0200
+@@ -347,6 +347,15 @@
+ unsigned char resp[3];
+ int i;
+
++ for (i = 0; min_max_pnpid_table[i].pnp_ids; i++)
++ if (matches_pnp_id(psmouse, min_max_pnpid_table[i].pnp_ids)) {
++ priv->x_min = min_max_pnpid_table[i].x_min;
++ priv->x_max = min_max_pnpid_table[i].x_max;
++ priv->y_min = min_max_pnpid_table[i].y_min;
++ priv->y_max = min_max_pnpid_table[i].y_max;
++ return 0;
++ }
++
+ if (SYN_ID_MAJOR(priv->identity) < 4)
+ return 0;
+
+@@ -357,16 +366,6 @@
+ }
+ }
+
+- for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) {
+- if (matches_pnp_id(psmouse, min_max_pnpid_table[i].pnp_ids)) {
+- priv->x_min = min_max_pnpid_table[i].x_min;
+- priv->x_max = min_max_pnpid_table[i].x_max;
+- priv->y_min = min_max_pnpid_table[i].y_min;
+- priv->y_max = min_max_pnpid_table[i].y_max;
+- return 0;
+- }
+- }
+-
+ if (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 5 &&
+ SYN_CAP_MAX_DIMENSIONS(priv->ext_cap_0c)) {
+ if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_MAX_COORDS, resp)) {
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c
+--- linux-3.15.4/drivers/media/platform/bcm2835/bcm2835-camera.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.c 2014-07-07 10:45:10.000000000 +0200
@@ -0,0 +1,1827 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -12506,9 +14276,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.c linux-rpi/d
+
+module_init(bm2835_mmal_init);
+module_exit(bm2835_mmal_exit);
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h
---- linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/bcm2835-camera.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/bcm2835-camera.h 2014-07-07 10:45:10.000000000 +0200
@@ -0,0 +1,126 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -12636,9 +14406,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/bcm2835-camera.h linux-rpi/d
+ (pix_fmt)->pixelformat, (pix_fmt)->bytesperline, \
+ (pix_fmt)->sizeimage, (pix_fmt)->colorspace, (pix_fmt)->priv); \
+}
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/controls.c linux-rpi/drivers/media/platform/bcm2835/controls.c
---- linux-3.15/drivers/media/platform/bcm2835/controls.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/controls.c 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/controls.c linux-rpi/drivers/media/platform/bcm2835/controls.c
+--- linux-3.15.4/drivers/media/platform/bcm2835/controls.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/controls.c 2014-07-07 10:45:10.000000000 +0200
@@ -0,0 +1,1322 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -13962,9 +15732,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/controls.c linux-rpi/drivers
+
+ return 0;
+}
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers/media/platform/bcm2835/Kconfig
---- linux-3.15/drivers/media/platform/bcm2835/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/Kconfig 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers/media/platform/bcm2835/Kconfig
+--- linux-3.15.4/drivers/media/platform/bcm2835/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/Kconfig 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,25 @@
+# Broadcom VideoCore IV v4l2 camera support
+
@@ -13991,18 +15761,18 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/Kconfig linux-rpi/drivers/me
+
+
+endif # VIDEO_BM2835
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/Makefile linux-rpi/drivers/media/platform/bcm2835/Makefile
---- linux-3.15/drivers/media/platform/bcm2835/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/Makefile 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/Makefile linux-rpi/drivers/media/platform/bcm2835/Makefile
+--- linux-3.15.4/drivers/media/platform/bcm2835/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/Makefile 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,5 @@
+bcm2835-v4l2-objs := bcm2835-camera.o controls.o mmal-vchiq.o
+
+obj-$(CONFIG_VIDEO_BCM2835_MMAL) += bcm2835-v4l2.o
+
+ccflags-$(CONFIG_VIDEO_BCM2835) += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-common.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-common.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-common.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-common.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,53 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14057,9 +15827,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-common.h linux-rpi/driv
+ u32 v;
+};
+
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-encodings.h linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-encodings.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-encodings.h linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-encodings.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-encodings.h 2014-07-07 10:45:10.000000000 +0200
@@ -0,0 +1,127 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14188,9 +15958,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-encodings.h linux-rpi/d
+/* @} MmalColorSpace List */
+
+#endif /* MMAL_ENCODINGS_H */
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-msg-common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-common.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-common.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,50 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14242,9 +16012,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-common.h linux-rpi/
+};
+
+#endif /* MMAL_MSG_COMMON_H */
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-format.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-msg-format.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-format.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-format.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-format.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,81 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14327,9 +16097,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-format.h linux-rpi/
+};
+
+#endif /* MMAL_MSG_FORMAT_H */
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-msg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,404 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14735,9 +16505,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg.h linux-rpi/drivers
+ u8 payload[MMAL_MSG_MAX_PAYLOAD];
+ } u;
+};
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-msg-port.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-msg-port.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-msg-port.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,107 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -14846,9 +16616,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-msg-port.h linux-rpi/dr
+ */
+
+};
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-parameters.h linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-parameters.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-parameters.h linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-parameters.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-parameters.h 2014-07-07 10:45:10.000000000 +0200
@@ -0,0 +1,656 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -15506,9 +17276,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-parameters.h linux-rpi/
+ u32 num_effect_params;
+ u32 effect_parameter[MMAL_MAX_IMAGEFX_PARAMETERS];
+};
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c
---- linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-vchiq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.c 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,1916 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -17426,9 +19196,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.c linux-rpi/drive
+ kfree(instance);
+ return -ENODEV;
+}
-diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h
---- linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h 2014-06-11 21:03:33.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h
+--- linux-3.15.4/drivers/media/platform/bcm2835/mmal-vchiq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/media/platform/bcm2835/mmal-vchiq.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,178 @@
+/*
+ * Broadcom BM2835 V4L2 driver
@@ -17608,9 +19378,9 @@ diff -Nur linux-3.15/drivers/media/platform/bcm2835/mmal-vchiq.h linux-rpi/drive
+ struct mmal_buffer *buf);
+
+#endif /* MMAL_VCHIQ_H */
-diff -Nur linux-3.15/drivers/media/platform/Kconfig linux-rpi/drivers/media/platform/Kconfig
---- linux-3.15/drivers/media/platform/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/media/platform/Kconfig 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/Kconfig linux-rpi/drivers/media/platform/Kconfig
+--- linux-3.15.4/drivers/media/platform/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/media/platform/Kconfig 2014-07-07 10:45:10.000000000 +0200
@@ -118,6 +118,7 @@
source "drivers/media/platform/soc_camera/Kconfig"
source "drivers/media/platform/exynos4-is/Kconfig"
@@ -17619,9 +19389,9 @@ diff -Nur linux-3.15/drivers/media/platform/Kconfig linux-rpi/drivers/media/plat
endif # V4L_PLATFORM_DRIVERS
-diff -Nur linux-3.15/drivers/media/platform/Makefile linux-rpi/drivers/media/platform/Makefile
---- linux-3.15/drivers/media/platform/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/media/platform/Makefile 2014-06-11 21:05:19.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/platform/Makefile linux-rpi/drivers/media/platform/Makefile
+--- linux-3.15.4/drivers/media/platform/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/media/platform/Makefile 2014-07-07 10:45:10.000000000 +0200
@@ -51,4 +51,6 @@
obj-$(CONFIG_ARCH_OMAP) += omap/
@@ -17629,9 +19399,9 @@ diff -Nur linux-3.15/drivers/media/platform/Makefile linux-rpi/drivers/media/pla
+obj-$(CONFIG_VIDEO_BCM2835) += bcm2835/
+
ccflags-y += -I$(srctree)/drivers/media/i2c
-diff -Nur linux-3.15/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
---- linux-3.15/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+--- linux-3.15.4/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/media/usb/dvb-usb-v2/rtl28xxu.c 2014-07-07 10:45:11.000000000 +0200
@@ -1531,6 +1531,10 @@
&rtl2832u_props, "Compro VideoMate U620F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
@@ -17643,9 +19413,9 @@ diff -Nur linux-3.15/drivers/media/usb/dvb-usb-v2/rtl28xxu.c linux-rpi/drivers/m
{ DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a03,
&rtl2832u_props, "Leadtek WinFast DTV Dongle mini", NULL) },
{ DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A,
-diff -Nur linux-3.15/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig
---- linux-3.15/drivers/misc/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/misc/Kconfig 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig
+--- linux-3.15.4/drivers/misc/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/misc/Kconfig 2014-07-07 10:45:11.000000000 +0200
@@ -524,6 +524,7 @@
source "drivers/misc/altera-stapl/Kconfig"
source "drivers/misc/mei/Kconfig"
@@ -17654,9 +19424,9 @@ diff -Nur linux-3.15/drivers/misc/Kconfig linux-rpi/drivers/misc/Kconfig
source "drivers/misc/mic/Kconfig"
source "drivers/misc/genwqe/Kconfig"
source "drivers/misc/echo/Kconfig"
-diff -Nur linux-3.15/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile
---- linux-3.15/drivers/misc/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/misc/Makefile 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile
+--- linux-3.15.4/drivers/misc/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/misc/Makefile 2014-07-07 10:45:11.000000000 +0200
@@ -52,6 +52,7 @@
obj-$(CONFIG_VMWARE_VMCI) += vmw_vmci/
obj-$(CONFIG_LATTICE_ECP3_CONFIG) += lattice-ecp3-config.o
@@ -17665,9 +19435,9 @@ diff -Nur linux-3.15/drivers/misc/Makefile linux-rpi/drivers/misc/Makefile
obj-y += mic/
obj-$(CONFIG_GENWQE) += genwqe/
obj-$(CONFIG_ECHO) += echo/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/connections/connection.h linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/connections/connection.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/connections/connection.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,328 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -17997,9 +19767,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/connections/conne
+#endif /* CONNECTION_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/message_drivers/message.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -18205,9 +19975,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/message_drivers/m
+#endif // _VCHI_MESSAGE_H_
+
+/****************************** End of file ***********************************/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,224 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -18433,9 +20203,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg.h linux-
+#endif /* VCHI_CFG_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -18508,9 +20278,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_cfg_internal
+//#define VCHI_RX_NANOLOCKS
+
+#endif /*VCHI_CFG_INTERNAL_H_*/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_common.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_common.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -18675,9 +20445,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_common.h lin
+
+
+#endif // VCHI_COMMON_H_
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,373 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -19052,9 +20822,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi.h linux-rpi/
+#endif /* VCHI_H_ */
+
+/****************************** End of file **********************************/
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchi/vchi_mh.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -19098,9 +20868,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchi/vchi_mh.h linux-r
+#define VCHI_MEM_HANDLE_INVALID 0
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,562 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -19664,9 +21434,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835_a
+
+ kfree(pagelist);
+}
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -19710,9 +21480,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_2835.h
+#define VCHIQ_PLATFORM_FRAGMENTS_COUNT_IDX 1
+
+#endif /* VCHIQ_2835_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,2814 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22528,9 +24298,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.c
+module_exit(vchiq_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Broadcom Corporation");
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,212 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22744,9 +24514,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_arm.h
+
+
+#endif /* VCHIQ_ARM_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_info.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22785,9 +24555,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_build_
+const char *vchiq_get_build_version(void);
+const char *vchiq_get_build_time(void);
+const char *vchiq_get_build_date(void);
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22849,9 +24619,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_cfg.h
+#endif
+
+#endif /* VCHIQ_CFG_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -22973,9 +24743,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connec
+ mutex_unlock(&g_connected_mutex);
+}
+EXPORT_SYMBOL(vchiq_add_connected_callback);
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connected.h 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -23027,9 +24797,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_connec
+void vchiq_call_connected_callbacks(void);
+
+#endif /* VCHIQ_CONNECTED_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,3825 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -26856,9 +28626,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.c
+ numBytes = 0;
+ }
+}
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,706 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -27566,9 +29336,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_core.h
+ size_t numBytes);
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genversion 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,87 @@
+#!/usr/bin/perl -w
+
@@ -27657,9 +29427,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_genver
+ return vchiq_build_time;
+}
+EOF
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -27701,9 +29471,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq.h linu
+#include "vchiq_util.h"
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -27893,9 +29663,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_if.h l
+ short *peer_version);
+
+#endif /* VCHIQ_IF_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28026,9 +29796,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_ioctl.
+#define VCHIQ_IOC_MAX 15
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_lib.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,457 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28487,9 +30257,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_kern_l
+
+ return status;
+}
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killable.h 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28530,7 +30300,7 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killab
+#include <linux/mutex.h>
+#include <linux/semaphore.h>
+
-+#define SHUTDOWN_SIGS (sigmask(SIGKILL) | sigmask(SIGINT) | sigmask(SIGQUIT))
++#define SHUTDOWN_SIGS (sigmask(SIGKILL) | sigmask(SIGINT) | sigmask(SIGQUIT) | sigmask(SIGTRAP) | sigmask(SIGSTOP) | sigmask(SIGCONT))
+
+static inline int __must_check down_interruptible_killable(struct semaphore *sem)
+{
@@ -28560,9 +30330,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_killab
+#define mutex_lock_interruptible mutex_lock_interruptible_killable
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28635,9 +30405,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_memdrv
+ const VCHIQ_PLATFORM_DATA_T * platform_data);
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pagelist.h 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28697,9 +30467,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_pageli
+} FRAGMENTS_T;
+
+#endif /* VCHIQ_PAGELIST_H */
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,253 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -28954,9 +30724,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_proc.c
+}
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,828 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -29786,9 +31556,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_shim.c
+ return ret;
+}
+EXPORT_SYMBOL(vchi_service_release);
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -29942,9 +31712,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.c
+
+ return header;
+}
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -30027,9 +31797,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_util.h
+extern VCHIQ_HEADER_T *vchiu_queue_pop(VCHIU_QUEUE_T *queue);
+
+#endif
-diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
---- linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c
+--- linux-3.15.4/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_version.c 2014-04-13 17:32:57.000000000 +0200
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2010-2012 Broadcom. All rights reserved.
@@ -30090,9 +31860,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/interface/vchiq_arm/vchiq_versio
+{
+ return vchiq_build_time;
+}
-diff -Nur linux-3.15/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/misc/vc04_services/Kconfig
---- linux-3.15/drivers/misc/vc04_services/Kconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/Kconfig 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/misc/vc04_services/Kconfig
+--- linux-3.15.4/drivers/misc/vc04_services/Kconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/Kconfig 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,9 @@
+config BCM2708_VCHIQ
+ tristate "Videocore VCHIQ"
@@ -30103,9 +31873,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/Kconfig linux-rpi/drivers/misc/v
+ BCM2708 family of products.
+ Defaults to Y when the Broadcom Videocore services
+ are included in the build, N otherwise.
-diff -Nur linux-3.15/drivers/misc/vc04_services/Makefile linux-rpi/drivers/misc/vc04_services/Makefile
---- linux-3.15/drivers/misc/vc04_services/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/misc/vc04_services/Makefile 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/misc/vc04_services/Makefile linux-rpi/drivers/misc/vc04_services/Makefile
+--- linux-3.15.4/drivers/misc/vc04_services/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/misc/vc04_services/Makefile 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,17 @@
+ifeq ($(CONFIG_MACH_BCM2708),y)
+
@@ -30124,9 +31894,9 @@ diff -Nur linux-3.15/drivers/misc/vc04_services/Makefile linux-rpi/drivers/misc/
+ccflags-y += -DVCOS_VERIFY_BKPTS=1 -Idrivers/misc/vc04_services -DUSE_VCHIQ_ARM -D__VCCOREVER__=0x04000000
+
+endif
-diff -Nur linux-3.15/drivers/mmc/card/block.c linux-rpi/drivers/mmc/card/block.c
---- linux-3.15/drivers/mmc/card/block.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/card/block.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/card/block.c linux-rpi/drivers/mmc/card/block.c
+--- linux-3.15.4/drivers/mmc/card/block.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/card/block.c 2014-07-07 10:45:11.000000000 +0200
@@ -1404,7 +1404,7 @@
brq->data.blocks = 1;
}
@@ -30136,9 +31906,9 @@ diff -Nur linux-3.15/drivers/mmc/card/block.c linux-rpi/drivers/mmc/card/block.c
/* SPI multiblock writes terminate using a special
* token, not a STOP_TRANSMISSION request.
*/
-diff -Nur linux-3.15/drivers/mmc/core/sd.c linux-rpi/drivers/mmc/core/sd.c
---- linux-3.15/drivers/mmc/core/sd.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/core/sd.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/core/sd.c linux-rpi/drivers/mmc/core/sd.c
+--- linux-3.15.4/drivers/mmc/core/sd.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/core/sd.c 2014-07-07 10:45:11.000000000 +0200
@@ -15,6 +15,8 @@
#include <linux/slab.h>
#include <linux/stat.h>
@@ -30293,9 +32063,9 @@ diff -Nur linux-3.15/drivers/mmc/core/sd.c linux-rpi/drivers/mmc/core/sd.c
return err;
/*
-diff -Nur linux-3.15/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kconfig
---- linux-3.15/drivers/mmc/host/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/host/Kconfig 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kconfig
+--- linux-3.15.4/drivers/mmc/host/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/host/Kconfig 2014-07-07 10:45:11.000000000 +0200
@@ -272,6 +272,27 @@
If you have a controller with this interface, say Y or M here.
@@ -30324,9 +32094,9 @@ diff -Nur linux-3.15/drivers/mmc/host/Kconfig linux-rpi/drivers/mmc/host/Kconfig
config MMC_SDHCI_BCM2835
tristate "SDHCI platform support for the BCM2835 SD/MMC Controller"
depends on ARCH_BCM2835
-diff -Nur linux-3.15/drivers/mmc/host/Makefile linux-rpi/drivers/mmc/host/Makefile
---- linux-3.15/drivers/mmc/host/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/host/Makefile 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/host/Makefile linux-rpi/drivers/mmc/host/Makefile
+--- linux-3.15.4/drivers/mmc/host/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/host/Makefile 2014-07-07 10:45:11.000000000 +0200
@@ -16,6 +16,7 @@
obj-$(CONFIG_MMC_SDHCI_S3C) += sdhci-s3c.o
obj-$(CONFIG_MMC_SDHCI_SIRF) += sdhci-sirf.o
@@ -30335,9 +32105,9 @@ diff -Nur linux-3.15/drivers/mmc/host/Makefile linux-rpi/drivers/mmc/host/Makefi
obj-$(CONFIG_MMC_WBSD) += wbsd.o
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_OMAP) += omap.o
-diff -Nur linux-3.15/drivers/mmc/host/sdhci-bcm2708.c linux-rpi/drivers/mmc/host/sdhci-bcm2708.c
---- linux-3.15/drivers/mmc/host/sdhci-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/mmc/host/sdhci-bcm2708.c 2014-06-11 21:03:34.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/host/sdhci-bcm2708.c linux-rpi/drivers/mmc/host/sdhci-bcm2708.c
+--- linux-3.15.4/drivers/mmc/host/sdhci-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/mmc/host/sdhci-bcm2708.c 2014-07-07 10:45:11.000000000 +0200
@@ -0,0 +1,1410 @@
+/*
+ * sdhci-bcm2708.c Support for SDHCI device on BCM2708
@@ -31749,9 +33519,9 @@ diff -Nur linux-3.15/drivers/mmc/host/sdhci-bcm2708.c linux-rpi/drivers/mmc/host
+MODULE_PARM_DESC(extra_messages, "Enable more sdcard warning messages");
+
+
-diff -Nur linux-3.15/drivers/mmc/host/sdhci.c linux-rpi/drivers/mmc/host/sdhci.c
---- linux-3.15/drivers/mmc/host/sdhci.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/host/sdhci.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/host/sdhci.c linux-rpi/drivers/mmc/host/sdhci.c
+--- linux-3.15.4/drivers/mmc/host/sdhci.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/host/sdhci.c 2014-07-07 10:45:11.000000000 +0200
@@ -28,6 +28,7 @@
#include <linux/mmc/mmc.h>
#include <linux/mmc/host.h>
@@ -32596,9 +34366,9 @@ diff -Nur linux-3.15/drivers/mmc/host/sdhci.c linux-rpi/drivers/mmc/host/sdhci.c
}
sdhci_disable_card_detection(host);
-diff -Nur linux-3.15/drivers/mmc/host/sdhci.h linux-rpi/drivers/mmc/host/sdhci.h
---- linux-3.15/drivers/mmc/host/sdhci.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/mmc/host/sdhci.h 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/mmc/host/sdhci.h linux-rpi/drivers/mmc/host/sdhci.h
+--- linux-3.15.4/drivers/mmc/host/sdhci.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/mmc/host/sdhci.h 2014-07-07 10:45:11.000000000 +0200
@@ -290,6 +290,18 @@
void (*platform_reset_exit)(struct sdhci_host *host, u8 mask);
int (*platform_execute_tuning)(struct sdhci_host *host, u32 opcode);
@@ -32657,9 +34427,9 @@ diff -Nur linux-3.15/drivers/mmc/host/sdhci.h linux-rpi/drivers/mmc/host/sdhci.h
+
+
#endif /* __SDHCI_HW_H */
-diff -Nur linux-3.15/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/smsc95xx.c
---- linux-3.15/drivers/net/usb/smsc95xx.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/net/usb/smsc95xx.c 2014-06-11 21:05:20.000000000 +0200
+diff -Nur linux-3.15.4/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/smsc95xx.c
+--- linux-3.15.4/drivers/net/usb/smsc95xx.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/net/usb/smsc95xx.c 2014-07-07 10:45:25.000000000 +0200
@@ -59,6 +59,7 @@
#define SUSPEND_SUSPEND3 (0x08)
#define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
@@ -32739,9 +34509,67 @@ diff -Nur linux-3.15/drivers/net/usb/smsc95xx.c linux-rpi/drivers/net/usb/smsc95
/* try reading mac address from EEPROM */
if (smsc95xx_read_eeprom(dev, EEPROM_MAC_OFFSET, ETH_ALEN,
dev->net->dev_addr) == 0) {
-diff -Nur linux-3.15/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig
---- linux-3.15/drivers/spi/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/spi/Kconfig 2014-06-11 21:05:30.000000000 +0200
+diff -Nur linux-3.15.4/drivers/pci/pci.c linux-rpi/drivers/pci/pci.c
+--- linux-3.15.4/drivers/pci/pci.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/pci/pci.c 2014-07-07 10:45:26.000000000 +0200
+@@ -4126,7 +4126,7 @@
+ u16 cmd;
+ int rc;
+
+- WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) && (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
++ WARN_ON((flags & PCI_VGA_STATE_CHANGE_DECODES) & (command_bits & ~(PCI_COMMAND_IO|PCI_COMMAND_MEMORY)));
+
+ /* ARCH specific VGA enables */
+ rc = pci_set_vga_state_arch(dev, decode, command_bits, flags);
+diff -Nur linux-3.15.4/drivers/pci/quirks.c linux-rpi/drivers/pci/quirks.c
+--- linux-3.15.4/drivers/pci/quirks.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/pci/quirks.c 2014-07-07 10:45:26.000000000 +0200
+@@ -2954,7 +2954,6 @@
+ }
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
+-DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
+
+ /*
+ * PCI devices which are on Intel chips can skip the 10ms delay
+diff -Nur linux-3.15.4/drivers/scsi/hpsa.c linux-rpi/drivers/scsi/hpsa.c
+--- linux-3.15.4/drivers/scsi/hpsa.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/scsi/hpsa.c 2014-07-07 10:45:27.000000000 +0200
+@@ -115,15 +115,9 @@
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C3},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C4},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C5},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C6},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C7},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C8},
+ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21C9},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CA},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CB},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CC},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CD},
+- {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSI, 0x103C, 0x21CE},
+ {PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x0076},
+ {PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x0087},
+ {PCI_VENDOR_ID_HP_3PAR, 0x0075, 0x1590, 0x007D},
+@@ -171,15 +165,9 @@
+ {0x21C3103C, "Smart Array", &SA5_access},
+ {0x21C4103C, "Smart Array", &SA5_access},
+ {0x21C5103C, "Smart Array", &SA5_access},
+- {0x21C6103C, "Smart Array", &SA5_access},
+ {0x21C7103C, "Smart Array", &SA5_access},
+ {0x21C8103C, "Smart Array", &SA5_access},
+ {0x21C9103C, "Smart Array", &SA5_access},
+- {0x21CA103C, "Smart Array", &SA5_access},
+- {0x21CB103C, "Smart Array", &SA5_access},
+- {0x21CC103C, "Smart Array", &SA5_access},
+- {0x21CD103C, "Smart Array", &SA5_access},
+- {0x21CE103C, "Smart Array", &SA5_access},
+ {0x00761590, "HP Storage P1224 Array Controller", &SA5_access},
+ {0x00871590, "HP Storage P1224e Array Controller", &SA5_access},
+ {0x007D1590, "HP Storage P1228 Array Controller", &SA5_access},
+diff -Nur linux-3.15.4/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig
+--- linux-3.15.4/drivers/spi/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/spi/Kconfig 2014-07-07 10:45:28.000000000 +0200
@@ -85,6 +85,14 @@
is for the regular SPI controller. Slave mode operation is not also
not supported.
@@ -32757,9 +34585,9 @@ diff -Nur linux-3.15/drivers/spi/Kconfig linux-rpi/drivers/spi/Kconfig
config SPI_BFIN5XX
tristate "SPI controller driver for ADI Blackfin5xx"
depends on BLACKFIN && !BF60x
-diff -Nur linux-3.15/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile
---- linux-3.15/drivers/spi/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/spi/Makefile 2014-06-11 21:05:30.000000000 +0200
+diff -Nur linux-3.15.4/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile
+--- linux-3.15.4/drivers/spi/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/spi/Makefile 2014-07-07 10:45:28.000000000 +0200
@@ -19,6 +19,7 @@
obj-$(CONFIG_SPI_BCM63XX_HSSPI) += spi-bcm63xx-hsspi.o
obj-$(CONFIG_SPI_BFIN5XX) += spi-bfin5xx.o
@@ -32768,9 +34596,9 @@ diff -Nur linux-3.15/drivers/spi/Makefile linux-rpi/drivers/spi/Makefile
obj-$(CONFIG_SPI_BFIN_SPORT) += spi-bfin-sport.o
obj-$(CONFIG_SPI_BITBANG) += spi-bitbang.o
obj-$(CONFIG_SPI_BUTTERFLY) += spi-butterfly.o
-diff -Nur linux-3.15/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2708.c
---- linux-3.15/drivers/spi/spi-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/spi/spi-bcm2708.c 2014-06-11 21:05:30.000000000 +0200
+diff -Nur linux-3.15.4/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2708.c
+--- linux-3.15.4/drivers/spi/spi-bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/spi/spi-bcm2708.c 2014-07-07 10:45:28.000000000 +0200
@@ -0,0 +1,626 @@
+/*
+ * Driver for Broadcom BCM2708 SPI Controllers
@@ -33398,9 +35226,9 @@ diff -Nur linux-3.15/drivers/spi/spi-bcm2708.c linux-rpi/drivers/spi/spi-bcm2708
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
-diff -Nur linux-3.15/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/staging/media/lirc/Kconfig
---- linux-3.15/drivers/staging/media/lirc/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/staging/media/lirc/Kconfig 2014-06-11 21:03:39.000000000 +0200
+diff -Nur linux-3.15.4/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/staging/media/lirc/Kconfig
+--- linux-3.15.4/drivers/staging/media/lirc/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/staging/media/lirc/Kconfig 2014-04-13 17:33:09.000000000 +0200
@@ -38,6 +38,12 @@
help
Driver for Homebrew Parallel Port Receivers
@@ -33414,9 +35242,9 @@ diff -Nur linux-3.15/drivers/staging/media/lirc/Kconfig linux-rpi/drivers/stagin
config LIRC_SASEM
tristate "Sasem USB IR Remote"
depends on LIRC && USB
-diff -Nur linux-3.15/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/staging/media/lirc/lirc_rpi.c
---- linux-3.15/drivers/staging/media/lirc/lirc_rpi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/staging/media/lirc/lirc_rpi.c 2014-06-11 21:05:30.000000000 +0200
+diff -Nur linux-3.15.4/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/staging/media/lirc/lirc_rpi.c
+--- linux-3.15.4/drivers/staging/media/lirc/lirc_rpi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/staging/media/lirc/lirc_rpi.c 2014-06-29 11:34:17.000000000 +0200
@@ -0,0 +1,695 @@
+/*
+ * lirc_rpi.c
@@ -34113,9 +35941,9 @@ diff -Nur linux-3.15/drivers/staging/media/lirc/lirc_rpi.c linux-rpi/drivers/sta
+
+module_param(debug, bool, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug, "Enable debugging messages");
-diff -Nur linux-3.15/drivers/staging/media/lirc/Makefile linux-rpi/drivers/staging/media/lirc/Makefile
---- linux-3.15/drivers/staging/media/lirc/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/staging/media/lirc/Makefile 2014-06-11 21:03:39.000000000 +0200
+diff -Nur linux-3.15.4/drivers/staging/media/lirc/Makefile linux-rpi/drivers/staging/media/lirc/Makefile
+--- linux-3.15.4/drivers/staging/media/lirc/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/staging/media/lirc/Makefile 2014-04-13 17:33:09.000000000 +0200
@@ -7,6 +7,7 @@
obj-$(CONFIG_LIRC_IGORPLUGUSB) += lirc_igorplugusb.o
obj-$(CONFIG_LIRC_IMON) += lirc_imon.o
@@ -34124,9 +35952,88 @@ diff -Nur linux-3.15/drivers/staging/media/lirc/Makefile linux-rpi/drivers/stagi
obj-$(CONFIG_LIRC_SASEM) += lirc_sasem.o
obj-$(CONFIG_LIRC_SERIAL) += lirc_serial.o
obj-$(CONFIG_LIRC_SIR) += lirc_sir.o
-diff -Nur linux-3.15/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/thermal/bcm2835-thermal.c
---- linux-3.15/drivers/thermal/bcm2835-thermal.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/thermal/bcm2835-thermal.c 2014-06-11 21:03:40.000000000 +0200
+diff -Nur linux-3.15.4/drivers/target/iscsi/iscsi_target.c linux-rpi/drivers/target/iscsi/iscsi_target.c
+--- linux-3.15.4/drivers/target/iscsi/iscsi_target.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/target/iscsi/iscsi_target.c 2014-07-07 10:45:41.000000000 +0200
+@@ -1309,7 +1309,7 @@
+ if (cmd->data_direction != DMA_TO_DEVICE) {
+ pr_err("Command ITT: 0x%08x received DataOUT for a"
+ " NON-WRITE command.\n", cmd->init_task_tag);
+- return iscsit_dump_data_payload(conn, payload_length, 1);
++ return iscsit_reject_cmd(cmd, ISCSI_REASON_PROTOCOL_ERROR, buf);
+ }
+ se_cmd = &cmd->se_cmd;
+ iscsit_mod_dataout_timer(cmd);
+diff -Nur linux-3.15.4/drivers/target/iscsi/iscsi_target_login.c linux-rpi/drivers/target/iscsi/iscsi_target_login.c
+--- linux-3.15.4/drivers/target/iscsi/iscsi_target_login.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/target/iscsi/iscsi_target_login.c 2014-07-07 10:45:41.000000000 +0200
+@@ -1216,7 +1216,7 @@
+ static int __iscsi_target_login_thread(struct iscsi_np *np)
+ {
+ u8 *buffer, zero_tsih = 0;
+- int ret = 0, rc;
++ int ret = 0, rc, stop;
+ struct iscsi_conn *conn = NULL;
+ struct iscsi_login *login;
+ struct iscsi_portal_group *tpg = NULL;
+@@ -1230,9 +1230,6 @@
+ if (np->np_thread_state == ISCSI_NP_THREAD_RESET) {
+ np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
+ complete(&np->np_restart_comp);
+- } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) {
+- spin_unlock_bh(&np->np_thread_lock);
+- goto exit;
+ } else {
+ np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
+ }
+@@ -1425,8 +1422,10 @@
+ }
+
+ out:
+- return 1;
+-
++ stop = kthread_should_stop();
++ /* Wait for another socket.. */
++ if (!stop)
++ return 1;
+ exit:
+ iscsi_stop_login_thread_timer(np);
+ spin_lock_bh(&np->np_thread_lock);
+@@ -1443,7 +1442,7 @@
+
+ allow_signal(SIGINT);
+
+- while (1) {
++ while (!kthread_should_stop()) {
+ ret = __iscsi_target_login_thread(np);
+ /*
+ * We break and exit here unless another sock_accept() call
+diff -Nur linux-3.15.4/drivers/target/iscsi/iscsi_target_util.c linux-rpi/drivers/target/iscsi/iscsi_target_util.c
+--- linux-3.15.4/drivers/target/iscsi/iscsi_target_util.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/target/iscsi/iscsi_target_util.c 2014-07-07 10:45:41.000000000 +0200
+@@ -1295,8 +1295,6 @@
+ login->login_failed = 1;
+ iscsit_collect_login_stats(conn, status_class, status_detail);
+
+- memset(&login->rsp[0], 0, ISCSI_HDR_LEN);
+-
+ hdr = (struct iscsi_login_rsp *)&login->rsp[0];
+ hdr->opcode = ISCSI_OP_LOGIN_RSP;
+ hdr->status_class = status_class;
+diff -Nur linux-3.15.4/drivers/target/target_core_device.c linux-rpi/drivers/target/target_core_device.c
+--- linux-3.15.4/drivers/target/target_core_device.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/target/target_core_device.c 2014-07-07 10:45:41.000000000 +0200
+@@ -616,7 +616,6 @@
+ dev->export_count--;
+ spin_unlock(&hba->device_lock);
+
+- lun->lun_sep = NULL;
+ lun->lun_se_dev = NULL;
+ }
+
+diff -Nur linux-3.15.4/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/thermal/bcm2835-thermal.c
+--- linux-3.15.4/drivers/thermal/bcm2835-thermal.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/thermal/bcm2835-thermal.c 2014-04-13 17:33:10.000000000 +0200
@@ -0,0 +1,184 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -34312,9 +36219,9 @@ diff -Nur linux-3.15/drivers/thermal/bcm2835-thermal.c linux-rpi/drivers/thermal
+MODULE_DESCRIPTION("Thermal driver for bcm2835 chip");
+
+module_platform_driver(bcm2835_thermal_driver);
-diff -Nur linux-3.15/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfig
---- linux-3.15/drivers/thermal/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/thermal/Kconfig 2014-06-11 21:05:31.000000000 +0200
+diff -Nur linux-3.15.4/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfig
+--- linux-3.15.4/drivers/thermal/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/thermal/Kconfig 2014-07-07 10:45:41.000000000 +0200
@@ -196,6 +196,12 @@
enforce idle time which results in more package C-state residency. The
user interface is exposed via generic thermal framework.
@@ -34328,9 +36235,9 @@ diff -Nur linux-3.15/drivers/thermal/Kconfig linux-rpi/drivers/thermal/Kconfig
config X86_PKG_TEMP_THERMAL
tristate "X86 package temperature thermal driver"
depends on X86_THERMAL_VECTOR
-diff -Nur linux-3.15/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makefile
---- linux-3.15/drivers/thermal/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/thermal/Makefile 2014-06-11 21:05:31.000000000 +0200
+diff -Nur linux-3.15.4/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makefile
+--- linux-3.15.4/drivers/thermal/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/thermal/Makefile 2014-07-07 10:45:41.000000000 +0200
@@ -28,6 +28,7 @@
obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o
obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
@@ -34339,9 +36246,9 @@ diff -Nur linux-3.15/drivers/thermal/Makefile linux-rpi/drivers/thermal/Makefile
obj-$(CONFIG_X86_PKG_TEMP_THERMAL) += x86_pkg_temp_thermal.o
obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/
obj-$(CONFIG_ACPI_INT3403_THERMAL) += int3403_thermal.o
-diff -Nur linux-3.15/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/serial/amba-pl011.c
---- linux-3.15/drivers/tty/serial/amba-pl011.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/tty/serial/amba-pl011.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/serial/amba-pl011.c
+--- linux-3.15.4/drivers/tty/serial/amba-pl011.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/tty/serial/amba-pl011.c 2014-07-07 10:45:42.000000000 +0200
@@ -84,7 +84,7 @@
static unsigned int get_fifosize_arm(struct amba_device *dev)
@@ -34351,9 +36258,9 @@ diff -Nur linux-3.15/drivers/tty/serial/amba-pl011.c linux-rpi/drivers/tty/seria
}
static struct vendor_data vendor_arm = {
-diff -Nur linux-3.15/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/generic.c
---- linux-3.15/drivers/usb/core/generic.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/core/generic.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/generic.c
+--- linux-3.15.4/drivers/usb/core/generic.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/core/generic.c 2014-07-07 10:45:42.000000000 +0200
@@ -152,6 +152,7 @@
dev_warn(&udev->dev,
"no configuration chosen from %d choice%s\n",
@@ -34362,9 +36269,9 @@ diff -Nur linux-3.15/drivers/usb/core/generic.c linux-rpi/drivers/usb/core/gener
}
return i;
}
-diff -Nur linux-3.15/drivers/usb/core/message.c linux-rpi/drivers/usb/core/message.c
---- linux-3.15/drivers/usb/core/message.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/core/message.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/core/message.c linux-rpi/drivers/usb/core/message.c
+--- linux-3.15.4/drivers/usb/core/message.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/core/message.c 2014-07-07 10:45:42.000000000 +0200
@@ -1891,6 +1891,85 @@
if (cp->string == NULL &&
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
@@ -34451,9 +36358,9 @@ diff -Nur linux-3.15/drivers/usb/core/message.c linux-rpi/drivers/usb/core/messa
/* Now that the interfaces are installed, re-enable LPM. */
usb_unlocked_enable_lpm(dev);
-diff -Nur linux-3.15/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/core/otg_whitelist.h
---- linux-3.15/drivers/usb/core/otg_whitelist.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/core/otg_whitelist.h 2014-06-11 21:03:42.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/core/otg_whitelist.h
+--- linux-3.15.4/drivers/usb/core/otg_whitelist.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/core/otg_whitelist.h 2014-07-07 10:45:42.000000000 +0200
@@ -19,33 +19,82 @@
static struct usb_device_id whitelist_table [] = {
@@ -34669,9 +36576,9 @@ diff -Nur linux-3.15/drivers/usb/core/otg_whitelist.h linux-rpi/drivers/usb/core
#endif
}
-diff -Nur linux-3.15/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/gadget/file_storage.c
---- linux-3.15/drivers/usb/gadget/file_storage.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/gadget/file_storage.c 2014-06-11 21:03:42.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/gadget/file_storage.c
+--- linux-3.15.4/drivers/usb/gadget/file_storage.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/gadget/file_storage.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,3676 @@
+/*
+ * file_storage.c -- File-backed USB Storage Gadget, for USB development
@@ -38349,9 +40256,9 @@ diff -Nur linux-3.15/drivers/usb/gadget/file_storage.c linux-rpi/drivers/usb/gad
+ kref_put(&fsg->ref, fsg_release);
+}
+module_exit(fsg_cleanup);
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/drivers/usb/host/dwc_common_port/changes.txt
---- linux-3.15/drivers/usb/host/dwc_common_port/changes.txt 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/changes.txt 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/drivers/usb/host/dwc_common_port/changes.txt
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/changes.txt 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/changes.txt 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,174 @@
+
+dwc_read_reg32() and friends now take an additional parameter, a pointer to an
@@ -38527,9 +40434,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/changes.txt linux-rpi/driv
+A DWC_LIBMODULE #define has also been added. If this is not defined, then the
+module code in dwc_common_linux.c is not compiled in. This allows linking the
+library code directly into a driver module, instead of as a standalone module.
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
---- linux-3.15/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/doc/doxygen.cfg 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,270 @@
+# Doxyfile 1.4.5
+
@@ -38801,9 +40708,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/doc/doxygen.cfg linux-rpi/
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_cc.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,532 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.c $
@@ -39337,9 +41244,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.c linux-rpi/drivers
+}
+
+#endif /* DWC_CCLIB */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_cc.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_cc.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,224 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_cc.h $
@@ -39565,9 +41472,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_cc.h linux-rpi/drivers
+#endif
+
+#endif /* _DWC_CC_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,1308 @@
+#include "dwc_os.h"
+#include "dwc_list.h"
@@ -40877,9 +42784,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c linux-rp
+{
+ return wq->pending;
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_linux.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1432 @@
+#include <linux/kernel.h>
+#include <linux/init.h>
@@ -42313,9 +44220,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_linux.c linux-r
+MODULE_LICENSE ("GPL");
+
+#endif /* DWC_LIBMODULE */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,1275 @@
+#include "dwc_os.h"
+#include "dwc_list.h"
@@ -43592,9 +45499,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c linux-rp
+{
+ return wq->pending;
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_crypto.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,308 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.c $
@@ -43904,9 +45811,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.c linux-rpi/dri
+}
+
+#endif /* DWC_CRYPTOLIB */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_crypto.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_crypto.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,111 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_crypto.h $
@@ -44019,9 +45926,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_crypto.h linux-rpi/dri
+#endif
+
+#endif /* _DWC_CRYPTO_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_dh.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,291 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.c $
@@ -44314,9 +46221,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.c linux-rpi/drivers
+#endif /* !CONFIG_MACH_IPMATE */
+
+#endif /* DWC_CRYPTOLIB */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_dh.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_dh.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,106 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_dh.h $
@@ -44424,9 +46331,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_dh.h linux-rpi/drivers
+#endif
+
+#endif /* _DWC_DH_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_list.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_list.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_list.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,594 @@
+/* $OpenBSD: queue.h,v 1.26 2004/05/04 16:59:32 grange Exp $ */
+/* $NetBSD: queue.h,v 1.11 1996/05/16 05:17:14 mycroft Exp $ */
@@ -45022,9 +46929,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_list.h linux-rpi/drive
+#endif
+
+#endif /* _DWC_LIST_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_mem.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_mem.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_mem.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,245 @@
+/* Memory Debugging */
+#ifdef DWC_DEBUG_MEMORY
@@ -45271,9 +47178,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_mem.c linux-rpi/driver
+}
+
+#endif /* DWC_DEBUG_MEMORY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_modpow.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,636 @@
+/* Bignum routines adapted from PUTTY sources. PuTTY copyright notice follows.
+ *
@@ -45911,9 +47818,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.c linux-rpi/dri
+#endif /* CONFIG_MACH_IPMATE */
+
+#endif /*DWC_CRYPTOLIB */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_modpow.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_modpow.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,34 @@
+/*
+ * dwc_modpow.h
@@ -45949,9 +47856,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_modpow.h linux-rpi/dri
+#endif
+
+#endif /* _LINUX_BIGNUM_H */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_notifier.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.c 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,319 @@
+#ifdef DWC_NOTIFYLIB
+
@@ -46272,9 +48179,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.c linux-rpi/d
+}
+
+#endif /* DWC_NOTIFYLIB */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_notifier.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_notifier.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,122 @@
+
+#ifndef __DWC_NOTIFIER_H__
@@ -46398,9 +48305,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_notifier.h linux-rpi/d
+#endif
+
+#endif /* __DWC_NOTIFIER_H__ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h
---- linux-3.15/drivers/usb/host/dwc_common_port/dwc_os.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/dwc_os.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/dwc_os.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1262 @@
+/* =========================================================================
+ * $File: //dwh/usb_iip/dev/software/dwc_common_port_2/dwc_os.h $
@@ -47664,9 +49571,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/dwc_os.h linux-rpi/drivers
+#endif
+
+#endif /* _DWC_OS_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile linux-rpi/drivers/usb/host/dwc_common_port/Makefile
---- linux-3.15/drivers/usb/host/dwc_common_port/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile linux-rpi/drivers/usb/host/dwc_common_port/Makefile
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,58 @@
+#
+# Makefile for DWC_common library
@@ -47726,9 +49633,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile linux-rpi/drivers
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd
---- linux-3.15/drivers/usb/host/dwc_common_port/Makefile.fbsd 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile.fbsd 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.fbsd 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,17 @@
+CFLAGS += -I/sys/i386/compile/GENERIC -I/sys/i386/include -I/usr/include
+CFLAGS += -DDWC_FREEBSD
@@ -47747,9 +49654,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile.fbsd linux-rpi/dr
+ dwc_common_fbsd.c dwc_mem.c
+
+.include <bsd.kmod.mk>
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile.linux linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux
---- linux-3.15/drivers/usb/host/dwc_common_port/Makefile.linux 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile.linux linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/Makefile.linux 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/Makefile.linux 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,49 @@
+#
+# Makefile for DWC_common library
@@ -47800,9 +49707,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/Makefile.linux linux-rpi/d
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers/usb/host/dwc_common_port/usb.h
---- linux-3.15/drivers/usb/host/dwc_common_port/usb.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_common_port/usb.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers/usb/host/dwc_common_port/usb.h
+--- linux-3.15.4/drivers/usb/host/dwc_common_port/usb.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_common_port/usb.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,946 @@
+/*
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -48750,9 +50657,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_common_port/usb.h linux-rpi/drivers/us
+#endif
+
+#endif /* _USB_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg
---- linux-3.15/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg
+--- linux-3.15.4/drivers/usb/host/dwc_otg/doc/doxygen.cfg 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/doc/doxygen.cfg 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,224 @@
+# Doxyfile 1.3.9.1
+
@@ -48978,9 +50885,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/doc/doxygen.cfg linux-rpi/drivers/
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c
---- linux-3.15/drivers/usb/host/dwc_otg/dummy_audio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dummy_audio.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dummy_audio.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1575 @@
+/*
+ * zero.c -- Gadget Zero, for USB development
@@ -50557,9 +52464,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dummy_audio.c linux-rpi/drivers/us
+ remove_proc_entry("isoc_test", NULL);
+}
+module_exit (cleanup);
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_cfi_common.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_cfi_common.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,142 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -50703,9 +52610,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_cfi_common.h linux-rpi/drivers
+typedef struct cfi_string cfi_string_t;
+
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_adp.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,854 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.c $
@@ -51561,9 +53468,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.c linux-rpi/drivers/us
+#endif
+ return 1;
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_adp.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_adp.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,80 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_adp.h $
@@ -51645,9 +53552,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_adp.h linux-rpi/drivers/us
+extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if);
+
+#endif //__DWC_OTG_ADP_H__
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_attr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1210 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.c $
@@ -52859,9 +54766,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.c linux-rpi/drivers/u
+ device_remove_file(&dev->dev, &dev_attr_sleep_status);
+#endif
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_attr.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_attr.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,89 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_attr.h $
@@ -52952,9 +54859,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_attr.h linux-rpi/drivers/u
+#endif
+ );
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1876 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -54832,9 +56739,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.c linux-rpi/drivers/us
+}
+
+#endif //DWC_UTE_CFI
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cfi.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,320 @@
+/* ==========================================================================
+ * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
@@ -55156,9 +57063,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cfi.h linux-rpi/drivers/us
+int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl);
+
+#endif /* (__DWC_OTG_CFI_H__) */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,7151 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.c $
@@ -62311,9 +64218,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.c linux-rpi/drivers/us
+ dwc_otg_pcd_start_srp_timer(core_if);
+ return;
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1464 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil.h $
@@ -63779,10 +65686,10 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil.h linux-rpi/drivers/us
+//////////////////////////////////////////////////////////////////////
+
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2014-06-11 21:03:43.000000000 +0200
-@@ -0,0 +1,1595 @@
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c 2014-07-07 10:45:43.000000000 +0200
+@@ -0,0 +1,1594 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_cil_intr.c $
+ * $Revision: #32 $
@@ -65133,10 +67040,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drive
+ local_fiq_disable();
+ /* Pull in the interrupts that the FIQ has masked */
+ gintmsk.d32 |= ~(hcd->fiq_state->gintmsk_saved.d32);
++ gintmsk.d32 |= gintmsk_common.d32;
+ /* for the upstairs function to reenable - have to read it here in case FIQ triggers again */
-+ reenable_gintmsk->d32 |= gintmsk.d32;
-+ reenable_gintmsk->d32 |= ~(hcd->fiq_state->gintmsk_saved.d32);
-+ reenable_gintmsk->d32 &= gintmsk_common.d32;
++ reenable_gintmsk->d32 = gintmsk.d32;
+ local_fiq_enable();
+ }
+
@@ -65320,7 +67226,7 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drive
+// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "CILOUT %1d", retval);
+// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintsts.d32);
+// fiq_print(FIQDBG_INT, otg_dev->hcd->fiq_state, "%08x", gintmsk_reenable.d32);
-+ if (retval) {
++ if (retval && fiq_enable) {
+ DWC_WRITE_REG32(&core_if->core_global_regs->gintmsk, gintmsk_reenable.d32);
+ }
+
@@ -65378,9 +67284,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c linux-rpi/drive
+ DWC_SPINUNLOCK(core_if->lock);
+ return retval;
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_core_if.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,705 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_core_if.h $
@@ -66087,9 +67993,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_core_if.h linux-rpi/driver
+/** @} */
+
+#endif /* __DWC_CORE_IF_H__ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_dbg.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,117 @@
+/* ==========================================================================
+ *
@@ -66208,9 +68114,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_dbg.h linux-rpi/drivers/us
+
+#endif /*DEBUG*/
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_driver.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1749 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.c $
@@ -67961,9 +69867,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.c linux-rpi/drivers
+ </td></tr>
+
+*/
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_driver.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_driver.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,86 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_driver.h $
@@ -68051,10 +69957,10 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_driver.h linux-rpi/drivers
+#endif
+
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2014-06-11 21:03:43.000000000 +0200
-@@ -0,0 +1,1290 @@
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c 2014-07-07 10:45:43.000000000 +0200
+@@ -0,0 +1,1294 @@
+/*
+ * dwc_otg_fiq_fsm.c - The finite state machine FIQ
+ *
@@ -68753,7 +70659,11 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/driver
+ fiq_print(FIQDBG_ERR, state, "ERRST %02d", n);
+ if (hcint_probe.b.nak || hcint_probe.b.ack || hcint_probe.b.datatglerr) {
+ fiq_print(FIQDBG_ERR, state, "RESET %02d", n);
-+ st->nr_errors = 0;
++ /* In some random cases we can get a NAK interrupt coincident with a Xacterr
++ * interrupt, after the device has disappeared.
++ */
++ if (!hcint.b.xacterr)
++ st->nr_errors = 0;
+ hcintmsk.b.nak = 0;
+ hcintmsk.b.ack = 0;
+ hcintmsk.b.datatglerr = 0;
@@ -69345,9 +71255,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c linux-rpi/driver
+ state->fiq_done++;
+ mb();
+}
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,353 @@
+/*
+ * dwc_otg_fiq_fsm.h - Finite state machine FIQ header definitions
@@ -69702,9 +71612,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h linux-rpi/driver
+extern void dwc_otg_fiq_nop(struct fiq_state *state);
+
+#endif /* DWC_OTG_FIQ_FSM_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,81 @@
+/*
+ * dwc_otg_fiq_fsm.S - assembly stub for the FSM FIQ
@@ -69787,10 +71697,10 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S linux-rpi/drive
+_dwc_otg_fiq_stub_end:
+END(_dwc_otg_fiq_stub)
+
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2014-06-11 21:03:43.000000000 +0200
-@@ -0,0 +1,4192 @@
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.c 2014-07-07 10:45:43.000000000 +0200
+@@ -0,0 +1,4212 @@
+
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.c $
@@ -70843,10 +72753,11 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/us
+ for (i=0; i < hcd->core_if->core_params->host_channels; i++) {
+ dwc_otg_cleanup_fiq_channel(hcd, i);
+ }
-+ DWC_PRINTF("FIQ FSM acceleration enabled for :\n%s%s%s",
++ DWC_PRINTF("FIQ FSM acceleration enabled for :\n%s%s%s%s",
+ (fiq_fsm_mask & 0x1) ? "Non-periodic Split Transactions\n" : "",
+ (fiq_fsm_mask & 0x2) ? "Periodic Split Transactions\n" : "",
-+ (fiq_fsm_mask & 0x4) ? "High-Speed Isochronous Endpoints\n" : "");
++ (fiq_fsm_mask & 0x4) ? "High-Speed Isochronous Endpoints\n" : "",
++ (fiq_fsm_mask & 0x8) ? "Interrupt/Control Split Transaction hack enabled\n" : "");
+ }
+ }
+
@@ -71577,6 +73488,20 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/us
+ st->hcintmsk_copy.b.chhltd = 1;
+ st->hcintmsk_copy.b.ahberr = 1;
+
++ /* Hack courtesy of FreeBSD: apparently forcing Interrupt Split transactions
++ * as Control puts the transfer into the non-periodic request queue and the
++ * non-periodic handler in the hub. Makes things lots easier.
++ */
++ if ((fiq_fsm_mask & 0x8) && hc->ep_type == UE_INTERRUPT) {
++ st->hcchar_copy.b.multicnt = 0;
++ st->hcchar_copy.b.oddfrm = 0;
++ st->hcchar_copy.b.eptype = UE_CONTROL;
++ if (hc->align_buff) {
++ st->hcdma_copy.d32 = hc->align_buff;
++ } else {
++ st->hcdma_copy.d32 = ((unsigned long) hc->xfer_buff & 0xFFFFFFFF);
++ }
++ }
+ DWC_WRITE_REG32(&hc_regs->hcdma, st->hcdma_copy.d32);
+ DWC_WRITE_REG32(&hc_regs->hctsiz, st->hctsiz_copy.d32);
+ DWC_WRITE_REG32(&hc_regs->hcsplt, st->hcsplt_copy.d32);
@@ -71630,6 +73555,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/us
+ }
+ }
+ }
++ if ((fiq_fsm_mask & 0x8) && hc->ep_type == UE_INTERRUPT)
++ start_immediate = 1;
++
+ fiq_print(FIQDBG_INT, hcd->fiq_state, "FSMQ %01d %01d", hc->hc_num, start_immediate);
+ fiq_print(FIQDBG_INT, hcd->fiq_state, "%08d", hfnum.b.frrem);
+ //fiq_print(FIQDBG_INT, hcd->fiq_state, "H:%02dP:%02d", hub_addr, port_addr);
@@ -71661,11 +73589,13 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/us
+ }
+ break;
+ case UE_INTERRUPT:
-+ if (start_immediate) {
++ if (fiq_fsm_mask & 0x8) {
++ st->fsm = FIQ_NP_SSPLIT_STARTED;
++ } else if (start_immediate) {
+ st->fsm = FIQ_PER_SSPLIT_STARTED;
-+ } else {
-+ st->fsm = FIQ_PER_SSPLIT_QUEUED;
-+ }
++ } else {
++ st->fsm = FIQ_PER_SSPLIT_QUEUED;
++ }
+ default:
+ break;
+ }
@@ -73983,9 +75913,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.c linux-rpi/drivers/us
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1132 @@
+/*==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_ddma.c $
@@ -75119,9 +77049,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c linux-rpi/drive
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,862 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd.h $
@@ -75985,9 +77915,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd.h linux-rpi/drivers/us
+#endif
+#endif
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,417 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_if.h $
@@ -76406,9 +78336,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h linux-rpi/drivers
+
+#endif /* __DWC_HCD_IF_H__ */
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,2688 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_intr.c $
@@ -79031,7 +80961,7 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drive
+ case FIQ_PASSTHROUGH_ERRORSTATE:
+ /* Hook into the error count */
+ fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "HCDERR%02d", num);
-+ if (dwc_otg_hcd->fiq_state->channel[num].nr_errors) {
++ if (!dwc_otg_hcd->fiq_state->channel[num].nr_errors) {
+ qtd->error_count = 0;
+ fiq_print(FIQDBG_ERR, dwc_otg_hcd->fiq_state, "RESET ");
+ }
@@ -79098,9 +81028,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c linux-rpi/drive
+ return retval;
+}
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,985 @@
+
+/* ==========================================================================
@@ -80087,9 +82017,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c linux-rpi/driv
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,942 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_hcd_queue.c $
@@ -81033,9 +82963,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c linux-rpi/driv
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,188 @@
+#ifndef _DWC_OS_DEP_H_
+#define _DWC_OS_DEP_H_
@@ -81225,9 +83155,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h linux-rpi/drivers
+
+
+#endif /* _DWC_OS_DEP_H_ */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,2708 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.c $
@@ -83937,9 +85867,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.c linux-rpi/drivers/us
+}
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,266 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd.h $
@@ -84207,9 +86137,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd.h linux-rpi/drivers/us
+extern void do_test_mode(void *data);
+#endif
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,360 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_if.h $
@@ -84571,9 +86501,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h linux-rpi/drivers
+#endif /* __DWC_PCD_IF_H__ */
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,5147 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_intr.c $
@@ -89722,9 +91652,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c linux-rpi/drive
+}
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,1360 @@
+ /* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_pcd_linux.c $
@@ -91086,9 +93016,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c linux-rpi/driv
+EXPORT_SYMBOL(usb_gadget_unregister_driver);
+
+#endif /* DWC_HOST_ONLY */
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h
---- linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h
+--- linux-3.15.4/drivers/usb/host/dwc_otg/dwc_otg_regs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/dwc_otg_regs.h 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,2550 @@
+/* ==========================================================================
+ * $File: //dwh/usb_iip/dev/software/otg/linux/drivers/dwc_otg_regs.h $
@@ -93640,9 +95570,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/dwc_otg_regs.h linux-rpi/drivers/u
+} gpwrdn_data_t;
+
+#endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/host/dwc_otg/Makefile
---- linux-3.15/drivers/usb/host/dwc_otg/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/Makefile 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/host/dwc_otg/Makefile
+--- linux-3.15.4/drivers/usb/host/dwc_otg/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/Makefile 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,82 @@
+#
+# Makefile for DWC_otg Highspeed USB controller driver
@@ -93726,9 +95656,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/Makefile linux-rpi/drivers/usb/hos
+ rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers
+
+endif
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
---- linux-3.15/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
+--- linux-3.15.4/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,337 @@
+package dwc_otg_test;
+
@@ -94067,9 +95997,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm linux-rpi/dri
+);
+
+1;
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers/usb/host/dwc_otg/test/Makefile
---- linux-3.15/drivers/usb/host/dwc_otg/test/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/test/Makefile 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers/usb/host/dwc_otg/test/Makefile
+--- linux-3.15.4/drivers/usb/host/dwc_otg/test/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/test/Makefile 2014-04-13 17:33:11.000000000 +0200
@@ -0,0 +1,16 @@
+
+PERL=/usr/bin/perl
@@ -94087,9 +96017,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/Makefile linux-rpi/drivers/us
+ else echo "=======> $$test, FAILED" ; \
+ fi \
+ done
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl
---- linux-3.15/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl
+--- linux-3.15.4/drivers/usb/host/dwc_otg/test/test_mod_param.pl 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/test/test_mod_param.pl 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,133 @@
+#!/usr/bin/perl -w
+#
@@ -94224,9 +96154,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/test_mod_param.pl linux-rpi/d
+
+test_main();
+0;
-diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl
---- linux-3.15/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2014-06-11 21:03:43.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl
+--- linux-3.15.4/drivers/usb/host/dwc_otg/test/test_sysfs.pl 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/usb/host/dwc_otg/test/test_sysfs.pl 2014-07-07 10:45:43.000000000 +0200
@@ -0,0 +1,193 @@
+#!/usr/bin/perl -w
+#
@@ -94421,9 +96351,9 @@ diff -Nur linux-3.15/drivers/usb/host/dwc_otg/test/test_sysfs.pl linux-rpi/drive
+
+test_main();
+0;
-diff -Nur linux-3.15/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kconfig
---- linux-3.15/drivers/usb/host/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/host/Kconfig 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kconfig
+--- linux-3.15.4/drivers/usb/host/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/host/Kconfig 2014-07-07 10:45:43.000000000 +0200
@@ -685,6 +685,19 @@
To compile this driver a module, choose M here: the module
will be called "hwa-hc".
@@ -94444,9 +96374,9 @@ diff -Nur linux-3.15/drivers/usb/host/Kconfig linux-rpi/drivers/usb/host/Kconfig
config USB_IMX21_HCD
tristate "i.MX21 HCD support"
depends on ARM && ARCH_MXC
-diff -Nur linux-3.15/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Makefile
---- linux-3.15/drivers/usb/host/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/host/Makefile 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Makefile
+--- linux-3.15.4/drivers/usb/host/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/host/Makefile 2014-07-07 10:45:43.000000000 +0200
@@ -63,6 +63,8 @@
obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o
obj-$(CONFIG_USB_ISP1760_HCD) += isp1760.o
@@ -94456,9 +96386,9 @@ diff -Nur linux-3.15/drivers/usb/host/Makefile linux-rpi/drivers/usb/host/Makefi
obj-$(CONFIG_USB_IMX21_HCD) += imx21-hcd.o
obj-$(CONFIG_USB_FSL_MPH_DR_OF) += fsl-mph-dr-of.o
obj-$(CONFIG_USB_OCTEON2_COMMON) += octeon2-common.o
-diff -Nur linux-3.15/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile
---- linux-3.15/drivers/usb/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/usb/Makefile 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile
+--- linux-3.15.4/drivers/usb/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/usb/Makefile 2014-07-07 10:45:42.000000000 +0200
@@ -24,6 +24,7 @@
obj-$(CONFIG_USB_R8A66597_HCD) += host/
obj-$(CONFIG_USB_HWA_HCD) += host/
@@ -94467,9 +96397,9 @@ diff -Nur linux-3.15/drivers/usb/Makefile linux-rpi/drivers/usb/Makefile
obj-$(CONFIG_USB_IMX21_HCD) += host/
obj-$(CONFIG_USB_FSL_MPH_DR_OF) += host/
obj-$(CONFIG_USB_FUSBH200_HCD) += host/
-diff -Nur linux-3.15/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video/fbdev/bcm2708_fb.c
---- linux-3.15/drivers/video/fbdev/bcm2708_fb.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/video/fbdev/bcm2708_fb.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video/fbdev/bcm2708_fb.c
+--- linux-3.15.4/drivers/video/fbdev/bcm2708_fb.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/video/fbdev/bcm2708_fb.c 2014-07-07 10:45:46.000000000 +0200
@@ -0,0 +1,765 @@
+/*
+ * linux/drivers/video/bcm2708_fb.c
@@ -95236,9 +97166,9 @@ diff -Nur linux-3.15/drivers/video/fbdev/bcm2708_fb.c linux-rpi/drivers/video/fb
+MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer");
+MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer");
+MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes");
-diff -Nur linux-3.15/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/video/fbdev/core/cfbimgblt.c
---- linux-3.15/drivers/video/fbdev/core/cfbimgblt.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/video/fbdev/core/cfbimgblt.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/video/fbdev/core/cfbimgblt.c
+--- linux-3.15.4/drivers/video/fbdev/core/cfbimgblt.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/video/fbdev/core/cfbimgblt.c 2014-07-07 10:45:46.000000000 +0200
@@ -28,6 +28,11 @@
*
* Also need to add code to deal with cards endians that are different than
@@ -95412,9 +97342,9 @@ diff -Nur linux-3.15/drivers/video/fbdev/core/cfbimgblt.c linux-rpi/drivers/vide
slow_imageblit(image, p, dst1, fgcolor, bgcolor,
start_index, pitch_index);
} else
-diff -Nur linux-3.15/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video/fbdev/core/fbmem.c
---- linux-3.15/drivers/video/fbdev/core/fbmem.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/video/fbdev/core/fbmem.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video/fbdev/core/fbmem.c
+--- linux-3.15.4/drivers/video/fbdev/core/fbmem.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/video/fbdev/core/fbmem.c 2014-07-07 10:45:46.000000000 +0200
@@ -1083,6 +1083,25 @@
}
EXPORT_SYMBOL(fb_blank);
@@ -95473,9 +97403,9 @@ diff -Nur linux-3.15/drivers/video/fbdev/core/fbmem.c linux-rpi/drivers/video/fb
arg = (unsigned long) compat_ptr(arg);
case FBIOBLANK:
ret = do_fb_ioctl(info, cmd, arg);
-diff -Nur linux-3.15/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbdev/Kconfig
---- linux-3.15/drivers/video/fbdev/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/video/fbdev/Kconfig 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbdev/Kconfig
+--- linux-3.15.4/drivers/video/fbdev/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/video/fbdev/Kconfig 2014-07-07 10:45:46.000000000 +0200
@@ -220,6 +220,20 @@
comment "Frame buffer hardware drivers"
depends on FB
@@ -95497,9 +97427,9 @@ diff -Nur linux-3.15/drivers/video/fbdev/Kconfig linux-rpi/drivers/video/fbdev/K
config FB_GRVGA
tristate "Aeroflex Gaisler framebuffer support"
depends on FB && SPARC
-diff -Nur linux-3.15/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbdev/Makefile
---- linux-3.15/drivers/video/fbdev/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/video/fbdev/Makefile 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbdev/Makefile
+--- linux-3.15.4/drivers/video/fbdev/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/video/fbdev/Makefile 2014-07-07 10:45:46.000000000 +0200
@@ -12,6 +12,7 @@
obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o
@@ -95508,9 +97438,9 @@ diff -Nur linux-3.15/drivers/video/fbdev/Makefile linux-rpi/drivers/video/fbdev/
obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o
obj-$(CONFIG_FB_ARC) += arcfb.o
obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o
-diff -Nur linux-3.15/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/drivers/video/logo/logo_linux_clut224.ppm
---- linux-3.15/drivers/video/logo/logo_linux_clut224.ppm 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/video/logo/logo_linux_clut224.ppm 2014-06-11 21:03:44.000000000 +0200
+diff -Nur linux-3.15.4/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/drivers/video/logo/logo_linux_clut224.ppm
+--- linux-3.15.4/drivers/video/logo/logo_linux_clut224.ppm 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/video/logo/logo_linux_clut224.ppm 2014-04-13 17:33:14.000000000 +0200
@@ -1,1604 +1,883 @@
P3
-# Standard 224-color Linux logo
@@ -97997,9 +99927,9 @@ diff -Nur linux-3.15/drivers/video/logo/logo_linux_clut224.ppm linux-rpi/drivers
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0
-diff -Nur linux-3.15/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/masters/w1-gpio.c
---- linux-3.15/drivers/w1/masters/w1-gpio.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/w1/masters/w1-gpio.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/masters/w1-gpio.c
+--- linux-3.15.4/drivers/w1/masters/w1-gpio.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/w1/masters/w1-gpio.c 2014-07-07 10:45:47.000000000 +0200
@@ -23,6 +23,15 @@
#include "../w1.h"
#include "../w1_int.h"
@@ -98099,9 +100029,9 @@ diff -Nur linux-3.15/drivers/w1/masters/w1-gpio.c linux-rpi/drivers/w1/masters/w
return 0;
}
-diff -Nur linux-3.15/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h
---- linux-3.15/drivers/w1/w1.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/w1/w1.h 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h
+--- linux-3.15.4/drivers/w1/w1.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/w1/w1.h 2014-07-07 10:45:47.000000000 +0200
@@ -171,6 +171,12 @@
u8 (*set_pullup)(void *, int);
@@ -98115,9 +100045,9 @@ diff -Nur linux-3.15/drivers/w1/w1.h linux-rpi/drivers/w1/w1.h
void (*search)(void *, struct w1_master *,
u8, w1_slave_found_callback);
};
-diff -Nur linux-3.15/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c
---- linux-3.15/drivers/w1/w1_int.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/w1/w1_int.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c
+--- linux-3.15.4/drivers/w1/w1_int.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/w1/w1_int.c 2014-07-07 10:45:47.000000000 +0200
@@ -124,6 +124,20 @@
return(-EINVAL);
}
@@ -98139,9 +100069,9 @@ diff -Nur linux-3.15/drivers/w1/w1_int.c linux-rpi/drivers/w1/w1_int.c
/* Lock until the device is added (or not) to w1_masters. */
mutex_lock(&w1_mlock);
/* Search for the first available id (starting at 1). */
-diff -Nur linux-3.15/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c
---- linux-3.15/drivers/w1/w1_io.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/w1/w1_io.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c
+--- linux-3.15.4/drivers/w1/w1_io.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/w1/w1_io.c 2014-07-07 10:45:47.000000000 +0200
@@ -134,10 +134,22 @@
static void w1_post_write(struct w1_master *dev)
{
@@ -98168,9 +100098,36 @@ diff -Nur linux-3.15/drivers/w1/w1_io.c linux-rpi/drivers/w1/w1_io.c
dev->pullup_duration = 0;
}
}
-diff -Nur linux-3.15/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchdog/bcm2708_wdog.c
---- linux-3.15/drivers/watchdog/bcm2708_wdog.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/drivers/watchdog/bcm2708_wdog.c 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/watchdog/ath79_wdt.c linux-rpi/drivers/watchdog/ath79_wdt.c
+--- linux-3.15.4/drivers/watchdog/ath79_wdt.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/watchdog/ath79_wdt.c 2014-07-07 10:45:47.000000000 +0200
+@@ -20,7 +20,6 @@
+ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
+
+ #include <linux/bitops.h>
+-#include <linux/delay.h>
+ #include <linux/errno.h>
+ #include <linux/fs.h>
+ #include <linux/io.h>
+@@ -91,15 +90,6 @@
+ static inline void ath79_wdt_enable(void)
+ {
+ ath79_wdt_keepalive();
+-
+- /*
+- * Updating the TIMER register requires a few microseconds
+- * on the AR934x SoCs at least. Use a small delay to ensure
+- * that the TIMER register is updated within the hardware
+- * before enabling the watchdog.
+- */
+- udelay(2);
+-
+ ath79_wdt_wr(WDOG_REG_CTRL, WDOG_CTRL_ACTION_FCR);
+ /* flush write */
+ ath79_wdt_rr(WDOG_REG_CTRL);
+diff -Nur linux-3.15.4/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchdog/bcm2708_wdog.c
+--- linux-3.15.4/drivers/watchdog/bcm2708_wdog.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/drivers/watchdog/bcm2708_wdog.c 2014-07-07 10:45:47.000000000 +0200
@@ -0,0 +1,382 @@
+/*
+ * Broadcom BCM2708 watchdog driver.
@@ -98554,9 +100511,9 @@ diff -Nur linux-3.15/drivers/watchdog/bcm2708_wdog.c linux-rpi/drivers/watchdog/
+MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+MODULE_ALIAS_MISCDEV(TEMP_MINOR);
+MODULE_LICENSE("GPL");
-diff -Nur linux-3.15/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kconfig
---- linux-3.15/drivers/watchdog/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/watchdog/Kconfig 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kconfig
+--- linux-3.15.4/drivers/watchdog/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/watchdog/Kconfig 2014-07-07 10:45:47.000000000 +0200
@@ -411,6 +411,12 @@
To compile this driver as a module, choose M here: the
module will be called retu_wdt.
@@ -98570,9 +100527,21 @@ diff -Nur linux-3.15/drivers/watchdog/Kconfig linux-rpi/drivers/watchdog/Kconfig
config MOXART_WDT
tristate "MOXART watchdog"
depends on ARCH_MOXART
-diff -Nur linux-3.15/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Makefile
---- linux-3.15/drivers/watchdog/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/drivers/watchdog/Makefile 2014-06-11 21:05:32.000000000 +0200
+diff -Nur linux-3.15.4/drivers/watchdog/kempld_wdt.c linux-rpi/drivers/watchdog/kempld_wdt.c
+--- linux-3.15.4/drivers/watchdog/kempld_wdt.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/watchdog/kempld_wdt.c 2014-07-07 10:45:47.000000000 +0200
+@@ -162,7 +162,7 @@
+ kempld_get_mutex(pld);
+ stage_cfg = kempld_read8(pld, KEMPLD_WDT_STAGE_CFG(stage->id));
+ stage_cfg &= ~STAGE_CFG_PRESCALER_MASK;
+- stage_cfg |= STAGE_CFG_SET_PRESCALER(PRESCALER_21);
++ stage_cfg |= STAGE_CFG_SET_PRESCALER(prescaler);
+ kempld_write8(pld, KEMPLD_WDT_STAGE_CFG(stage->id), stage_cfg);
+ kempld_write32(pld, KEMPLD_WDT_STAGE_TIMEOUT(stage->id),
+ stage_timeout);
+diff -Nur linux-3.15.4/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Makefile
+--- linux-3.15.4/drivers/watchdog/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/watchdog/Makefile 2014-07-07 10:45:47.000000000 +0200
@@ -54,6 +54,7 @@
obj-$(CONFIG_IMX2_WDT) += imx2_wdt.o
obj-$(CONFIG_UX500_WATCHDOG) += ux500_wdt.o
@@ -98581,9 +100550,304 @@ diff -Nur linux-3.15/drivers/watchdog/Makefile linux-rpi/drivers/watchdog/Makefi
obj-$(CONFIG_BCM2835_WDT) += bcm2835_wdt.o
obj-$(CONFIG_MOXART_WDT) += moxart_wdt.o
obj-$(CONFIG_SIRFSOC_WATCHDOG) += sirfsoc_wdt.o
-diff -Nur linux-3.15/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/broadcom/vc_cma.h
---- linux-3.15/include/linux/broadcom/vc_cma.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/include/linux/broadcom/vc_cma.h 2014-06-11 21:03:52.000000000 +0200
+diff -Nur linux-3.15.4/drivers/watchdog/sp805_wdt.c linux-rpi/drivers/watchdog/sp805_wdt.c
+--- linux-3.15.4/drivers/watchdog/sp805_wdt.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/drivers/watchdog/sp805_wdt.c 2014-07-07 10:45:47.000000000 +0200
+@@ -59,6 +59,7 @@
+ * @adev: amba device structure of wdt
+ * @status: current status of wdt
+ * @load_val: load value to be set for current timeout
++ * @timeout: current programmed timeout
+ */
+ struct sp805_wdt {
+ struct watchdog_device wdd;
+@@ -67,6 +68,7 @@
+ struct clk *clk;
+ struct amba_device *adev;
+ unsigned int load_val;
++ unsigned int timeout;
+ };
+
+ static bool nowayout = WATCHDOG_NOWAYOUT;
+@@ -96,7 +98,7 @@
+ spin_lock(&wdt->lock);
+ wdt->load_val = load;
+ /* roundup timeout to closest positive integer value */
+- wdd->timeout = div_u64((load + 1) * 2 + (rate / 2), rate);
++ wdt->timeout = div_u64((load + 1) * 2 + (rate / 2), rate);
+ spin_unlock(&wdt->lock);
+
+ return 0;
+diff -Nur linux-3.15.4/fs/nfs/inode.c linux-rpi/fs/nfs/inode.c
+--- linux-3.15.4/fs/nfs/inode.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfs/inode.c 2014-07-07 10:45:51.000000000 +0200
+@@ -1575,20 +1575,18 @@
+ inode->i_version = fattr->change_attr;
+ }
+ } else if (server->caps & NFS_CAP_CHANGE_ATTR)
+- nfsi->cache_validity |= save_cache_validity;
++ invalid |= save_cache_validity;
+
+ if (fattr->valid & NFS_ATTR_FATTR_MTIME) {
+ memcpy(&inode->i_mtime, &fattr->mtime, sizeof(inode->i_mtime));
+ } else if (server->caps & NFS_CAP_MTIME)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_REVAL_FORCED);
+
+ if (fattr->valid & NFS_ATTR_FATTR_CTIME) {
+ memcpy(&inode->i_ctime, &fattr->ctime, sizeof(inode->i_ctime));
+ } else if (server->caps & NFS_CAP_CTIME)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_REVAL_FORCED);
+
+ /* Check if our cached file size is stale */
+@@ -1610,8 +1608,7 @@
+ (long long)new_isize);
+ }
+ } else
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_REVAL_PAGECACHE
+ | NFS_INO_REVAL_FORCED);
+
+@@ -1619,8 +1616,7 @@
+ if (fattr->valid & NFS_ATTR_FATTR_ATIME)
+ memcpy(&inode->i_atime, &fattr->atime, sizeof(inode->i_atime));
+ else if (server->caps & NFS_CAP_ATIME)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATIME
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATIME
+ | NFS_INO_REVAL_FORCED);
+
+ if (fattr->valid & NFS_ATTR_FATTR_MODE) {
+@@ -1631,8 +1627,7 @@
+ invalid |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL;
+ }
+ } else if (server->caps & NFS_CAP_MODE)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_INVALID_ACCESS
+ | NFS_INO_INVALID_ACL
+ | NFS_INO_REVAL_FORCED);
+@@ -1643,8 +1638,7 @@
+ inode->i_uid = fattr->uid;
+ }
+ } else if (server->caps & NFS_CAP_OWNER)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_INVALID_ACCESS
+ | NFS_INO_INVALID_ACL
+ | NFS_INO_REVAL_FORCED);
+@@ -1655,8 +1649,7 @@
+ inode->i_gid = fattr->gid;
+ }
+ } else if (server->caps & NFS_CAP_OWNER_GROUP)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_INVALID_ACCESS
+ | NFS_INO_INVALID_ACL
+ | NFS_INO_REVAL_FORCED);
+@@ -1669,8 +1662,7 @@
+ set_nlink(inode, fattr->nlink);
+ }
+ } else if (server->caps & NFS_CAP_NLINK)
+- nfsi->cache_validity |= save_cache_validity &
+- (NFS_INO_INVALID_ATTR
++ invalid |= save_cache_validity & (NFS_INO_INVALID_ATTR
+ | NFS_INO_REVAL_FORCED);
+
+ if (fattr->valid & NFS_ATTR_FATTR_SPACE_USED) {
+diff -Nur linux-3.15.4/fs/nfs/nfs4filelayout.c linux-rpi/fs/nfs/nfs4filelayout.c
+--- linux-3.15.4/fs/nfs/nfs4filelayout.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfs/nfs4filelayout.c 2014-07-07 10:45:51.000000000 +0200
+@@ -1330,7 +1330,7 @@
+ struct nfs4_filelayout *flo;
+
+ flo = kzalloc(sizeof(*flo), gfp_flags);
+- return flo != NULL ? &flo->generic_hdr : NULL;
++ return &flo->generic_hdr;
+ }
+
+ static void
+diff -Nur linux-3.15.4/fs/nfs/nfs4state.c linux-rpi/fs/nfs/nfs4state.c
+--- linux-3.15.4/fs/nfs/nfs4state.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfs/nfs4state.c 2014-07-07 10:45:51.000000000 +0200
+@@ -1456,7 +1456,7 @@
+ * server that doesn't support a grace period.
+ */
+ spin_lock(&sp->so_lock);
+- raw_write_seqcount_begin(&sp->so_reclaim_seqcount);
++ write_seqcount_begin(&sp->so_reclaim_seqcount);
+ restart:
+ list_for_each_entry(state, &sp->so_states, open_states) {
+ if (!test_and_clear_bit(ops->state_flag_bit, &state->flags))
+@@ -1519,13 +1519,13 @@
+ spin_lock(&sp->so_lock);
+ goto restart;
+ }
+- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
++ write_seqcount_end(&sp->so_reclaim_seqcount);
+ spin_unlock(&sp->so_lock);
+ return 0;
+ out_err:
+ nfs4_put_open_state(state);
+ spin_lock(&sp->so_lock);
+- raw_write_seqcount_end(&sp->so_reclaim_seqcount);
++ write_seqcount_end(&sp->so_reclaim_seqcount);
+ spin_unlock(&sp->so_lock);
+ return status;
+ }
+diff -Nur linux-3.15.4/fs/nfs/super.c linux-rpi/fs/nfs/super.c
+--- linux-3.15.4/fs/nfs/super.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfs/super.c 2014-07-07 10:45:51.000000000 +0200
+@@ -2248,7 +2248,6 @@
+ data->nfs_server.addrlen = nfss->nfs_client->cl_addrlen;
+ data->version = nfsvers;
+ data->minorversion = nfss->nfs_client->cl_minorversion;
+- data->net = current->nsproxy->net_ns;
+ memcpy(&data->nfs_server.address, &nfss->nfs_client->cl_addr,
+ data->nfs_server.addrlen);
+
+diff -Nur linux-3.15.4/fs/nfs/write.c linux-rpi/fs/nfs/write.c
+--- linux-3.15.4/fs/nfs/write.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfs/write.c 2014-07-07 10:45:51.000000000 +0200
+@@ -913,14 +913,12 @@
+
+ if (nfs_have_delegated_attributes(inode))
+ goto out;
+- if (nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)
++ if (nfsi->cache_validity & (NFS_INO_INVALID_DATA|NFS_INO_REVAL_PAGECACHE))
+ return false;
+ smp_rmb();
+ if (test_bit(NFS_INO_INVALIDATING, &nfsi->flags))
+ return false;
+ out:
+- if (nfsi->cache_validity & NFS_INO_INVALID_DATA)
+- return false;
+ return PageUptodate(page) != 0;
+ }
+
+diff -Nur linux-3.15.4/fs/nfsd/nfs4state.c linux-rpi/fs/nfsd/nfs4state.c
+--- linux-3.15.4/fs/nfsd/nfs4state.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfsd/nfs4state.c 2014-07-07 10:45:51.000000000 +0200
+@@ -3726,7 +3726,7 @@
+ * correspondance, and we have to delete the lockowner when we
+ * delete the lock stateid:
+ */
+- release_lockowner(lo);
++ unhash_lockowner(lo);
+ return nfs_ok;
+ }
+
+diff -Nur linux-3.15.4/fs/nfsd/nfs4xdr.c linux-rpi/fs/nfsd/nfs4xdr.c
+--- linux-3.15.4/fs/nfsd/nfs4xdr.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/nfsd/nfs4xdr.c 2014-07-07 10:45:51.000000000 +0200
+@@ -2095,8 +2095,8 @@
+ err = vfs_getattr(&path, &stat);
+ if (err)
+ goto out_nfserr;
+- if ((bmval0 & (FATTR4_WORD0_FILES_AVAIL | FATTR4_WORD0_FILES_FREE |
+- FATTR4_WORD0_FILES_TOTAL | FATTR4_WORD0_MAXNAME)) ||
++ if ((bmval0 & (FATTR4_WORD0_FILES_FREE | FATTR4_WORD0_FILES_TOTAL |
++ FATTR4_WORD0_MAXNAME)) ||
+ (bmval1 & (FATTR4_WORD1_SPACE_AVAIL | FATTR4_WORD1_SPACE_FREE |
+ FATTR4_WORD1_SPACE_TOTAL))) {
+ err = vfs_statfs(&path, &statfs);
+diff -Nur linux-3.15.4/fs/reiserfs/inode.c linux-rpi/fs/reiserfs/inode.c
+--- linux-3.15.4/fs/reiserfs/inode.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/reiserfs/inode.c 2014-07-07 10:45:51.000000000 +0200
+@@ -3220,14 +3220,8 @@
+ attr->ia_size != i_size_read(inode)) {
+ error = inode_newsize_ok(inode, attr->ia_size);
+ if (!error) {
+- /*
+- * Could race against reiserfs_file_release
+- * if called from NFS, so take tailpack mutex.
+- */
+- mutex_lock(&REISERFS_I(inode)->tailpack);
+ truncate_setsize(inode, attr->ia_size);
+- reiserfs_truncate_file(inode, 1);
+- mutex_unlock(&REISERFS_I(inode)->tailpack);
++ reiserfs_vfs_truncate_file(inode);
+ }
+ }
+
+diff -Nur linux-3.15.4/fs/ubifs/file.c linux-rpi/fs/ubifs/file.c
+--- linux-3.15.4/fs/ubifs/file.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/ubifs/file.c 2014-07-07 10:45:52.000000000 +0200
+@@ -1525,7 +1525,8 @@
+ }
+
+ wait_for_stable_page(page);
+- return VM_FAULT_LOCKED;
++ unlock_page(page);
++ return 0;
+
+ out_unlock:
+ unlock_page(page);
+diff -Nur linux-3.15.4/fs/ubifs/shrinker.c linux-rpi/fs/ubifs/shrinker.c
+--- linux-3.15.4/fs/ubifs/shrinker.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/ubifs/shrinker.c 2014-07-07 10:45:52.000000000 +0200
+@@ -128,6 +128,7 @@
+ freed = ubifs_destroy_tnc_subtree(znode);
+ atomic_long_sub(freed, &ubifs_clean_zn_cnt);
+ atomic_long_sub(freed, &c->clean_zn_cnt);
++ ubifs_assert(atomic_long_read(&c->clean_zn_cnt) >= 0);
+ total_freed += freed;
+ znode = zprev;
+ }
+diff -Nur linux-3.15.4/fs/xfs/xfs_mount.c linux-rpi/fs/xfs/xfs_mount.c
+--- linux-3.15.4/fs/xfs/xfs_mount.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/fs/xfs/xfs_mount.c 2014-07-07 10:45:52.000000000 +0200
+@@ -323,19 +323,8 @@
+ /*
+ * Initialize the mount structure from the superblock.
+ */
+- xfs_sb_from_disk(sbp, XFS_BUF_TO_SBP(bp));
+- xfs_sb_quota_from_disk(sbp);
+-
+- /*
+- * If we haven't validated the superblock, do so now before we try
+- * to check the sector size and reread the superblock appropriately.
+- */
+- if (sbp->sb_magicnum != XFS_SB_MAGIC) {
+- if (loud)
+- xfs_warn(mp, "Invalid superblock magic number");
+- error = EINVAL;
+- goto release_buf;
+- }
++ xfs_sb_from_disk(&mp->m_sb, XFS_BUF_TO_SBP(bp));
++ xfs_sb_quota_from_disk(&mp->m_sb);
+
+ /*
+ * We must be able to do sector-sized and sector-aligned IO.
+@@ -348,11 +337,11 @@
+ goto release_buf;
+ }
+
++ /*
++ * Re-read the superblock so the buffer is correctly sized,
++ * and properly verified.
++ */
+ if (buf_ops == NULL) {
+- /*
+- * Re-read the superblock so the buffer is correctly sized,
+- * and properly verified.
+- */
+ xfs_buf_relse(bp);
+ sector_size = sbp->sb_sectsize;
+ buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops;
+diff -Nur linux-3.15.4/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/broadcom/vc_cma.h
+--- linux-3.15.4/include/linux/broadcom/vc_cma.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/include/linux/broadcom/vc_cma.h 2014-07-07 10:45:52.000000000 +0200
@@ -0,0 +1,29 @@
+/*****************************************************************************
+* Copyright 2012 Broadcom Corporation. All rights reserved.
@@ -98614,9 +100878,9 @@ diff -Nur linux-3.15/include/linux/broadcom/vc_cma.h linux-rpi/include/linux/bro
+#endif
+
+#endif /* VC_CMA_H */
-diff -Nur linux-3.15/include/linux/mmc/host.h linux-rpi/include/linux/mmc/host.h
---- linux-3.15/include/linux/mmc/host.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/include/linux/mmc/host.h 2014-06-11 21:05:34.000000000 +0200
+diff -Nur linux-3.15.4/include/linux/mmc/host.h linux-rpi/include/linux/mmc/host.h
+--- linux-3.15.4/include/linux/mmc/host.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/linux/mmc/host.h 2014-07-07 10:45:53.000000000 +0200
@@ -278,6 +278,7 @@
#define MMC_CAP2_PACKED_CMD (MMC_CAP2_PACKED_RD | \
MMC_CAP2_PACKED_WR)
@@ -98625,9 +100889,9 @@ diff -Nur linux-3.15/include/linux/mmc/host.h linux-rpi/include/linux/mmc/host.h
mmc_pm_flag_t pm_caps; /* supported pm features */
-diff -Nur linux-3.15/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sdhci.h
---- linux-3.15/include/linux/mmc/sdhci.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/include/linux/mmc/sdhci.h 2014-06-11 21:05:34.000000000 +0200
+diff -Nur linux-3.15.4/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sdhci.h
+--- linux-3.15.4/include/linux/mmc/sdhci.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/linux/mmc/sdhci.h 2014-07-07 10:45:53.000000000 +0200
@@ -104,6 +104,7 @@
#define SDHCI_QUIRK2_BROKEN_DDR50 (1<<7)
@@ -98652,9 +100916,67 @@ diff -Nur linux-3.15/include/linux/mmc/sdhci.h linux-rpi/include/linux/mmc/sdhci
struct mmc_data *data; /* Current data request */
unsigned int data_early:1; /* Data finished before cmd */
-diff -Nur linux-3.15/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb.h
---- linux-3.15/include/uapi/linux/fb.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/include/uapi/linux/fb.h 2014-06-11 21:03:54.000000000 +0200
+diff -Nur linux-3.15.4/include/linux/ptrace.h linux-rpi/include/linux/ptrace.h
+--- linux-3.15.4/include/linux/ptrace.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/linux/ptrace.h 2014-07-07 10:45:53.000000000 +0200
+@@ -334,9 +334,6 @@
+ * calling arch_ptrace_stop() when it would be superfluous. For example,
+ * if the thread has not been back to user mode since the last stop, the
+ * thread state might indicate that nothing needs to be done.
+- *
+- * This is guaranteed to be invoked once before a task stops for ptrace and
+- * may include arch-specific operations necessary prior to a ptrace stop.
+ */
+ #define arch_ptrace_stop_needed(code, info) (0)
+ #endif
+diff -Nur linux-3.15.4/include/linux/vmstat.h linux-rpi/include/linux/vmstat.h
+--- linux-3.15.4/include/linux/vmstat.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/linux/vmstat.h 2014-07-07 10:45:55.000000000 +0200
+@@ -235,7 +235,11 @@
+ static inline void __dec_zone_state(struct zone *zone, enum zone_stat_item item)
+ {
+ atomic_long_dec(&zone->vm_stat[item]);
++ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&zone->vm_stat[item]) < 0))
++ atomic_long_set(&zone->vm_stat[item], 0);
+ atomic_long_dec(&vm_stat[item]);
++ if (item == NR_FILE_DIRTY && unlikely(atomic_long_read(&vm_stat[item]) < 0))
++ atomic_long_set(&vm_stat[item], 0);
+ }
+
+ static inline void __inc_zone_page_state(struct page *page,
+diff -Nur linux-3.15.4/include/trace/syscall.h linux-rpi/include/trace/syscall.h
+--- linux-3.15.4/include/trace/syscall.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/trace/syscall.h 2014-07-07 10:45:56.000000000 +0200
+@@ -4,7 +4,6 @@
+ #include <linux/tracepoint.h>
+ #include <linux/unistd.h>
+ #include <linux/ftrace_event.h>
+-#include <linux/thread_info.h>
+
+ #include <asm/ptrace.h>
+
+@@ -33,18 +32,4 @@
+ struct ftrace_event_call *exit_event;
+ };
+
+-#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_HAVE_SYSCALL_TRACEPOINTS)
+-static inline void syscall_tracepoint_update(struct task_struct *p)
+-{
+- if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
+- set_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
+- else
+- clear_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
+-}
+-#else
+-static inline void syscall_tracepoint_update(struct task_struct *p)
+-{
+-}
+-#endif
+-
+ #endif /* _TRACE_SYSCALL_H */
+diff -Nur linux-3.15.4/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb.h
+--- linux-3.15.4/include/uapi/linux/fb.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/include/uapi/linux/fb.h 2014-04-13 17:33:21.000000000 +0200
@@ -34,6 +34,11 @@
#define FBIOPUT_MODEINFO 0x4617
#define FBIOGET_DISPINFO 0x4618
@@ -98667,9 +100989,9 @@ diff -Nur linux-3.15/include/uapi/linux/fb.h linux-rpi/include/uapi/linux/fb.h
#define FB_TYPE_PACKED_PIXELS 0 /* Packed Pixels */
#define FB_TYPE_PLANES 1 /* Non interleaved planes */
-diff -Nur linux-3.15/kernel/cgroup.c linux-rpi/kernel/cgroup.c
---- linux-3.15/kernel/cgroup.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/kernel/cgroup.c 2014-06-11 21:05:40.000000000 +0200
+diff -Nur linux-3.15.4/kernel/cgroup.c linux-rpi/kernel/cgroup.c
+--- linux-3.15.4/kernel/cgroup.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/kernel/cgroup.c 2014-07-07 10:45:56.000000000 +0200
@@ -4620,6 +4620,29 @@
}
__setup("cgroup_disable=", cgroup_disable);
@@ -98700,10 +101022,126 @@ diff -Nur linux-3.15/kernel/cgroup.c linux-rpi/kernel/cgroup.c
/**
* css_tryget_from_dir - get corresponding css from the dentry of a cgroup dir
* @dentry: directory dentry of interest
-diff -Nur linux-3.15/mm/memcontrol.c linux-rpi/mm/memcontrol.c
---- linux-3.15/mm/memcontrol.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/mm/memcontrol.c 2014-06-11 21:05:41.000000000 +0200
-@@ -7157,6 +7157,7 @@
+diff -Nur linux-3.15.4/kernel/fork.c linux-rpi/kernel/fork.c
+--- linux-3.15.4/kernel/fork.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/kernel/fork.c 2014-07-07 10:45:56.000000000 +0200
+@@ -1487,9 +1487,7 @@
+
+ total_forks++;
+ spin_unlock(&current->sighand->siglock);
+- syscall_tracepoint_update(p);
+ write_unlock_irq(&tasklist_lock);
+-
+ proc_fork_connector(p);
+ cgroup_post_fork(p);
+ if (clone_flags & CLONE_THREAD)
+diff -Nur linux-3.15.4/kernel/trace/trace.c linux-rpi/kernel/trace/trace.c
+--- linux-3.15.4/kernel/trace/trace.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/kernel/trace/trace.c 2014-07-07 10:45:57.000000000 +0200
+@@ -1461,12 +1461,12 @@
+
+ void trace_stop_cmdline_recording(void);
+
+-static int trace_save_cmdline(struct task_struct *tsk)
++static void trace_save_cmdline(struct task_struct *tsk)
+ {
+ unsigned pid, idx;
+
+ if (!tsk->pid || unlikely(tsk->pid > PID_MAX_DEFAULT))
+- return 0;
++ return;
+
+ /*
+ * It's not the end of the world if we don't get
+@@ -1475,7 +1475,7 @@
+ * so if we miss here, then better luck next time.
+ */
+ if (!arch_spin_trylock(&trace_cmdline_lock))
+- return 0;
++ return;
+
+ idx = map_pid_to_cmdline[tsk->pid];
+ if (idx == NO_CMDLINE_MAP) {
+@@ -1500,8 +1500,6 @@
+ memcpy(&saved_cmdlines[idx], tsk->comm, TASK_COMM_LEN);
+
+ arch_spin_unlock(&trace_cmdline_lock);
+-
+- return 1;
+ }
+
+ void trace_find_cmdline(int pid, char comm[])
+@@ -1543,8 +1541,9 @@
+ if (!__this_cpu_read(trace_cmdline_save))
+ return;
+
+- if (trace_save_cmdline(tsk))
+- __this_cpu_write(trace_cmdline_save, false);
++ __this_cpu_write(trace_cmdline_save, false);
++
++ trace_save_cmdline(tsk);
+ }
+
+ void
+diff -Nur linux-3.15.4/kernel/watchdog.c linux-rpi/kernel/watchdog.c
+--- linux-3.15.4/kernel/watchdog.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/kernel/watchdog.c 2014-07-07 10:45:57.000000000 +0200
+@@ -527,8 +527,10 @@
+ int cpu;
+
+ get_online_cpus();
++ preempt_disable();
+ for_each_online_cpu(cpu)
+ update_timers(cpu);
++ preempt_enable();
+ put_online_cpus();
+ }
+
+diff -Nur linux-3.15.4/lib/lz4/lz4_decompress.c linux-rpi/lib/lz4/lz4_decompress.c
+--- linux-3.15.4/lib/lz4/lz4_decompress.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/lib/lz4/lz4_decompress.c 2014-07-07 10:45:57.000000000 +0200
+@@ -192,8 +192,6 @@
+ int s = 255;
+ while ((ip < iend) && (s == 255)) {
+ s = *ip++;
+- if (unlikely(length > (size_t)(length + s)))
+- goto _output_error;
+ length += s;
+ }
+ }
+@@ -234,8 +232,6 @@
+ if (length == ML_MASK) {
+ while (ip < iend) {
+ int s = *ip++;
+- if (unlikely(length > (size_t)(length + s)))
+- goto _output_error;
+ length += s;
+ if (s == 255)
+ continue;
+@@ -288,7 +284,7 @@
+
+ /* write overflow error detected */
+ _output_error:
+- return -1;
++ return (int) (-(((char *) ip) - source));
+ }
+
+ int lz4_decompress(const unsigned char *src, size_t *src_len,
+diff -Nur linux-3.15.4/Makefile linux-rpi/Makefile
+--- linux-3.15.4/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/Makefile 2014-07-07 10:44:57.000000000 +0200
+@@ -1,6 +1,6 @@
+ VERSION = 3
+ PATCHLEVEL = 15
+-SUBLEVEL = 4
++SUBLEVEL = 3
+ EXTRAVERSION =
+ NAME = Shuffling Zombie Juror
+
+diff -Nur linux-3.15.4/mm/memcontrol.c linux-rpi/mm/memcontrol.c
+--- linux-3.15.4/mm/memcontrol.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/mm/memcontrol.c 2014-07-07 10:45:57.000000000 +0200
+@@ -7158,6 +7158,7 @@
.bind = mem_cgroup_bind,
.base_cftypes = mem_cgroup_files,
.early_init = 0,
@@ -98711,9 +101149,38 @@ diff -Nur linux-3.15/mm/memcontrol.c linux-rpi/mm/memcontrol.c
};
#ifdef CONFIG_MEMCG_SWAP
-diff -Nur linux-3.15/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c
---- linux-3.15/sound/arm/bcm2835.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/bcm2835.c 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/net/sunrpc/svc_xprt.c linux-rpi/net/sunrpc/svc_xprt.c
+--- linux-3.15.4/net/sunrpc/svc_xprt.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/net/sunrpc/svc_xprt.c 2014-07-07 10:46:01.000000000 +0200
+@@ -730,8 +730,6 @@
+ newxpt = xprt->xpt_ops->xpo_accept(xprt);
+ if (newxpt)
+ svc_add_new_temp_xprt(serv, newxpt);
+- else
+- module_put(xprt->xpt_class->xcl_owner);
+ } else if (xprt->xpt_ops->xpo_has_wspace(xprt)) {
+ /* XPT_DATA|XPT_DEFERRED case: */
+ dprintk("svc: server %p, pool %u, transport %p, inuse=%d\n",
+diff -Nur linux-3.15.4/scripts/recordmcount.h linux-rpi/scripts/recordmcount.h
+--- linux-3.15.4/scripts/recordmcount.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/scripts/recordmcount.h 2014-04-13 17:33:26.000000000 +0200
+@@ -163,11 +163,11 @@
+
+ static int MIPS_is_fake_mcount(Elf_Rel const *rp)
+ {
+- static Elf_Addr old_r_offset = ~(Elf_Addr)0;
++ static Elf_Addr old_r_offset;
+ Elf_Addr current_r_offset = _w(rp->r_offset);
+ int is_fake;
+
+- is_fake = (old_r_offset != ~(Elf_Addr)0) &&
++ is_fake = old_r_offset &&
+ (current_r_offset - old_r_offset == MIPS_FAKEMCOUNT_OFFSET);
+ old_r_offset = current_r_offset;
+
+diff -Nur linux-3.15.4/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c
+--- linux-3.15.4/sound/arm/bcm2835.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/bcm2835.c 2014-07-07 10:46:02.000000000 +0200
@@ -0,0 +1,420 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -99135,9 +101602,9 @@ diff -Nur linux-3.15/sound/arm/bcm2835.c linux-rpi/sound/arm/bcm2835.c
+MODULE_DESCRIPTION("Alsa driver for BCM2835 chip");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:bcm2835_alsa");
-diff -Nur linux-3.15/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl.c
---- linux-3.15/sound/arm/bcm2835-ctl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/bcm2835-ctl.c 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl.c
+--- linux-3.15.4/sound/arm/bcm2835-ctl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/bcm2835-ctl.c 2014-07-07 10:46:02.000000000 +0200
@@ -0,0 +1,323 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -99462,9 +101929,9 @@ diff -Nur linux-3.15/sound/arm/bcm2835-ctl.c linux-rpi/sound/arm/bcm2835-ctl.c
+ }
+ return 0;
+}
-diff -Nur linux-3.15/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h
---- linux-3.15/sound/arm/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/bcm2835.h 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h
+--- linux-3.15.4/sound/arm/bcm2835.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/bcm2835.h 2014-07-07 10:46:02.000000000 +0200
@@ -0,0 +1,166 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -99632,9 +102099,9 @@ diff -Nur linux-3.15/sound/arm/bcm2835.h linux-rpi/sound/arm/bcm2835.h
+void bcm2835_audio_flush_playback_buffers(bcm2835_alsa_stream_t * alsa_stream);
+
+#endif /* __SOUND_ARM_BCM2835_H */
-diff -Nur linux-3.15/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm.c
---- linux-3.15/sound/arm/bcm2835-pcm.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/bcm2835-pcm.c 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm.c
+--- linux-3.15.4/sound/arm/bcm2835-pcm.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/bcm2835-pcm.c 2014-07-07 10:46:02.000000000 +0200
@@ -0,0 +1,518 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -100154,9 +102621,9 @@ diff -Nur linux-3.15/sound/arm/bcm2835-pcm.c linux-rpi/sound/arm/bcm2835-pcm.c
+
+ return 0;
+}
-diff -Nur linux-3.15/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vchiq.c
---- linux-3.15/sound/arm/bcm2835-vchiq.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/bcm2835-vchiq.c 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vchiq.c
+--- linux-3.15.4/sound/arm/bcm2835-vchiq.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/bcm2835-vchiq.c 2014-07-07 10:46:02.000000000 +0200
@@ -0,0 +1,879 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -101037,9 +103504,9 @@ diff -Nur linux-3.15/sound/arm/bcm2835-vchiq.c linux-rpi/sound/arm/bcm2835-vchiq
+
+module_param(force_bulk, bool, 0444);
+MODULE_PARM_DESC(force_bulk, "Force use of vchiq bulk for audio");
-diff -Nur linux-3.15/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig
---- linux-3.15/sound/arm/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/arm/Kconfig 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig
+--- linux-3.15.4/sound/arm/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/arm/Kconfig 2014-04-13 17:33:26.000000000 +0200
@@ -39,5 +39,12 @@
Say Y or M if you want to support any AC97 codec attached to
the PXA2xx AC97 interface.
@@ -101053,9 +103520,9 @@ diff -Nur linux-3.15/sound/arm/Kconfig linux-rpi/sound/arm/Kconfig
+
endif # SND_ARM
-diff -Nur linux-3.15/sound/arm/Makefile linux-rpi/sound/arm/Makefile
---- linux-3.15/sound/arm/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/arm/Makefile 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/Makefile linux-rpi/sound/arm/Makefile
+--- linux-3.15.4/sound/arm/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/arm/Makefile 2014-07-07 10:46:02.000000000 +0200
@@ -14,3 +14,8 @@
obj-$(CONFIG_SND_PXA2XX_AC97) += snd-pxa2xx-ac97.o
@@ -101065,9 +103532,9 @@ diff -Nur linux-3.15/sound/arm/Makefile linux-rpi/sound/arm/Makefile
+snd-bcm2835-objs := bcm2835.o bcm2835-ctl.o bcm2835-pcm.o bcm2835-vchiq.o
+
+ccflags-y += -Idrivers/misc/vc04_services -Idrivers/misc/vc04_services/interface/vcos/linuxkernel -D__VCCOREVER__=0x04000000
-diff -Nur linux-3.15/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/vc_vchi_audioserv_defs.h
---- linux-3.15/sound/arm/vc_vchi_audioserv_defs.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/arm/vc_vchi_audioserv_defs.h 2014-06-11 21:03:57.000000000 +0200
+diff -Nur linux-3.15.4/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/vc_vchi_audioserv_defs.h
+--- linux-3.15.4/sound/arm/vc_vchi_audioserv_defs.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/arm/vc_vchi_audioserv_defs.h 2014-04-13 17:33:26.000000000 +0200
@@ -0,0 +1,116 @@
+/*****************************************************************************
+* Copyright 2011 Broadcom Corporation. All rights reserved.
@@ -101185,9 +103652,258 @@ diff -Nur linux-3.15/sound/arm/vc_vchi_audioserv_defs.h linux-rpi/sound/arm/vc_v
+} VC_AUDIO_MSG_T;
+
+#endif // _VC_AUDIO_DEFS_H_
-diff -Nur linux-3.15/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2708-i2s.c
---- linux-3.15/sound/soc/bcm/bcm2708-i2s.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/bcm/bcm2708-i2s.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/pci/hda/hda_intel.c linux-rpi/sound/pci/hda/hda_intel.c
+--- linux-3.15.4/sound/pci/hda/hda_intel.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/pci/hda/hda_intel.c 2014-07-07 10:46:02.000000000 +0200
+@@ -282,24 +282,6 @@
+ [AZX_DRIVER_GENERIC] = "HD-Audio Generic",
+ };
+
+-
+-/* Intel HSW/BDW display HDA controller Extended Mode registers.
+- * EM4 (M value) and EM5 (N Value) are used to convert CDClk (Core Display
+- * Clock) to 24MHz BCLK: BCLK = CDCLK * M / N
+- * The values will be lost when the display power well is disabled.
+- */
+-#define ICH6_REG_EM4 0x100c
+-#define ICH6_REG_EM5 0x1010
+-
+-struct hda_intel {
+- struct azx chip;
+-
+- /* HSW/BDW display HDA controller to restore BCLK from CDCLK */
+- unsigned int bclk_m;
+- unsigned int bclk_n;
+-};
+-
+-
+ #ifdef CONFIG_X86
+ static void __mark_pages_wc(struct azx *chip, struct snd_dma_buffer *dmab, bool on)
+ {
+@@ -592,22 +574,6 @@
+ #define azx_del_card_list(chip) /* NOP */
+ #endif /* CONFIG_PM */
+
+-static void haswell_save_bclk(struct azx *chip)
+-{
+- struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
+-
+- hda->bclk_m = azx_readw(chip, EM4);
+- hda->bclk_n = azx_readw(chip, EM5);
+-}
+-
+-static void haswell_restore_bclk(struct azx *chip)
+-{
+- struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
+-
+- azx_writew(chip, EM4, hda->bclk_m);
+- azx_writew(chip, EM5, hda->bclk_n);
+-}
+-
+ #if defined(CONFIG_PM_SLEEP) || defined(SUPPORT_VGA_SWITCHEROO)
+ /*
+ * power management
+@@ -634,13 +600,6 @@
+ free_irq(chip->irq, chip);
+ chip->irq = -1;
+ }
+-
+- /* Save BCLK M/N values before they become invalid in D3.
+- * Will test if display power well can be released now.
+- */
+- if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
+- haswell_save_bclk(chip);
+-
+ if (chip->msi)
+ pci_disable_msi(chip->pci);
+ pci_disable_device(pci);
+@@ -660,10 +619,8 @@
+ if (chip->disabled)
+ return 0;
+
+- if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
++ if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
+ hda_display_power(true);
+- haswell_restore_bclk(chip);
+- }
+ pci_set_power_state(pci, PCI_D0);
+ pci_restore_state(pci);
+ if (pci_enable_device(pci) < 0) {
+@@ -707,10 +664,8 @@
+ azx_stop_chip(chip);
+ azx_enter_link_reset(chip);
+ azx_clear_irq_pending(chip);
+- if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
+- haswell_save_bclk(chip);
++ if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
+ hda_display_power(false);
+- }
+ return 0;
+ }
+
+@@ -728,10 +683,8 @@
+ if (!(chip->driver_caps & AZX_DCAPS_PM_RUNTIME))
+ return 0;
+
+- if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
++ if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL)
+ hda_display_power(true);
+- haswell_restore_bclk(chip);
+- }
+
+ /* Read STATESTS before controller reset */
+ status = azx_readw(chip, STATESTS);
+@@ -924,8 +877,6 @@
+ static int azx_free(struct azx *chip)
+ {
+ struct pci_dev *pci = chip->pci;
+- struct hda_intel *hda = container_of(chip, struct hda_intel, chip);
+-
+ int i;
+
+ if ((chip->driver_caps & AZX_DCAPS_PM_RUNTIME)
+@@ -973,7 +924,7 @@
+ hda_display_power(false);
+ hda_i915_exit();
+ }
+- kfree(hda);
++ kfree(chip);
+
+ return 0;
+ }
+@@ -1217,7 +1168,6 @@
+ static struct snd_device_ops ops = {
+ .dev_free = azx_dev_free,
+ };
+- struct hda_intel *hda;
+ struct azx *chip;
+ int err;
+
+@@ -1227,14 +1177,13 @@
+ if (err < 0)
+ return err;
+
+- hda = kzalloc(sizeof(*hda), GFP_KERNEL);
+- if (!hda) {
+- dev_err(card->dev, "Cannot allocate hda\n");
++ chip = kzalloc(sizeof(*chip), GFP_KERNEL);
++ if (!chip) {
++ dev_err(card->dev, "Cannot allocate chip\n");
+ pci_disable_device(pci);
+ return -ENOMEM;
+ }
+
+- chip = &hda->chip;
+ spin_lock_init(&chip->reg_lock);
+ mutex_init(&chip->open_mutex);
+ chip->card = card;
+diff -Nur linux-3.15.4/sound/pci/hda/patch_hdmi.c linux-rpi/sound/pci/hda/patch_hdmi.c
+--- linux-3.15.4/sound/pci/hda/patch_hdmi.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/pci/hda/patch_hdmi.c 2014-07-07 10:46:02.000000000 +0200
+@@ -2208,7 +2208,7 @@
+ struct hdmi_spec *spec = codec->spec;
+ int pin_idx;
+
+- codec->patch_ops.init(codec);
++ generic_hdmi_init(codec);
+ snd_hda_codec_resume_amp(codec);
+ snd_hda_codec_resume_cache(codec);
+
+diff -Nur linux-3.15.4/sound/pci/hda/patch_sigmatel.c linux-rpi/sound/pci/hda/patch_sigmatel.c
+--- linux-3.15.4/sound/pci/hda/patch_sigmatel.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/pci/hda/patch_sigmatel.c 2014-07-07 10:46:02.000000000 +0200
+@@ -122,12 +122,6 @@
+ };
+
+ enum {
+- STAC_92HD95_HP_LED,
+- STAC_92HD95_HP_BASS,
+- STAC_92HD95_MODELS
+-};
+-
+-enum {
+ STAC_925x_REF,
+ STAC_M1,
+ STAC_M1_2,
+@@ -4134,48 +4128,6 @@
+ {} /* terminator */
+ };
+
+-static void stac92hd95_fixup_hp_led(struct hda_codec *codec,
+- const struct hda_fixup *fix, int action)
+-{
+- struct sigmatel_spec *spec = codec->spec;
+-
+- if (action != HDA_FIXUP_ACT_PRE_PROBE)
+- return;
+-
+- if (find_mute_led_cfg(codec, spec->default_polarity))
+- codec_dbg(codec, "mute LED gpio %d polarity %d\n",
+- spec->gpio_led,
+- spec->gpio_led_polarity);
+-}
+-
+-static const struct hda_fixup stac92hd95_fixups[] = {
+- [STAC_92HD95_HP_LED] = {
+- .type = HDA_FIXUP_FUNC,
+- .v.func = stac92hd95_fixup_hp_led,
+- },
+- [STAC_92HD95_HP_BASS] = {
+- .type = HDA_FIXUP_VERBS,
+- .v.verbs = (const struct hda_verb[]) {
+- {0x1a, 0x795, 0x00}, /* HPF to 100Hz */
+- {}
+- },
+- .chained = true,
+- .chain_id = STAC_92HD95_HP_LED,
+- },
+-};
+-
+-static const struct snd_pci_quirk stac92hd95_fixup_tbl[] = {
+- SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1911, "HP Spectre 13", STAC_92HD95_HP_BASS),
+- {} /* terminator */
+-};
+-
+-static const struct hda_model_fixup stac92hd95_models[] = {
+- { .id = STAC_92HD95_HP_LED, .name = "hp-led" },
+- { .id = STAC_92HD95_HP_BASS, .name = "hp-bass" },
+- {}
+-};
+-
+-
+ static int stac_parse_auto_config(struct hda_codec *codec)
+ {
+ struct sigmatel_spec *spec = codec->spec;
+@@ -4628,16 +4580,10 @@
+ spec->gen.beep_nid = 0x19; /* digital beep */
+ spec->pwr_nids = stac92hd95_pwr_nids;
+ spec->num_pwrs = ARRAY_SIZE(stac92hd95_pwr_nids);
+- spec->default_polarity = 0;
++ spec->default_polarity = -1; /* no default cfg */
+
+ codec->patch_ops = stac_patch_ops;
+
+- snd_hda_pick_fixup(codec, stac92hd95_models, stac92hd95_fixup_tbl,
+- stac92hd95_fixups);
+- snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
+-
+- stac_setup_gpio(codec);
+-
+ err = stac_parse_auto_config(codec);
+ if (err < 0) {
+ stac_free(codec);
+@@ -4646,8 +4592,6 @@
+
+ codec->proc_widget_hook = stac92hd_proc_hook;
+
+- snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PROBE);
+-
+ return 0;
+ }
+
+diff -Nur linux-3.15.4/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2708-i2s.c
+--- linux-3.15.4/sound/soc/bcm/bcm2708-i2s.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/bcm/bcm2708-i2s.c 2014-07-07 10:46:03.000000000 +0200
@@ -0,0 +1,946 @@
+/*
+ * ALSA SoC I2S Audio Layer for Broadcom BCM2708 SoC
@@ -102135,9 +104851,9 @@ diff -Nur linux-3.15/sound/soc/bcm/bcm2708-i2s.c linux-rpi/sound/soc/bcm/bcm2708
+MODULE_DESCRIPTION("BCM2708 I2S interface");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hifiberry_dac.c
---- linux-3.15/sound/soc/bcm/hifiberry_dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/bcm/hifiberry_dac.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hifiberry_dac.c
+--- linux-3.15.4/sound/soc/bcm/hifiberry_dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/bcm/hifiberry_dac.c 2014-04-13 17:33:28.000000000 +0200
@@ -0,0 +1,100 @@
+/*
+ * ASoC Driver for HifiBerry DAC
@@ -102239,9 +104955,9 @@ diff -Nur linux-3.15/sound/soc/bcm/hifiberry_dac.c linux-rpi/sound/soc/bcm/hifib
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/hifiberry_digi.c
---- linux-3.15/sound/soc/bcm/hifiberry_digi.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/bcm/hifiberry_digi.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/hifiberry_digi.c
+--- linux-3.15.4/sound/soc/bcm/hifiberry_digi.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/bcm/hifiberry_digi.c 2014-07-07 10:46:03.000000000 +0200
@@ -0,0 +1,153 @@
+/*
+ * ASoC Driver for HifiBerry Digi
@@ -102396,9 +105112,9 @@ diff -Nur linux-3.15/sound/soc/bcm/hifiberry_digi.c linux-rpi/sound/soc/bcm/hifi
+MODULE_AUTHOR("Daniel Matuschek <info@crazy-audio.com>");
+MODULE_DESCRIPTION("ASoC Driver for HifiBerry Digi");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqaudio-dac.c
---- linux-3.15/sound/soc/bcm/iqaudio-dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/bcm/iqaudio-dac.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqaudio-dac.c
+--- linux-3.15.4/sound/soc/bcm/iqaudio-dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/bcm/iqaudio-dac.c 2014-07-07 10:46:03.000000000 +0200
@@ -0,0 +1,111 @@
+/*
+ * ASoC Driver for IQaudIO DAC
@@ -102511,9 +105227,9 @@ diff -Nur linux-3.15/sound/soc/bcm/iqaudio-dac.c linux-rpi/sound/soc/bcm/iqaudio
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig
---- linux-3.15/sound/soc/bcm/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/bcm/Kconfig 2014-06-11 21:05:44.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig
+--- linux-3.15.4/sound/soc/bcm/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/bcm/Kconfig 2014-07-07 10:46:03.000000000 +0200
@@ -7,3 +7,42 @@
Say Y or M if you want to add support for codecs attached to
the BCM2835 I2S interface. You will also need
@@ -102557,9 +105273,9 @@ diff -Nur linux-3.15/sound/soc/bcm/Kconfig linux-rpi/sound/soc/bcm/Kconfig
+ select SND_SOC_PCM512x
+ help
+ Say Y or M if you want to add support for IQaudIO-DAC.
-diff -Nur linux-3.15/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile
---- linux-3.15/sound/soc/bcm/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/bcm/Makefile 2014-06-11 21:05:44.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile
+--- linux-3.15.4/sound/soc/bcm/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/bcm/Makefile 2014-07-07 10:46:03.000000000 +0200
@@ -3,3 +3,18 @@
obj-$(CONFIG_SND_BCM2835_SOC_I2S) += snd-soc-bcm2835-i2s.o
@@ -102579,9 +105295,9 @@ diff -Nur linux-3.15/sound/soc/bcm/Makefile linux-rpi/sound/soc/bcm/Makefile
+obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI) += snd-soc-hifiberry-digi.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
+obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
-diff -Nur linux-3.15/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac.c
---- linux-3.15/sound/soc/bcm/rpi-dac.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/bcm/rpi-dac.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac.c
+--- linux-3.15.4/sound/soc/bcm/rpi-dac.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/bcm/rpi-dac.c 2014-04-13 17:33:28.000000000 +0200
@@ -0,0 +1,97 @@
+/*
+ * ASoC Driver for RPi-DAC.
@@ -102680,9 +105396,9 @@ diff -Nur linux-3.15/sound/soc/bcm/rpi-dac.c linux-rpi/sound/soc/bcm/rpi-dac.c
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for RPi-DAC");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kconfig
---- linux-3.15/sound/soc/codecs/Kconfig 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/Kconfig 2014-06-11 21:05:44.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kconfig
+--- linux-3.15.4/sound/soc/codecs/Kconfig 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/Kconfig 2014-07-07 10:46:03.000000000 +0200
@@ -69,6 +69,9 @@
select SND_SOC_PCM3008
select SND_SOC_PCM512x_I2C if I2C
@@ -102709,9 +105425,9 @@ diff -Nur linux-3.15/sound/soc/codecs/Kconfig linux-rpi/sound/soc/codecs/Kconfig
config SND_SOC_RT5631
tristate
-diff -Nur linux-3.15/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Makefile
---- linux-3.15/sound/soc/codecs/Makefile 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/Makefile 2014-06-11 21:05:44.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Makefile
+--- linux-3.15.4/sound/soc/codecs/Makefile 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/Makefile 2014-07-07 10:46:03.000000000 +0200
@@ -58,6 +58,9 @@
snd-soc-pcm512x-objs := pcm512x.o
snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o
@@ -102732,9 +105448,9 @@ diff -Nur linux-3.15/sound/soc/codecs/Makefile linux-rpi/sound/soc/codecs/Makefi
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
obj-$(CONFIG_SND_SOC_SGTL5000) += snd-soc-sgtl5000.o
-diff -Nur linux-3.15/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/pcm1794a.c
---- linux-3.15/sound/soc/codecs/pcm1794a.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/codecs/pcm1794a.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/pcm1794a.c
+--- linux-3.15.4/sound/soc/codecs/pcm1794a.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/codecs/pcm1794a.c 2014-04-13 17:33:29.000000000 +0200
@@ -0,0 +1,62 @@
+/*
+ * Driver for the PCM1794A codec
@@ -102798,9 +105514,9 @@ diff -Nur linux-3.15/sound/soc/codecs/pcm1794a.c linux-rpi/sound/soc/codecs/pcm1
+MODULE_DESCRIPTION("ASoC PCM1794A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/pcm5102a.c
---- linux-3.15/sound/soc/codecs/pcm5102a.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-rpi/sound/soc/codecs/pcm5102a.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/pcm5102a.c
+--- linux-3.15.4/sound/soc/codecs/pcm5102a.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/sound/soc/codecs/pcm5102a.c 2014-04-13 17:33:29.000000000 +0200
@@ -0,0 +1,63 @@
+/*
+ * Driver for the PCM5102A codec
@@ -102865,9 +105581,9 @@ diff -Nur linux-3.15/sound/soc/codecs/pcm5102a.c linux-rpi/sound/soc/codecs/pcm5
+MODULE_DESCRIPTION("ASoC PCM5102A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff -Nur linux-3.15/sound/soc/codecs/pcm512x.c linux-rpi/sound/soc/codecs/pcm512x.c
---- linux-3.15/sound/soc/codecs/pcm512x.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/pcm512x.c 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/pcm512x.c linux-rpi/sound/soc/codecs/pcm512x.c
+--- linux-3.15.4/sound/soc/codecs/pcm512x.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/pcm512x.c 2014-07-07 10:46:03.000000000 +0200
@@ -18,9 +18,11 @@
#include <linux/init.h>
#include <linux/module.h>
@@ -103248,9 +105964,9 @@ diff -Nur linux-3.15/sound/soc/codecs/pcm512x.c linux-rpi/sound/soc/codecs/pcm51
MODULE_DESCRIPTION("ASoC PCM512x codec driver");
MODULE_AUTHOR("Mark Brown <broonie@linaro.org>");
-diff -Nur linux-3.15/sound/soc/codecs/pcm512x.h linux-rpi/sound/soc/codecs/pcm512x.h
---- linux-3.15/sound/soc/codecs/pcm512x.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/pcm512x.h 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/pcm512x.h linux-rpi/sound/soc/codecs/pcm512x.h
+--- linux-3.15.4/sound/soc/codecs/pcm512x.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/pcm512x.h 2014-04-13 17:33:29.000000000 +0200
@@ -17,81 +17,66 @@
#ifndef _SND_SOC_PCM512X
#define _SND_SOC_PCM512X
@@ -103408,9 +106124,9 @@ diff -Nur linux-3.15/sound/soc/codecs/pcm512x.h linux-rpi/sound/soc/codecs/pcm51
-void pcm512x_remove(struct device *dev);
-
#endif
-diff -Nur linux-3.15/sound/soc/codecs/wm8804.c linux-rpi/sound/soc/codecs/wm8804.c
---- linux-3.15/sound/soc/codecs/wm8804.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/wm8804.c 2014-06-11 21:05:44.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/wm8804.c linux-rpi/sound/soc/codecs/wm8804.c
+--- linux-3.15.4/sound/soc/codecs/wm8804.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/wm8804.c 2014-07-07 10:46:03.000000000 +0200
@@ -63,6 +63,7 @@
struct regmap *regmap;
struct regulator_bulk_data supplies[WM8804_NUM_SUPPLIES];
@@ -103496,9 +106212,9 @@ diff -Nur linux-3.15/sound/soc/codecs/wm8804.c linux-rpi/sound/soc/codecs/wm8804
.controls = wm8804_snd_controls,
.num_controls = ARRAY_SIZE(wm8804_snd_controls),
-diff -Nur linux-3.15/sound/soc/codecs/wm8804.h linux-rpi/sound/soc/codecs/wm8804.h
---- linux-3.15/sound/soc/codecs/wm8804.h 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/codecs/wm8804.h 2014-06-11 21:03:58.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/codecs/wm8804.h linux-rpi/sound/soc/codecs/wm8804.h
+--- linux-3.15.4/sound/soc/codecs/wm8804.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/codecs/wm8804.h 2014-04-13 17:33:29.000000000 +0200
@@ -57,5 +57,9 @@
#define WM8804_CLKOUT_SRC_OSCCLK 4
@@ -103509,9 +106225,9 @@ diff -Nur linux-3.15/sound/soc/codecs/wm8804.h linux-rpi/sound/soc/codecs/wm8804
+#define WM8804_MCLKDIV_128FS 1
#endif /* _WM8804_H */
-diff -Nur linux-3.15/sound/soc/soc-core.c linux-rpi/sound/soc/soc-core.c
---- linux-3.15/sound/soc/soc-core.c 2014-06-08 20:19:54.000000000 +0200
-+++ linux-rpi/sound/soc/soc-core.c 2014-06-11 21:05:45.000000000 +0200
+diff -Nur linux-3.15.4/sound/soc/soc-core.c linux-rpi/sound/soc/soc-core.c
+--- linux-3.15.4/sound/soc/soc-core.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/soc/soc-core.c 2014-07-07 10:46:05.000000000 +0200
@@ -3024,8 +3024,8 @@
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
@@ -103570,3 +106286,94 @@ diff -Nur linux-3.15/sound/soc/soc-core.c linux-rpi/sound/soc/soc-core.c
}
return 0;
+diff -Nur linux-3.15.4/sound/usb/card.c linux-rpi/sound/usb/card.c
+--- linux-3.15.4/sound/usb/card.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/usb/card.c 2014-07-07 10:46:06.000000000 +0200
+@@ -307,11 +307,6 @@
+
+ static int snd_usb_audio_free(struct snd_usb_audio *chip)
+ {
+- struct list_head *p, *n;
+-
+- list_for_each_safe(p, n, &chip->ep_list)
+- snd_usb_endpoint_free(p);
+-
+ mutex_destroy(&chip->mutex);
+ kfree(chip);
+ return 0;
+@@ -590,7 +585,7 @@
+ struct snd_usb_audio *chip)
+ {
+ struct snd_card *card;
+- struct list_head *p;
++ struct list_head *p, *n;
+
+ if (chip == (void *)-1L)
+ return;
+@@ -603,16 +598,14 @@
+ mutex_lock(&register_mutex);
+ chip->num_interfaces--;
+ if (chip->num_interfaces <= 0) {
+- struct snd_usb_endpoint *ep;
+-
+ snd_card_disconnect(card);
+ /* release the pcm resources */
+ list_for_each(p, &chip->pcm_list) {
+ snd_usb_stream_disconnect(p);
+ }
+ /* release the endpoint resources */
+- list_for_each_entry(ep, &chip->ep_list, list) {
+- snd_usb_endpoint_release(ep);
++ list_for_each_safe(p, n, &chip->ep_list) {
++ snd_usb_endpoint_free(p);
+ }
+ /* release the midi resources */
+ list_for_each(p, &chip->midi_list) {
+diff -Nur linux-3.15.4/sound/usb/endpoint.c linux-rpi/sound/usb/endpoint.c
+--- linux-3.15.4/sound/usb/endpoint.c 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/usb/endpoint.c 2014-07-07 10:46:06.000000000 +0200
+@@ -987,30 +987,19 @@
+ }
+
+ /**
+- * snd_usb_endpoint_release: Tear down an snd_usb_endpoint
+- *
+- * @ep: the endpoint to release
+- *
+- * This function does not care for the endpoint's use count but will tear
+- * down all the streaming URBs immediately.
+- */
+-void snd_usb_endpoint_release(struct snd_usb_endpoint *ep)
+-{
+- release_urbs(ep, 1);
+-}
+-
+-/**
+ * snd_usb_endpoint_free: Free the resources of an snd_usb_endpoint
+ *
+ * @ep: the list header of the endpoint to free
+ *
+- * This free all resources of the given ep.
++ * This function does not care for the endpoint's use count but will tear
++ * down all the streaming URBs immediately and free all resources.
+ */
+ void snd_usb_endpoint_free(struct list_head *head)
+ {
+ struct snd_usb_endpoint *ep;
+
+ ep = list_entry(head, struct snd_usb_endpoint, list);
++ release_urbs(ep, 1);
+ kfree(ep);
+ }
+
+diff -Nur linux-3.15.4/sound/usb/endpoint.h linux-rpi/sound/usb/endpoint.h
+--- linux-3.15.4/sound/usb/endpoint.h 2014-07-07 03:59:25.000000000 +0200
++++ linux-rpi/sound/usb/endpoint.h 2014-07-07 10:46:06.000000000 +0200
+@@ -23,7 +23,6 @@
+ void snd_usb_endpoint_sync_pending_stop(struct snd_usb_endpoint *ep);
+ int snd_usb_endpoint_activate(struct snd_usb_endpoint *ep);
+ void snd_usb_endpoint_deactivate(struct snd_usb_endpoint *ep);
+-void snd_usb_endpoint_release(struct snd_usb_endpoint *ep);
+ void snd_usb_endpoint_free(struct list_head *head);
+
+ int snd_usb_endpoint_implicit_feedback_sink(struct snd_usb_endpoint *ep);
diff --git a/target/config/Config.in.kernelversion.choice b/target/config/Config.in.kernelversion.choice
index a37b64a2d..9d53470a4 100644
--- a/target/config/Config.in.kernelversion.choice
+++ b/target/config/Config.in.kernelversion.choice
@@ -4,10 +4,10 @@
choice
prompt "Kernel Version"
depends on !ADK_CHOOSE_TARGET_ARCH && !ADK_CHOOSE_TARGET_SYSTEM && ADK_TARGET_KERNEL_CUSTOMISING
-default ADK_KERNEL_VERSION_3_15_2
+default ADK_KERNEL_VERSION_3_15_4
-config ADK_KERNEL_VERSION_3_15_2
- prompt "3.15.2"
+config ADK_KERNEL_VERSION_3_15_4
+ prompt "3.15.4"
depends on !ADK_TARGET_SYSTEM_MIKROTIK_RB4XX
boolean
select ADK_KERNEL_VERSION_3_15
diff --git a/target/config/Config.in.kernelversion.default b/target/config/Config.in.kernelversion.default
index 4d0116ff6..325c4951d 100644
--- a/target/config/Config.in.kernelversion.default
+++ b/target/config/Config.in.kernelversion.default
@@ -18,7 +18,7 @@ config ADK_KERNEL_VERSION_3_4
config ADK_KERNEL_VERSION
string
- default "3.15.2" if ADK_KERNEL_VERSION_3_15_2
+ default "3.15.4" if ADK_KERNEL_VERSION_3_15_4
default "3.14.9" if ADK_KERNEL_VERSION_3_14_9
default "3.12.23" if ADK_KERNEL_VERSION_3_12_23
default "3.10.45" if ADK_KERNEL_VERSION_3_10_45
diff --git a/target/linux/patches/3.15.2/bsd-compatibility.patch b/target/linux/patches/3.15.4/bsd-compatibility.patch
index b954b658f..b954b658f 100644
--- a/target/linux/patches/3.15.2/bsd-compatibility.patch
+++ b/target/linux/patches/3.15.4/bsd-compatibility.patch
diff --git a/target/linux/patches/3.15.2/cleankernel.patch b/target/linux/patches/3.15.4/cleankernel.patch
index d8c055dc3..d8c055dc3 100644
--- a/target/linux/patches/3.15.2/cleankernel.patch
+++ b/target/linux/patches/3.15.4/cleankernel.patch
diff --git a/target/linux/patches/3.15.2/defaults.patch b/target/linux/patches/3.15.4/defaults.patch
index 6cdca084e..6cdca084e 100644
--- a/target/linux/patches/3.15.2/defaults.patch
+++ b/target/linux/patches/3.15.4/defaults.patch
diff --git a/target/linux/patches/3.15.2/disable-netfilter.patch b/target/linux/patches/3.15.4/disable-netfilter.patch
index 7b1ca013a..7b1ca013a 100644
--- a/target/linux/patches/3.15.2/disable-netfilter.patch
+++ b/target/linux/patches/3.15.4/disable-netfilter.patch
diff --git a/target/linux/patches/3.15.2/export-symbol-for-exmap.patch b/target/linux/patches/3.15.4/export-symbol-for-exmap.patch
index 4f0fc8449..4f0fc8449 100644
--- a/target/linux/patches/3.15.2/export-symbol-for-exmap.patch
+++ b/target/linux/patches/3.15.4/export-symbol-for-exmap.patch
diff --git a/target/linux/patches/3.15.2/gemalto.patch b/target/linux/patches/3.15.4/gemalto.patch
index 65f7af1d7..65f7af1d7 100644
--- a/target/linux/patches/3.15.2/gemalto.patch
+++ b/target/linux/patches/3.15.4/gemalto.patch
diff --git a/target/linux/patches/3.15.2/initramfs-nosizelimit.patch b/target/linux/patches/3.15.4/initramfs-nosizelimit.patch
index 40d2f6bd8..40d2f6bd8 100644
--- a/target/linux/patches/3.15.2/initramfs-nosizelimit.patch
+++ b/target/linux/patches/3.15.4/initramfs-nosizelimit.patch
diff --git a/target/linux/patches/3.15.2/lemote-rfkill.patch b/target/linux/patches/3.15.4/lemote-rfkill.patch
index a61488434..a61488434 100644
--- a/target/linux/patches/3.15.2/lemote-rfkill.patch
+++ b/target/linux/patches/3.15.4/lemote-rfkill.patch
diff --git a/target/linux/patches/3.15.2/lz4.patch b/target/linux/patches/3.15.4/lz4.patch
index 3106015ab..3106015ab 100644
--- a/target/linux/patches/3.15.2/lz4.patch
+++ b/target/linux/patches/3.15.4/lz4.patch
diff --git a/target/linux/patches/3.15.2/microblaze-axi.patch b/target/linux/patches/3.15.4/microblaze-axi.patch
index 1a4b17d8c..1a4b17d8c 100644
--- a/target/linux/patches/3.15.2/microblaze-axi.patch
+++ b/target/linux/patches/3.15.4/microblaze-axi.patch
diff --git a/target/linux/patches/3.15.2/microblaze-ethernet.patch b/target/linux/patches/3.15.4/microblaze-ethernet.patch
index 742ab477e..742ab477e 100644
--- a/target/linux/patches/3.15.2/microblaze-ethernet.patch
+++ b/target/linux/patches/3.15.4/microblaze-ethernet.patch
diff --git a/target/linux/patches/3.15.2/mkpiggy.patch b/target/linux/patches/3.15.4/mkpiggy.patch
index 751678b74..751678b74 100644
--- a/target/linux/patches/3.15.2/mkpiggy.patch
+++ b/target/linux/patches/3.15.4/mkpiggy.patch
diff --git a/target/linux/patches/3.15.2/mtd-rootfs.patch b/target/linux/patches/3.15.4/mtd-rootfs.patch
index 775d5fc80..775d5fc80 100644
--- a/target/linux/patches/3.15.2/mtd-rootfs.patch
+++ b/target/linux/patches/3.15.4/mtd-rootfs.patch
diff --git a/target/linux/patches/3.15.2/nfsv3-tcp.patch b/target/linux/patches/3.15.4/nfsv3-tcp.patch
index d5e07e1c2..d5e07e1c2 100644
--- a/target/linux/patches/3.15.2/nfsv3-tcp.patch
+++ b/target/linux/patches/3.15.4/nfsv3-tcp.patch
diff --git a/target/linux/patches/3.15.2/non-static.patch b/target/linux/patches/3.15.4/non-static.patch
index a967703d0..a967703d0 100644
--- a/target/linux/patches/3.15.2/non-static.patch
+++ b/target/linux/patches/3.15.4/non-static.patch
diff --git a/target/linux/patches/3.15.2/patch-fblogo b/target/linux/patches/3.15.4/patch-fblogo
index f1fad64c1..f1fad64c1 100644
--- a/target/linux/patches/3.15.2/patch-fblogo
+++ b/target/linux/patches/3.15.4/patch-fblogo
diff --git a/target/linux/patches/3.15.2/patch-yaffs2 b/target/linux/patches/3.15.4/patch-yaffs2
index bb244c7ca..bb244c7ca 100644
--- a/target/linux/patches/3.15.2/patch-yaffs2
+++ b/target/linux/patches/3.15.4/patch-yaffs2
diff --git a/target/linux/patches/3.15.2/ppc64-missing-zlib.patch b/target/linux/patches/3.15.4/ppc64-missing-zlib.patch
index c6e0616be..c6e0616be 100644
--- a/target/linux/patches/3.15.2/ppc64-missing-zlib.patch
+++ b/target/linux/patches/3.15.4/ppc64-missing-zlib.patch
diff --git a/target/linux/patches/3.15.2/regmap-boolean.patch b/target/linux/patches/3.15.4/regmap-boolean.patch
index b61c4792a..b61c4792a 100644
--- a/target/linux/patches/3.15.2/regmap-boolean.patch
+++ b/target/linux/patches/3.15.4/regmap-boolean.patch
diff --git a/target/linux/patches/3.15.2/relocs.patch b/target/linux/patches/3.15.4/relocs.patch
index 69a7c88a9..69a7c88a9 100644
--- a/target/linux/patches/3.15.2/relocs.patch
+++ b/target/linux/patches/3.15.4/relocs.patch
diff --git a/target/linux/patches/3.15.2/sgidefs.patch b/target/linux/patches/3.15.4/sgidefs.patch
index f00a284d9..f00a284d9 100644
--- a/target/linux/patches/3.15.2/sgidefs.patch
+++ b/target/linux/patches/3.15.4/sgidefs.patch
diff --git a/target/linux/patches/3.15.2/sortext.patch b/target/linux/patches/3.15.4/sortext.patch
index 8fd4e1d6b..8fd4e1d6b 100644
--- a/target/linux/patches/3.15.2/sortext.patch
+++ b/target/linux/patches/3.15.4/sortext.patch
diff --git a/target/linux/patches/3.15.2/startup.patch b/target/linux/patches/3.15.4/startup.patch
index d396b75e4..d396b75e4 100644
--- a/target/linux/patches/3.15.2/startup.patch
+++ b/target/linux/patches/3.15.4/startup.patch
diff --git a/target/linux/patches/3.15.2/tcp-fastopen.patch b/target/linux/patches/3.15.4/tcp-fastopen.patch
index 982d83305..982d83305 100644
--- a/target/linux/patches/3.15.2/tcp-fastopen.patch
+++ b/target/linux/patches/3.15.4/tcp-fastopen.patch
diff --git a/target/linux/patches/3.15.2/wlan-cf.patch b/target/linux/patches/3.15.4/wlan-cf.patch
index fc20759e2..fc20759e2 100644
--- a/target/linux/patches/3.15.2/wlan-cf.patch
+++ b/target/linux/patches/3.15.4/wlan-cf.patch
diff --git a/target/linux/patches/3.15.2/xargs.patch b/target/linux/patches/3.15.4/xargs.patch
index 2c7b3df59..2c7b3df59 100644
--- a/target/linux/patches/3.15.2/xargs.patch
+++ b/target/linux/patches/3.15.4/xargs.patch
diff --git a/target/mips/mikrotik-rb532/patches/3.15.2/rb532-cfgfs.patch b/target/mips/mikrotik-rb532/patches/3.15.4/rb532-cfgfs.patch
index 36ce30d91..36ce30d91 100644
--- a/target/mips/mikrotik-rb532/patches/3.15.2/rb532-cfgfs.patch
+++ b/target/mips/mikrotik-rb532/patches/3.15.4/rb532-cfgfs.patch
diff --git a/target/mips/mikrotik-rb532/patches/3.15.2/rb532-serial.patch b/target/mips/mikrotik-rb532/patches/3.15.4/rb532-serial.patch
index 6c6951895..6c6951895 100644
--- a/target/mips/mikrotik-rb532/patches/3.15.2/rb532-serial.patch
+++ b/target/mips/mikrotik-rb532/patches/3.15.4/rb532-serial.patch