summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2014-04-24 16:15:29 +0200
committerWaldemar Brodkorb <wbx@openadk.org>2014-04-24 16:15:29 +0200
commit94c82fcf15415a015b602a58a26880bb0ad97da4 (patch)
tree828a33bd363bfdbc58edbb45cdb2d8e45150d5d9 /target
parent839ae24b726ab65e1c4cff172f29e24e9f3ee5cd (diff)
update 3.12 kernel
Diffstat (limited to 'target')
-rw-r--r--target/arm/raspberry-pi/patches/3.12.18/raspberry-pi.patch (renamed from target/linux/patches/3.12.14/raspberry.patch)12640
-rw-r--r--target/linux/config/Config.in.netfilter.ip48
-rw-r--r--target/linux/patches/3.12.18/bsd-compatibility.patch (renamed from target/linux/patches/3.12.14/bsd-compatibility.patch)0
-rw-r--r--target/linux/patches/3.12.18/defaults.patch (renamed from target/linux/patches/3.12.14/defaults.patch)0
-rw-r--r--target/linux/patches/3.12.18/disable-netfilter.patch (renamed from target/linux/patches/3.12.14/disable-netfilter.patch)0
-rw-r--r--target/linux/patches/3.12.18/export-symbol-for-exmap.patch (renamed from target/linux/patches/3.12.14/export-symbol-for-exmap.patch)0
-rw-r--r--target/linux/patches/3.12.18/gemalto.patch (renamed from target/linux/patches/3.12.14/gemalto.patch)0
-rw-r--r--target/linux/patches/3.12.18/lemote-rfkill.patch (renamed from target/linux/patches/3.12.14/lemote-rfkill.patch)0
-rw-r--r--target/linux/patches/3.12.18/microblaze-ethernet.patch (renamed from target/linux/patches/3.12.14/microblaze-ethernet.patch)0
-rw-r--r--target/linux/patches/3.12.18/microblaze-setup.patch (renamed from target/linux/patches/3.12.14/microblaze-setup.patch)0
-rw-r--r--target/linux/patches/3.12.18/mips-lzo-fix.patch (renamed from target/linux/patches/3.12.14/mips-lzo-fix.patch)0
-rw-r--r--target/linux/patches/3.12.18/mtd-rootfs.patch (renamed from target/linux/patches/3.12.14/mtd-rootfs.patch)0
-rw-r--r--target/linux/patches/3.12.18/non-static.patch (renamed from target/linux/patches/3.12.14/non-static.patch)0
-rw-r--r--target/linux/patches/3.12.18/ppc64-missing-zlib.patch (renamed from target/linux/patches/3.12.14/ppc64-missing-zlib.patch)0
-rw-r--r--target/linux/patches/3.12.18/startup.patch (renamed from target/linux/patches/3.12.14/startup.patch)0
-rw-r--r--target/linux/patches/3.12.18/usb-defaults-off.patch (renamed from target/linux/patches/3.12.14/usb-defaults-off.patch)0
-rw-r--r--target/linux/patches/3.12.18/uuid.patch (renamed from target/linux/patches/3.12.14/uuid.patch)0
-rw-r--r--target/linux/patches/3.12.18/vga-cons-default-off.patch (renamed from target/linux/patches/3.12.14/vga-cons-default-off.patch)0
-rw-r--r--target/linux/patches/3.12.18/wlan-cf.patch (renamed from target/linux/patches/3.12.14/wlan-cf.patch)0
-rw-r--r--target/linux/patches/3.12.18/xargs.patch (renamed from target/linux/patches/3.12.14/xargs.patch)0
-rw-r--r--target/linux/patches/3.12.18/zlib-inflate.patch (renamed from target/linux/patches/3.12.14/zlib-inflate.patch)0
21 files changed, 9161 insertions, 3487 deletions
diff --git a/target/linux/patches/3.12.14/raspberry.patch b/target/arm/raspberry-pi/patches/3.12.18/raspberry-pi.patch
index c306f4faf..c5e93d3fb 100644
--- a/target/linux/patches/3.12.14/raspberry.patch
+++ b/target/arm/raspberry-pi/patches/3.12.18/raspberry-pi.patch
@@ -1,6 +1,57 @@
-diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_cutdown_defconfig linux-raspberry-pi/arch/arm/configs/bcmrpi_cutdown_defconfig
---- linux-3.12.13/arch/arm/configs/bcmrpi_cutdown_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/configs/bcmrpi_cutdown_defconfig 2014-03-11 17:51:00.000000000 +0100
+diff -Nur linux-3.12.18/arch/arc/boot/dts/nsimosci.dts linux-rpi/arch/arc/boot/dts/nsimosci.dts
+--- linux-3.12.18/arch/arc/boot/dts/nsimosci.dts 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arc/boot/dts/nsimosci.dts 2014-04-24 16:04:29.363023127 +0200
+@@ -11,16 +11,13 @@
+
+ / {
+ compatible = "snps,nsimosci";
+- clock-frequency = <20000000>; /* 20 MHZ */
++ clock-frequency = <80000000>; /* 80 MHZ */
+ #address-cells = <1>;
+ #size-cells = <1>;
+ interrupt-parent = <&intc>;
+
+ chosen {
+- /* this is for console on PGU */
+- /* bootargs = "console=tty0 consoleblank=0"; */
+- /* this is for console on serial */
+- bootargs = "earlycon=uart8250,mmio32,0xc0000000,115200n8 console=ttyS0,115200n8 consoleblank=0 debug";
++ bootargs = "console=tty0 consoleblank=0";
+ };
+
+ aliases {
+@@ -47,14 +44,15 @@
+ };
+
+ uart0: serial@c0000000 {
+- compatible = "ns8250";
++ compatible = "snps,dw-apb-uart";
+ reg = <0xc0000000 0x2000>;
+ interrupts = <11>;
++ #clock-frequency = <80000000>;
+ clock-frequency = <3686400>;
+ baud = <115200>;
+ reg-shift = <2>;
+ reg-io-width = <4>;
+- no-loopback-test = <1>;
++ status = "okay";
+ };
+
+ pgu0: pgu@c9000000 {
+diff -Nur linux-3.12.18/arch/arc/configs/nsimosci_defconfig linux-rpi/arch/arc/configs/nsimosci_defconfig
+--- linux-3.12.18/arch/arc/configs/nsimosci_defconfig 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arc/configs/nsimosci_defconfig 2014-04-24 16:04:29.363023127 +0200
+@@ -54,7 +54,6 @@
+ CONFIG_SERIAL_8250=y
+ CONFIG_SERIAL_8250_CONSOLE=y
+ CONFIG_SERIAL_8250_DW=y
+-CONFIG_SERIAL_OF_PLATFORM=y
+ CONFIG_SERIAL_ARC=y
+ CONFIG_SERIAL_ARC_CONSOLE=y
+ # CONFIG_HW_RANDOM is not set
+diff -Nur linux-3.12.18/arch/arm/configs/bcmrpi_cutdown_defconfig linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig
+--- linux-3.12.18/arch/arm/configs/bcmrpi_cutdown_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_cutdown_defconfig 2014-04-24 16:04:30.011029397 +0200
@@ -0,0 +1,503 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -505,10 +556,10 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_cutdown_defconfig linux-raspberr
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_BCM2708=m
-diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arch/arm/configs/bcmrpi_defconfig
---- linux-3.12.13/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/configs/bcmrpi_defconfig 2014-03-11 17:51:00.000000000 +0100
-@@ -0,0 +1,1094 @@
+diff -Nur linux-3.12.18/arch/arm/configs/bcmrpi_defconfig linux-rpi/arch/arm/configs/bcmrpi_defconfig
+--- linux-3.12.18/arch/arm/configs/bcmrpi_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_defconfig 2014-04-24 16:04:30.011029397 +0200
+@@ -0,0 +1,1097 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SYSVIPC=y
@@ -529,6 +580,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
++CONFIG_MEMCG=y
+CONFIG_BLK_CGROUP=y
+CONFIG_NAMESPACES=y
+CONFIG_SCHED_AUTOGROUP=y
@@ -553,6 +605,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_AEABI=y
+CONFIG_CLEANCACHE=y
+CONFIG_FRONTSWAP=y
++CONFIG_CMA=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_SECCOMP=y
+CONFIG_CC_STACKPROTECTOR=y
@@ -601,10 +654,10 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_INET_XFRM_MODE_BEET=m
+CONFIG_INET_LRO=m
+CONFIG_INET_DIAG=m
-+CONFIG_IPV6_PRIVACY=y
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
++CONFIG_IPV6_TUNNEL=m
+CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
@@ -627,7 +680,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
-+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XT_SET=m
+CONFIG_NETFILTER_XT_TARGET_AUDIT=m
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
@@ -778,6 +830,9 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_BRIDGE_EBT_NFLOG=m
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_L2TP=m
++CONFIG_L2TP_V3=y
++CONFIG_L2TP_IP=m
++CONFIG_L2TP_ETH=m
+CONFIG_BRIDGE=m
+CONFIG_VLAN_8021Q=m
+CONFIG_VLAN_8021Q_GVRP=y
@@ -888,7 +943,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_NFC_PN533=m
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
-+CONFIG_CMA=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+CONFIG_BLK_DEV_DRBD=m
@@ -901,6 +955,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
+CONFIG_BLK_DEV_SR=m
++CONFIG_CHR_DEV_SG=m
+CONFIG_SCSI_MULTI_LUN=y
+CONFIG_SCSI_ISCSI_ATTRS=y
+CONFIG_ISCSI_TCP=m
@@ -912,8 +967,8 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_DM_CRYPT=m
+CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_MIRROR=m
-+CONFIG_DM_RAID=m
+CONFIG_DM_LOG_USERSPACE=m
++CONFIG_DM_RAID=m
+CONFIG_DM_ZERO=m
+CONFIG_DM_DELAY=m
+CONFIG_NETDEVICES=y
@@ -923,6 +978,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_MACVLAN=m
+CONFIG_NETCONSOLE=m
+CONFIG_TUN=m
++CONFIG_VETH=m
+CONFIG_MDIO_BITBANG=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
@@ -944,6 +1000,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=m
++CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
@@ -985,6 +1042,9 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_B43=m
+# CONFIG_B43_PHY_N is not set
+CONFIG_B43LEGACY=m
++CONFIG_BRCMFMAC=m
++# CONFIG_BRCMFMAC_SDIO is not set
++CONFIG_BRCMFMAC_USB=y
+CONFIG_HOSTAP=m
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
@@ -995,7 +1055,9 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
++CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT53XX=y
++CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RTL8192CU=m
+CONFIG_ZD1211RW=m
@@ -1011,7 +1073,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
-+CONFIG_JOYSTICK_XPAD=y
++CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_AD714X=m
@@ -1029,7 +1091,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
-+CONFIG_VT_HW_CONSOLE_BINDING=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_DEVKMEM is not set
+CONFIG_SERIAL_AMBA_PL011=y
@@ -1146,8 +1207,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
+CONFIG_VIDEO_USBVISION=m
-+CONFIG_VIDEO_STK1160=m
-+CONFIG_VIDEO_STK1160_AC97=y
+CONFIG_VIDEO_AU0828=m
+CONFIG_VIDEO_CX231XX=m
+CONFIG_VIDEO_CX231XX_ALSA=m
@@ -1255,6 +1314,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_SND_SOC_I2C_AND_SPI=m
+CONFIG_SND_SOC_PCM5102A=m
+CONFIG_SND_SOC_PCM1794A=m
++CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
+CONFIG_SOUND_PRIME=m
+CONFIG_HIDRAW=y
+CONFIG_HID_A4TECH=m
@@ -1303,6 +1363,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_HID_ZYDACRON=m
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
++CONFIG_USB=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_MON=m
+CONFIG_USB_DWCOTG=y
@@ -1335,7 +1396,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
-+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
@@ -1353,16 +1413,13 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_USB_SERIAL_METRO=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
-+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_QCAUX=m
+CONFIG_USB_SERIAL_QUALCOMM=m
+CONFIG_USB_SERIAL_SPCP8X5=m
-+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
-+CONFIG_USB_SERIAL_SIEMENS_MPI=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_SYMBOL=m
+CONFIG_USB_SERIAL_TI=m
@@ -1371,9 +1428,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_OPTICON=m
-+CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
+CONFIG_USB_SERIAL_XSENS_MT=m
-+CONFIG_USB_SERIAL_ZIO=m
+CONFIG_USB_SERIAL_WISHBONE=m
+CONFIG_USB_SERIAL_ZTE=m
+CONFIG_USB_SERIAL_SSU100=m
@@ -1416,6 +1471,7 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_LEDS_TRIGGER_TRANSIENT=m
+CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_RTC_CLASS=y
++# CONFIG_RTC_HCTOSYS is not set
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1374=m
+CONFIG_RTC_DRV_DS1672=m
@@ -1451,7 +1507,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=m
+CONFIG_UIO=m
-+CONFIG_UIO_PDRV=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_STAGING=y
+CONFIG_W35UND=m
@@ -1588,7 +1643,6 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+CONFIG_CRYPTO_USER=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
-+CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_XCBC=m
@@ -1603,9 +1657,9 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_defconfig linux-raspberry-pi/arc
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_emergency_defconfig linux-raspberry-pi/arch/arm/configs/bcmrpi_emergency_defconfig
---- linux-3.12.13/arch/arm/configs/bcmrpi_emergency_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/configs/bcmrpi_emergency_defconfig 2014-03-11 17:31:42.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/configs/bcmrpi_emergency_defconfig linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig
+--- linux-3.12.18/arch/arm/configs/bcmrpi_emergency_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_emergency_defconfig 2014-04-24 16:04:30.011029397 +0200
@@ -0,0 +1,532 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
@@ -2139,9 +2193,9 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_emergency_defconfig linux-raspbe
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_quick_defconfig linux-raspberry-pi/arch/arm/configs/bcmrpi_quick_defconfig
---- linux-3.12.13/arch/arm/configs/bcmrpi_quick_defconfig 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/configs/bcmrpi_quick_defconfig 2014-03-11 17:31:42.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/configs/bcmrpi_quick_defconfig linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig
+--- linux-3.12.18/arch/arm/configs/bcmrpi_quick_defconfig 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/configs/bcmrpi_quick_defconfig 2014-04-24 15:35:00.717527267 +0200
@@ -0,0 +1,197 @@
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_LOCALVERSION="-quick"
@@ -2340,20 +2394,38 @@ diff -Nur linux-3.12.13/arch/arm/configs/bcmrpi_quick_defconfig linux-raspberry-
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_LIBCRC32C=y
-diff -Nur linux-3.12.13/arch/arm/include/asm/fiq.h linux-raspberry-pi/arch/arm/include/asm/fiq.h
---- linux-3.12.13/arch/arm/include/asm/fiq.h 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/include/asm/fiq.h 2014-03-11 17:31:42.000000000 +0100
-@@ -42,6 +42,7 @@
- /* helpers defined in fiqasm.S: */
- extern void __set_fiq_regs(unsigned long const *regs);
- extern void __get_fiq_regs(unsigned long *regs);
-+extern void __FIQ_Branch(unsigned long *regs);
+diff -Nur linux-3.12.18/arch/arm/include/asm/irqflags.h linux-rpi/arch/arm/include/asm/irqflags.h
+--- linux-3.12.18/arch/arm/include/asm/irqflags.h 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arm/include/asm/irqflags.h 2014-04-24 16:04:30.027029552 +0200
+@@ -145,12 +145,22 @@
+ }
- static inline void set_fiq_regs(struct pt_regs const *regs)
+ /*
+- * restore saved IRQ & FIQ state
++ * restore saved IRQ state
+ */
+ static inline void arch_local_irq_restore(unsigned long flags)
{
-diff -Nur linux-3.12.13/arch/arm/Kconfig linux-raspberry-pi/arch/arm/Kconfig
---- linux-3.12.13/arch/arm/Kconfig 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/Kconfig 2014-03-11 17:51:00.000000000 +0100
+- asm volatile(
+- " msr " IRQMASK_REG_NAME_W ", %0 @ local_irq_restore"
++ unsigned long temp = 0;
++ flags &= ~(1 << 6);
++ asm volatile (
++ " mrs %0, cpsr"
++ : "=r" (temp)
++ :
++ : "memory", "cc");
++ /* Preserve FIQ bit */
++ temp &= (1 << 6);
++ flags = flags | temp;
++ asm volatile (
++ " msr cpsr_c, %0 @ local_irq_restore"
+ :
+ : "r" (flags)
+ : "memory", "cc");
+diff -Nur linux-3.12.18/arch/arm/Kconfig linux-rpi/arch/arm/Kconfig
+--- linux-3.12.18/arch/arm/Kconfig 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig 2014-04-24 16:04:29.515024597 +0200
@@ -368,6 +368,24 @@
This enables support for systems based on Atmel
AT91RM9200 and AT91SAM9* processors.
@@ -2387,9 +2459,9 @@ diff -Nur linux-3.12.13/arch/arm/Kconfig linux-raspberry-pi/arch/arm/Kconfig
source "arch/arm/mach-zynq/Kconfig"
-diff -Nur linux-3.12.13/arch/arm/Kconfig.debug linux-raspberry-pi/arch/arm/Kconfig.debug
---- linux-3.12.13/arch/arm/Kconfig.debug 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/Kconfig.debug 2014-03-11 17:51:00.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/Kconfig.debug linux-rpi/arch/arm/Kconfig.debug
+--- linux-3.12.18/arch/arm/Kconfig.debug 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arm/Kconfig.debug 2014-04-24 16:04:29.515024597 +0200
@@ -847,6 +847,14 @@
options; the platform specific options are deprecated
and will be soon removed.
@@ -2405,20 +2477,10 @@ diff -Nur linux-3.12.13/arch/arm/Kconfig.debug linux-raspberry-pi/arch/arm/Kconf
endchoice
config DEBUG_EXYNOS_UART
-diff -Nur linux-3.12.13/arch/arm/kernel/fiqasm.S linux-raspberry-pi/arch/arm/kernel/fiqasm.S
---- linux-3.12.13/arch/arm/kernel/fiqasm.S 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/kernel/fiqasm.S 2014-03-11 17:31:43.000000000 +0100
-@@ -25,6 +25,9 @@
- ENTRY(__set_fiq_regs)
- mov r2, #PSR_I_BIT | PSR_F_BIT | FIQ_MODE
- mrs r1, cpsr
-+@@@@@@@@@@@@@@@ hack: enable the fiq here to keep usb driver happy
-+ and r1, #~PSR_F_BIT
-+@@@@@@@@@@@@@@@ endhack: (need to find better place for this to happen)
- msr cpsr_c, r2 @ select FIQ mode
- mov r0, r0 @ avoid hazard prior to ARMv4
- ldmia r0!, {r8 - r12}
-@@ -47,3 +50,7 @@
+diff -Nur linux-3.12.18/arch/arm/kernel/fiqasm.S linux-rpi/arch/arm/kernel/fiqasm.S
+--- linux-3.12.18/arch/arm/kernel/fiqasm.S 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arm/kernel/fiqasm.S 2014-04-24 16:04:30.039029668 +0200
+@@ -47,3 +47,7 @@
mov r0, r0 @ avoid hazard prior to ARMv4
mov pc, lr
ENDPROC(__get_fiq_regs)
@@ -2426,20 +2488,9 @@ diff -Nur linux-3.12.13/arch/arm/kernel/fiqasm.S linux-raspberry-pi/arch/arm/ker
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
-diff -Nur linux-3.12.13/arch/arm/kernel/fiq.c linux-raspberry-pi/arch/arm/kernel/fiq.c
---- linux-3.12.13/arch/arm/kernel/fiq.c 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/kernel/fiq.c 2014-03-11 17:31:43.000000000 +0100
-@@ -142,6 +142,7 @@
- EXPORT_SYMBOL(set_fiq_handler);
- EXPORT_SYMBOL(__set_fiq_regs); /* defined in fiqasm.S */
- EXPORT_SYMBOL(__get_fiq_regs); /* defined in fiqasm.S */
-+EXPORT_SYMBOL(__FIQ_Branch); /* defined in fiqasm.S */
- EXPORT_SYMBOL(claim_fiq);
- EXPORT_SYMBOL(release_fiq);
- EXPORT_SYMBOL(enable_fiq);
-diff -Nur linux-3.12.13/arch/arm/kernel/process.c linux-raspberry-pi/arch/arm/kernel/process.c
---- linux-3.12.13/arch/arm/kernel/process.c 2014-02-22 22:32:50.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/kernel/process.c 2014-03-11 17:51:02.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/kernel/process.c linux-rpi/arch/arm/kernel/process.c
+--- linux-3.12.18/arch/arm/kernel/process.c 2014-04-18 11:14:28.000000000 +0200
++++ linux-rpi/arch/arm/kernel/process.c 2014-04-24 16:04:30.039029668 +0200
@@ -176,6 +176,16 @@
default_idle();
}
@@ -2457,9 +2508,9 @@ diff -Nur linux-3.12.13/arch/arm/kernel/process.c linux-raspberry-pi/arch/arm/ke
/*
* Called by kexec, immediately prior to machine_kexec().
*
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/armctrl.c linux-raspberry-pi/arch/arm/mach-bcm2708/armctrl.c
---- linux-3.12.13/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/armctrl.c 2014-03-11 17:31:43.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/armctrl.c linux-rpi/arch/arm/mach-bcm2708/armctrl.c
+--- linux-3.12.18/arch/arm/mach-bcm2708/armctrl.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.c 2014-04-24 15:35:00.773527891 +0200
@@ -0,0 +1,219 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.c
@@ -2680,9 +2731,9 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/armctrl.c linux-raspberry-pi/arch/
+ init_FIQ(FIQ_START);
+ return 0;
+}
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/armctrl.h linux-raspberry-pi/arch/arm/mach-bcm2708/armctrl.h
---- linux-3.12.13/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/armctrl.h 2014-03-11 17:31:43.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/armctrl.h linux-rpi/arch/arm/mach-bcm2708/armctrl.h
+--- linux-3.12.18/arch/arm/mach-bcm2708/armctrl.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/armctrl.h 2014-04-24 15:35:00.773527891 +0200
@@ -0,0 +1,27 @@
+/*
+ * linux/arch/arm/mach-bcm2708/armctrl.h
@@ -2711,10 +2762,10 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/armctrl.h linux-raspberry-pi/arch/
+ u32 armctrl_sources, u32 resume_sources);
+
+#endif
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708.c
---- linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708.c 2014-03-11 17:51:02.000000000 +0100
-@@ -0,0 +1,1011 @@
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/bcm2708.c linux-rpi/arch/arm/mach-bcm2708/bcm2708.c
+--- linux-3.12.18/arch/arm/mach-bcm2708/bcm2708.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.c 2014-04-24 16:04:30.051029784 +0200
+@@ -0,0 +1,1017 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.c
+ *
@@ -2758,7 +2809,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+#include <asm/irq.h>
+#include <linux/leds.h>
+#include <asm/mach-types.h>
-+#include <asm/sched_clock.h>
++#include <linux/sched_clock.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/flash.h>
@@ -2803,6 +2854,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+static unsigned disk_led_gpio = 16;
+static unsigned disk_led_active_low = 1;
+static unsigned reboot_part = 0;
++static unsigned w1_gpio_pin = W1_GPIO;
+
+static void __init bcm2708_init_led(void);
+
@@ -3044,20 +3096,6 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+ },
+};
+
-+bool fiq_fix_enable = true;
-+
-+static struct resource bcm2708_usb_resources_no_fiq_fix[] = {
-+ [0] = {
-+ .start = USB_BASE,
-+ .end = USB_BASE + SZ_128K - 1,
-+ .flags = IORESOURCE_MEM,
-+ },
-+ [1] = {
-+ .start = IRQ_USB,
-+ .end = IRQ_USB,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
+
+static u64 usb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON);
+
@@ -3401,6 +3439,22 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+};
+#endif
+
++
++#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE)
++static struct platform_device snd_rpi_iqaudio_dac_device = {
++ .name = "snd-rpi-iqaudio-dac",
++ .id = 0,
++ .num_resources = 0,
++};
++
++// Use the actual device name rather than generic driver name
++static struct i2c_board_info __initdata snd_pcm512x_i2c_devices[] = {
++ {
++ I2C_BOARD_INFO("pcm5122", 0x4c)
++ },
++};
++#endif
++
+int __init bcm_register_device(struct platform_device *pdev)
+{
+ int ret;
@@ -3500,15 +3554,11 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+ bcm_register_device(&bcm2708_gpio_device);
+#endif
+#if defined(CONFIG_W1_MASTER_GPIO) || defined(CONFIG_W1_MASTER_GPIO_MODULE)
++ w1_gpio_pdata.pin = w1_gpio_pin;
+ platform_device_register(&w1_device);
+#endif
+ bcm_register_device(&bcm2708_systemtimer_device);
+ bcm_register_device(&bcm2708_fb_device);
-+ if (!fiq_fix_enable)
-+ {
-+ bcm2708_usb_device.resource = bcm2708_usb_resources_no_fiq_fix;
-+ bcm2708_usb_device.num_resources = ARRAY_SIZE(bcm2708_usb_resources_no_fiq_fix);
-+ }
+ bcm_register_device(&bcm2708_usb_device);
+ bcm_register_device(&bcm2708_uart1_device);
+ bcm_register_device(&bcm2708_powerman_device);
@@ -3546,6 +3596,12 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+ bcm_register_device(&snd_pcm1794a_codec_device);
+#endif
+
++#if defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) || defined(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC_MODULE)
++ bcm_register_device(&snd_rpi_iqaudio_dac_device);
++ i2c_register_board_info(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices));
++#endif
++
++
+ for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
+ struct amba_device *d = amba_devs[i];
+ amba_device_register(d, &iomem_resource);
@@ -3726,10 +3782,11 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.c linux-raspberry-pi/arch/
+module_param(disk_led_gpio, uint, 0644);
+module_param(disk_led_active_low, uint, 0644);
+module_param(reboot_part, uint, 0644);
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708_gpio.c
---- linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708_gpio.c 2014-03-11 17:51:02.000000000 +0100
-@@ -0,0 +1,339 @@
++module_param(w1_gpio_pin, uint, 0644);
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-rpi/arch/arm/mach-bcm2708/bcm2708_gpio.c
+--- linux-3.12.18/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-04-24 16:04:30.051029784 +0200
+@@ -0,0 +1,361 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708_gpio.c
+ *
@@ -3790,6 +3847,8 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ struct gpio_chip gc;
+ unsigned long rising;
+ unsigned long falling;
++ unsigned long high;
++ unsigned long low;
+};
+
+static int bcm2708_set_function(struct gpio_chip *gc, unsigned offset,
@@ -3802,7 +3861,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ unsigned gpio_field_offset = (offset - 10 * gpio_bank) * 3;
+
+//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set_function %p (%d,%d)\n", gc, offset, function);
-+ if (offset >= ARCH_NR_GPIOS)
++ if (offset >= BCM2708_NR_GPIOS)
+ return -EINVAL;
+
+ spin_lock_irqsave(&lock, flags);
@@ -3840,7 +3899,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ unsigned gpio_field_offset = (offset - 32 * gpio_bank);
+ unsigned lev;
+
-+ if (offset >= ARCH_NR_GPIOS)
++ if (offset >= BCM2708_NR_GPIOS)
+ return 0;
+ lev = readl(gpio->base + GPIOLEV(gpio_bank));
+//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_get %p (%d)=%d\n", gc, offset, 0x1 & (lev>>gpio_field_offset));
@@ -3853,7 +3912,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ unsigned gpio_bank = offset / 32;
+ unsigned gpio_field_offset = (offset - 32 * gpio_bank);
+//printk(KERN_ERR DRIVER_NAME ": bcm2708_gpio_set %p (%d=%d)\n", gc, offset, value);
-+ if (offset >= ARCH_NR_GPIOS)
++ if (offset >= BCM2708_NR_GPIOS)
+ return;
+ if (value)
+ writel(1 << gpio_field_offset, gpio->base + GPIOSET(gpio_bank));
@@ -3877,20 +3936,22 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ unsigned irq = d->irq;
+ struct bcm2708_gpio *gpio = irq_get_chip_data(irq);
+
-+ if (type & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
++ gpio->rising &= ~(1 << irq_to_gpio(irq));
++ gpio->falling &= ~(1 << irq_to_gpio(irq));
++ gpio->high &= ~(1 << irq_to_gpio(irq));
++ gpio->low &= ~(1 << irq_to_gpio(irq));
++
++ if (type & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING | IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
+ return -EINVAL;
+
-+ if (type & IRQ_TYPE_EDGE_RISING) {
++ if (type & IRQ_TYPE_EDGE_RISING)
+ gpio->rising |= (1 << irq_to_gpio(irq));
-+ } else {
-+ gpio->rising &= ~(1 << irq_to_gpio(irq));
-+ }
-+
-+ if (type & IRQ_TYPE_EDGE_FALLING) {
++ if (type & IRQ_TYPE_EDGE_FALLING)
+ gpio->falling |= (1 << irq_to_gpio(irq));
-+ } else {
-+ gpio->falling &= ~(1 << irq_to_gpio(irq));
-+ }
++ if (type & IRQ_TYPE_LEVEL_HIGH)
++ gpio->high |= (1 << irq_to_gpio(irq));
++ if (type & IRQ_TYPE_LEVEL_LOW)
++ gpio->low |= (1 << irq_to_gpio(irq));
+ return 0;
+}
+
@@ -3900,13 +3961,17 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ struct bcm2708_gpio *gpio = irq_get_chip_data(irq);
+ unsigned gn = irq_to_gpio(irq);
+ unsigned gb = gn / 32;
-+ unsigned long rising = readl(gpio->base + GPIOREN(gb));
++ unsigned long rising = readl(gpio->base + GPIOREN(gb));
+ unsigned long falling = readl(gpio->base + GPIOFEN(gb));
++ unsigned long high = readl(gpio->base + GPIOHEN(gb));
++ unsigned long low = readl(gpio->base + GPIOLEN(gb));
+
+ gn = gn % 32;
+
-+ writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb));
++ writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb));
+ writel(falling & ~(1 << gn), gpio->base + GPIOFEN(gb));
++ writel(high & ~(1 << gn), gpio->base + GPIOHEN(gb));
++ writel(low & ~(1 << gn), gpio->base + GPIOLEN(gb));
+}
+
+static void bcm2708_gpio_irq_unmask(struct irq_data *d)
@@ -3915,24 +3980,38 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+ struct bcm2708_gpio *gpio = irq_get_chip_data(irq);
+ unsigned gn = irq_to_gpio(irq);
+ unsigned gb = gn / 32;
-+ unsigned long rising = readl(gpio->base + GPIOREN(gb));
++ unsigned long rising = readl(gpio->base + GPIOREN(gb));
+ unsigned long falling = readl(gpio->base + GPIOFEN(gb));
++ unsigned long high = readl(gpio->base + GPIOHEN(gb));
++ unsigned long low = readl(gpio->base + GPIOLEN(gb));
+
+ gn = gn % 32;
+
+ writel(1 << gn, gpio->base + GPIOEDS(gb));
+
+ if (gpio->rising & (1 << gn)) {
-+ writel(rising | (1 << gn), gpio->base + GPIOREN(gb));
++ writel(rising | (1 << gn), gpio->base + GPIOREN(gb));
+ } else {
+ writel(rising & ~(1 << gn), gpio->base + GPIOREN(gb));
+ }
+
+ if (gpio->falling & (1 << gn)) {
-+ writel(falling | (1 << gn), gpio->base + GPIOFEN(gb));
++ writel(falling | (1 << gn), gpio->base + GPIOFEN(gb));
+ } else {
+ writel(falling & ~(1 << gn), gpio->base + GPIOFEN(gb));
+ }
++
++ if (gpio->high & (1 << gn)) {
++ writel(high | (1 << gn), gpio->base + GPIOHEN(gb));
++ } else {
++ writel(high & ~(1 << gn), gpio->base + GPIOHEN(gb));
++ }
++
++ if (gpio->low & (1 << gn)) {
++ writel(low | (1 << gn), gpio->base + GPIOLEN(gb));
++ } else {
++ writel(low & ~(1 << gn), gpio->base + GPIOLEN(gb));
++ }
+}
+
+static struct irq_chip bcm2708_irqchip = {
@@ -4012,7 +4091,7 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+
+ ucb->gc.label = "bcm2708_gpio";
+ ucb->gc.base = 0;
-+ ucb->gc.ngpio = ARCH_NR_GPIOS;
++ ucb->gc.ngpio = BCM2708_NR_GPIOS;
+ ucb->gc.owner = THIS_MODULE;
+
+ ucb->gc.direction_input = bcm2708_gpio_dir_in;
@@ -4069,10 +4148,10 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708_gpio.c linux-raspberry-pi/
+
+MODULE_DESCRIPTION("Broadcom BCM2708 GPIO driver");
+MODULE_LICENSE("GPL");
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.h linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708.h
---- linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/bcm2708.h 2014-03-11 17:31:43.000000000 +0100
-@@ -0,0 +1,51 @@
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/bcm2708.h linux-rpi/arch/arm/mach-bcm2708/bcm2708.h
+--- linux-3.12.18/arch/arm/mach-bcm2708/bcm2708.h 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/bcm2708.h 2014-04-24 16:04:30.051029784 +0200
+@@ -0,0 +1,49 @@
+/*
+ * linux/arch/arm/mach-bcm2708/bcm2708.h
+ *
@@ -4118,15 +4197,13 @@ diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/bcm2708.h linux-raspberry-pi/arch/
+ .end = (base##_BASE) + SZ_4K - 1,\
+ .flags = IORESOURCE_MEM, \
+ }, \
-+ .dma_mask = ~0, \
+ .irq = base##_IRQ, \
-+ /* .dma = base##_DMA,*/ \
+}
+
+#endif
-diff -Nur linux-3.12.13/arch/arm/mach-bcm2708/clock.c linux-raspberry-pi/arch/arm/mach-bcm2708/clock.c
---- linux-3.12.13/arch/arm/mach-bcm2708/clock.c 1970-01-01 01:00:00.000000000 +0100
-+++ linux-raspberry-pi/arch/arm/mach-bcm2708/clock.c 2014-03-11 17:31:43.000000000 +0100
+diff -Nur linux-3.12.18/arch/arm/mach-bcm2708/clock.c linux-rpi/arch/arm/mach-bcm2708/clock.c
+--- linux-3.12.18/arch/arm/mach-bcm2708/clock.c 1970-01-01 01:00:00.000000000 +0100
++++ linux-rpi/arch/arm/mach-bcm2708/clock.c 2014-04-24 15:35:00.773527891 +0200
@@ -0,0 +1,61 @@
+/*
+ * linux/arch/arm/mach-bcm2708/clock.c
@@ -4189,9 +4266,9 @@ di