aboutsummaryrefslogtreecommitdiffstats
path: root/main/linux-rpi
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2015-12-18 06:38:33 +0000
committerTimo Teräs <timo.teras@iki.fi>2015-12-18 06:59:06 +0000
commit57a77853ac8b73c8d596d76b0cfc817778c73699 (patch)
tree9d4e78c2d539b7fdb79f221d5af7eabb2e652e8a /main/linux-rpi
parent218c9e63e3db210702c05f5122417f9dddcbe5dd (diff)
downloadaports-57a77853ac8b73c8d596d76b0cfc817778c73699.tar.bz2
aports-57a77853ac8b73c8d596d76b0cfc817778c73699.tar.xz
main/linux-rpi: upgrade to 4.1.15, update patches and config
Diffstat (limited to 'main/linux-rpi')
-rw-r--r--main/linux-rpi/APKBUILD41
-rw-r--r--main/linux-rpi/config-rpi.armhf49
-rw-r--r--main/linux-rpi/config-rpi2.armhf49
-rw-r--r--main/linux-rpi/gpio-mcp23s08-pullups.patch67
-rw-r--r--main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch (renamed from main/linux-rpi/rpi-cirrus-4.1.x-20151025.patch)355
-rw-r--r--main/linux-rpi/rpi-dma-i2s-fix.patch66
6 files changed, 292 insertions, 335 deletions
diff --git a/main/linux-rpi/APKBUILD b/main/linux-rpi/APKBUILD
index bb12d59160..4e93130022 100644
--- a/main/linux-rpi/APKBUILD
+++ b/main/linux-rpi/APKBUILD
@@ -2,7 +2,7 @@
_mainflavor=rpi
pkgname=linux-$_mainflavor
-pkgver=4.1.13
+pkgver=4.1.15
case $pkgver in
*.*.*) _kernver=${pkgver%.*};;
*.*) _kernver=${pkgver};;
@@ -16,9 +16,9 @@ options="!strip"
install=
source="http://ftp.kernel.org/pub/linux/kernel/v4.x/linux-$_kernver.tar.xz
http://ftp.kernel.org/pub/linux/kernel/v4.x/patch-$pkgver.xz
- http://dev.alpinelinux.org/~tteras/linux-4.1.y-rpi-20151119.patch
- rpi-dma-i2s-fix.patch
- rpi-cirrus-4.1.x-20151025.patch
+ http://dev.alpinelinux.org/~tteras/linux-4.1.y-rpi-20151218.patch
+ rpi-cirrus-4.1.y-20151218.patch
+ gpio-mcp23s08-pullups.patch
config-rpi.armhf
config-rpi2.armhf
@@ -197,26 +197,23 @@ dev() {
}
md5sums="fe9dc0f6729f36400ea81aa41d614c37 linux-4.1.tar.xz
-e1005015404c53692e8aa6dd14efff74 patch-4.1.13.xz
-351cb861020321c0fd23fdc5a201463a linux-4.1.y-rpi-20151119.patch
-52787712305201c60ab9bc128c9e373b rpi-dma-i2s-fix.patch
-e3429d7772cb3bf73ff4c51aabb2a5cf rpi-cirrus-4.1.x-20151025.patch
-cb71e2a517e7d019596eab9cbc91a080 config-rpi.armhf
-59f634c4646dab6bc1fe059efaf773e9 config-rpi2.armhf
+5ec05841161a172f8ae1a7f38bb382b0 patch-4.1.15.xz
+6b091b3432dfde5452b3d1c9239622f2 linux-4.1.y-rpi-20151218.patch
+d4b70738cf06dbd70534d5e873442951 rpi-cirrus-4.1.y-20151218.patch
+3b645eef5408cbbcf9c6b13581ef775a config-rpi.armhf
+1c21e249ea27b70dd5e0a7b69820fdee config-rpi2.armhf
e587cae1dca2f5992555d9bcf53deecf markdt"
sha256sums="caf51f085aac1e1cea4d00dbbf3093ead07b551fc07b31b2a989c05f8ea72d9f linux-4.1.tar.xz
-1c3ba78cbaa1a260798d6d0d2aa319ff41ae676b443e5bf06ab441436dcdd171 patch-4.1.13.xz
-cdb26705b8841bbadcf4e862dc3f582049fe8169a4951e4c4a34de1f3dac4293 linux-4.1.y-rpi-20151119.patch
-f1349b95149f4a21949ebc3dae1c2b144278d170322afeb7975d2cea7f64f10c rpi-dma-i2s-fix.patch
-b1b5b8bf16e2eacec19931279984f2bc96851da6e9786d4c9422caa1ac7af2fe rpi-cirrus-4.1.x-20151025.patch
-c38d092ae49c4d3f642c4a99432d139092c331f2b33e81c5855b38381ad79411 config-rpi.armhf
-5f450314b5af2d6079d32c3a67eb7df49dd73c4732cff392a953b19838fa6e6a config-rpi2.armhf
+0ffca8557f1aa191da2f2260ad279c9cc858e6308a8af8a76f7ca3d3c0540344 patch-4.1.15.xz
+21dded436f0ff6f36fdc630c406b179820a13403f18c9c221c41d98cc9b77b4b linux-4.1.y-rpi-20151218.patch
+5aa17a1554598c3b364b7e8aea84bacfc13e8aca9b9101e58d89c211674a3d5a rpi-cirrus-4.1.y-20151218.patch
+7eb3025189c64f4023db864169dcc9d64d029fc871d0ffbc59621292a338772a config-rpi.armhf
+10318f14c68a7fafe3b1a8f3208c8586dabce5c01598a4bf7a2da76166b273b4 config-rpi2.armhf
0f6681fc5c3590e1dbe13a2bde796403bd1529cf0fe19720899eaa0db79bcb49 markdt"
sha512sums="168ef84a4e67619f9f53f3574e438542a5747f9b43443363cb83597fcdac9f40d201625c66e375a23226745eaada9176eb006ca023613cec089349e91751f3c0 linux-4.1.tar.xz
-0fa60b9fceb6103c11ed1df8d4f264d1c4efcd75da258709f1d0a6813f8117977fa2279b36da22bd69cc2bc808b092207a438c2e80a65a988f4c72363a605832 patch-4.1.13.xz
-cae26e2303fccf5246d1b3f8c78425860410ad7667ab7a9805497493d4926978b99ebe95486f00324e3af9cd86fb9e1965f719531ccff9c56efab8ea29b180d0 linux-4.1.y-rpi-20151119.patch
-080ba354e40f86338278339b8b3fc2cfd5b77c38c34067b0b7e2b31d07834baf99b3bf04153844e86433bda6fc0de5d86679e1d99521109b1a9a5dbeee6df2b6 rpi-dma-i2s-fix.patch
-3e4717c21def19d7c9714b1d9d07f8dbf8fd27e986cbd978eda50c586cc21d1399b50db4255589d09abb6fe5b532c3959481098f229c4ea4526a044fc1da17b0 rpi-cirrus-4.1.x-20151025.patch
-69b5beae27dc58e7e7cf1aa351923a980ae453b39f9092fe97220f0b508f46e7e45197da22a2088723bafd6f9293c31475741c63a9ed8e587a1d45392addb9af config-rpi.armhf
-7d2f238f0a460fa4cbf6b26188fdbe8241a07846eaf3f6c6f4be33bdb836e9e26c58312109d51092e6faeb304c9281541c62da46539faa1614ef4c1bdacc08eb config-rpi2.armhf
+646daf16c01fb8c3013c7c9919c18c3635eb6bd37560623cb56cc7a6d0b22fb13290cee8865dfbcc435cd8544cc3ecb6f3aae538d10c9e0b1098806f233155a3 patch-4.1.15.xz
+9ca5c2c0417fc091f46393a7b84b4f8520fa7e21ce6f4c6987966f535388c97e92ffaf8044c80182be584d37b458f9c95b0cf0d8bd86ba3b5cbef1e47b2178bc linux-4.1.y-rpi-20151218.patch
+843afc1f2a72fa9618935dd67d4ac33a22ee78f20114af349f8d93e54864375b3ef192c8d8fde814d6685d5fe675c2a850743834ef89640eedce9f4db5ffdb67 rpi-cirrus-4.1.y-20151218.patch
+51f7fcacb9fb05aa14e7ee7890f7726ce4b0001496cfe9ca2152693c2acf5fefbfa654d2d4f26058aa3b617141f29cff7e0427c30e291209829ab1e44c6412ba config-rpi.armhf
+1e249312b12e5d247ca7e250653afbacb5bc9d23983eaa4d552ff5b28c2dc0b0302a1c6af499fa59fa166a31e067fddae191bd977b0bd13773a66c81ca398f93 config-rpi2.armhf
a4ecd1f48db64f9d6a189250d1937d7f2cd3a049a3d24cc527d04d05db06137722f1ba44bcd6033794781c3f2cfe2fbe065410a16de4bfdf4b1cd95d89322a77 markdt"
diff --git a/main/linux-rpi/config-rpi.armhf b/main/linux-rpi/config-rpi.armhf
index b1bdf46d09..c7cdf2d9b9 100644
--- a/main/linux-rpi/config-rpi.armhf
+++ b/main/linux-rpi/config-rpi.armhf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.1.13 Kernel Configuration
+# Linux/arm 4.1.15 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1698,7 +1698,7 @@ CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
# CONFIG_INPUT_SPARSEKMAP is not set
-# CONFIG_INPUT_MATRIXKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=m
#
# Userland interfaces
@@ -1714,8 +1714,44 @@ CONFIG_INPUT_EVDEV=m
#
# Input Device Drivers
#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+CONFIG_KEYBOARD_MATRIX=m
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_STMPE is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+CONFIG_KEYBOARD_BCM=m
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_ELAN_I2C is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_MOUSE_GPIO=m
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
@@ -1779,7 +1815,7 @@ CONFIG_TOUCHSCREEN_FT6236=m
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
-# CONFIG_TOUCHSCREEN_RPI_FT5406 is not set
+CONFIG_TOUCHSCREEN_RPI_FT5406=m
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
@@ -1804,7 +1840,7 @@ CONFIG_INPUT_AD714X_SPI=m
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
# CONFIG_INPUT_GP2A is not set
-# CONFIG_INPUT_GPIO_BEEPER is not set
+CONFIG_INPUT_GPIO_BEEPER=m
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
@@ -1823,6 +1859,7 @@ CONFIG_INPUT_ADXL34X_SPI=m
# CONFIG_INPUT_IMS_PCU is not set
CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
diff --git a/main/linux-rpi/config-rpi2.armhf b/main/linux-rpi/config-rpi2.armhf
index 46cee9af4a..18e540a216 100644
--- a/main/linux-rpi/config-rpi2.armhf
+++ b/main/linux-rpi/config-rpi2.armhf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.1.13 Kernel Configuration
+# Linux/arm 4.1.15 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -1749,7 +1749,7 @@ CONFIG_INPUT=y
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
# CONFIG_INPUT_SPARSEKMAP is not set
-# CONFIG_INPUT_MATRIXKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=m
#
# Userland interfaces
@@ -1765,8 +1765,44 @@ CONFIG_INPUT_EVDEV=m
#
# Input Device Drivers
#
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=m
+CONFIG_KEYBOARD_GPIO_POLLED=m
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+CONFIG_KEYBOARD_MATRIX=m
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_STMPE is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+CONFIG_KEYBOARD_BCM=m
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_ELAN_I2C is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+CONFIG_MOUSE_GPIO=m
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
CONFIG_INPUT_JOYSTICK=y
# CONFIG_JOYSTICK_ANALOG is not set
# CONFIG_JOYSTICK_A3D is not set
@@ -1830,7 +1866,7 @@ CONFIG_TOUCHSCREEN_FT6236=m
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
-# CONFIG_TOUCHSCREEN_RPI_FT5406 is not set
+CONFIG_TOUCHSCREEN_RPI_FT5406=m
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
@@ -1855,7 +1891,7 @@ CONFIG_INPUT_AD714X_SPI=m
# CONFIG_INPUT_MMA8450 is not set
# CONFIG_INPUT_MPU3050 is not set
# CONFIG_INPUT_GP2A is not set
-# CONFIG_INPUT_GPIO_BEEPER is not set
+CONFIG_INPUT_GPIO_BEEPER=m
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
@@ -1874,6 +1910,7 @@ CONFIG_INPUT_ADXL34X_SPI=m
# CONFIG_INPUT_IMS_PCU is not set
CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
+# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
diff --git a/main/linux-rpi/gpio-mcp23s08-pullups.patch b/main/linux-rpi/gpio-mcp23s08-pullups.patch
new file mode 100644
index 0000000000..e3039861a8
--- /dev/null
+++ b/main/linux-rpi/gpio-mcp23s08-pullups.patch
@@ -0,0 +1,67 @@
+From 0be0dc3a75279c4621ff45a027ffad5ddc9810c7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
+Date: Mon, 30 Nov 2015 16:24:25 +0200
+Subject: [PATCH] gpio: mcp23s08: support setting pullups from device tree data
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Make pullup configurable from device tree data.
+
+Signed-off-by: Timo Teräs <timo.teras@iki.fi>
+---
+ Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt | 1 +
+ drivers/gpio/gpio-mcp23s08.c | 14 +++++++++++---
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
+index f3332b9..c7d2128 100644
+--- a/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
++++ b/Documentation/devicetree/bindings/gpio/gpio-mcp23s08.txt
+@@ -59,6 +59,7 @@ Optional device specific properties:
+ On devices with only one interrupt output this property is useless.
+ - microchip,irq-active-high: Sets the INTPOL flag in the IOCON register. This
+ configures the IRQ output polarity as active high.
++- microchip,pullups: Configuration value for GPPU register.
+
+ Example I2C (with interrupt):
+ gpiom1: gpio@20 {
+diff --git a/drivers/gpio/gpio-mcp23s08.c b/drivers/gpio/gpio-mcp23s08.c
+index 73db7ec..2320230 100644
+--- a/drivers/gpio/gpio-mcp23s08.c
++++ b/drivers/gpio/gpio-mcp23s08.c
+@@ -786,9 +786,12 @@ static int mcp230xx_probe(struct i2c_client *client,
+ match = of_match_device(of_match_ptr(mcp23s08_i2c_of_match),
+ &client->dev);
+ if (match) {
++ u32 pullups = 0;
+ pdata = &local_pdata;
+ pdata->base = -1;
+- pdata->chip[0].pullups = 0;
++ of_property_read_u32(client->dev.of_node, "microchip,pullups",
++ &pullups);
++ pdata->chip[0].pullups = pullups;
+ pdata->irq_controller = of_property_read_bool(
+ client->dev.of_node,
+ "interrupt-controller");
+@@ -910,9 +913,14 @@ static int mcp23s08_probe(struct spi_device *spi)
+ pdata = &local_pdata;
+ pdata->base = -1;
+ for (addr = 0; addr < ARRAY_SIZE(pdata->chip); addr++) {
+- pdata->chip[addr].pullups = 0;
+- if (spi_present_mask & (1 << addr))
++ u32 pullups = 0;
++ if (spi_present_mask & (1 << addr)) {
++ of_property_read_u32_index(spi->dev.of_node,
++ "microchip,pullups",
++ addr, &pullups);
+ chips++;
++ }
++ pdata->chip[addr].pullups = pullups;
+ }
+ pdata->irq_controller = of_property_read_bool(
+ spi->dev.of_node,
+--
+2.6.3
+
+
diff --git a/main/linux-rpi/rpi-cirrus-4.1.x-20151025.patch b/main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch
index f29b381efc..06ab4c3ede 100644
--- a/main/linux-rpi/rpi-cirrus-4.1.x-20151025.patch
+++ b/main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch
@@ -1,5 +1,3 @@
-https://github.com/HiassofT/rpi-linux/commits/cirrus-4.1.y
-
diff --git a/Documentation/devicetree/bindings/mfd/arizona.txt b/Documentation/devicetree/bindings/mfd/arizona.txt
index 7665aa9..ec7979e 100644
--- a/Documentation/devicetree/bindings/mfd/arizona.txt
@@ -67,10 +65,10 @@ index 7665aa9..ec7979e 100644
+ wlf,dmic-ref = <0 0 1 0>;
};
diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index f4b2817..756c08d 100644
+index 1a60e9c..ab63db7 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
-@@ -41,6 +41,7 @@ dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb
+@@ -44,6 +44,7 @@ dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb
dtb-$(RPI_DT_OVERLAYS) += pwm-2chan-overlay.dtb
dtb-$(RPI_DT_OVERLAYS) += raspidac3-overlay.dtb
dtb-$(RPI_DT_OVERLAYS) += rpi-backlight-overlay.dtb
@@ -80,10 +78,10 @@ index f4b2817..756c08d 100644
dtb-$(RPI_DT_OVERLAYS) += rpi-ft5406-overlay.dtb
diff --git a/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
new file mode 100644
-index 0000000..85b3d15
+index 0000000..3cb63a5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
-@@ -0,0 +1,141 @@
+@@ -0,0 +1,138 @@
+// Definitions for Cirrus audio card
+/dts-v1/;
+/plugin/;
@@ -121,8 +119,8 @@ index 0000000..85b3d15
+ target = <&gpio>;
+ __overlay__ {
+ wlf_pins: wlf_pins {
-+ brcm,pins = <17 22 27>;
-+ brcm,function = <1 1 0>;
++ brcm,pins = <17 22 27 8>;
++ brcm,function = <1 1 0 1>;
+ };
+ };
+ };
@@ -148,10 +146,6 @@ index 0000000..85b3d15
+ enable-active-high;
+ regulator-always-on;
+ };
-+
-+ wsp_preinit: wsp_preinit {
-+ compatible = "wlf,rpi-wm5102-preinit";
-+ };
+ };
+ };
+
@@ -214,22 +208,23 @@ index 0000000..85b3d15
+ #address-cells = <1>;
+ #size-cells = <0>;
+
-+ wm8804@3a {
++ wm8804@3b {
+ #sound-dai-cells = <0>;
+ compatible = "wlf,wm8804";
-+ reg = <0x3a>;
++ reg = <0x3b>;
+ status = "okay";
+ PVDD-supply = <&ldo0>;
+ DVDD-supply = <&ldo0>;
++ wlf,reset-gpio = <&gpio 8 0>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
-index fb402e8..74ebdc7 100644
+index d06b9c8..37c18ac 100644
--- a/arch/arm/configs/bcm2709_defconfig
+++ b/arch/arm/configs/bcm2709_defconfig
-@@ -639,6 +639,9 @@ CONFIG_STMPE_SPI=y
+@@ -641,6 +641,9 @@ CONFIG_STMPE_SPI=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
@@ -239,7 +234,7 @@ index fb402e8..74ebdc7 100644
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
-@@ -844,6 +847,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+@@ -847,6 +850,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
@@ -248,10 +243,10 @@ index fb402e8..74ebdc7 100644
CONFIG_SND_SOC_WM8804_I2C=m
CONFIG_SND_SIMPLE_CARD=m
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
-index eb81555e..6528468 100644
+index e04f122..8c8e512 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
-@@ -632,6 +632,9 @@ CONFIG_STMPE_SPI=y
+@@ -634,6 +634,9 @@ CONFIG_STMPE_SPI=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
@@ -261,7 +256,7 @@ index eb81555e..6528468 100644
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
-@@ -837,6 +840,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+@@ -840,6 +843,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
@@ -463,6 +458,33 @@ index 1b9c3be..39b6698 100644
if (!use_dt) {
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];
+diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
+index 85ce18b..abf8763 100644
+--- a/drivers/dma/bcm2708-dmaengine.c
++++ b/drivers/dma/bcm2708-dmaengine.c
+@@ -421,7 +421,12 @@ struct bcm2835_desc {
+ #define BCM2835_DMA_CHAN(n) ((n) << 8) /* Base address */
+ #define BCM2835_DMA_CHANIO(base, n) ((base) + BCM2835_DMA_CHAN(n))
+
+-#define MAX_LITE_TRANSFER 32768
++/*
++ * Max length on a Lite channel is 65535 bytes.
++ * DMA handles byte-enables on SDRAM reads and writes even on 128-bit accesses,
++ * but byte-enables don't exist on peripheral addresses, so align to 32-bit.
++ */
++#define MAX_LITE_TRANSFER (SZ_64K - 4)
+ #define MAX_NORMAL_TRANSFER 1073741824
+
+ static inline struct bcm2835_dmadev *to_bcm2835_dma_dev(struct dma_device *d)
+@@ -710,7 +715,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+ max_size = MAX_NORMAL_TRANSFER;
+ period_len = min(period_len, max_size);
+
+- d->frames = (buf_len-1) / period_len + 1;
++ d->frames = DIV_ROUND_UP(buf_len, period_len);
+
+ /* Allocate memory for control blocks */
+ d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb);
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
index 6523903..4211644 100644
--- a/drivers/mfd/arizona-core.c
@@ -923,10 +945,10 @@ index 1065095..edd011a 100644
unsigned int params_select; /* currently selected param for dai link */
diff --git a/include/sound/soc.h b/include/sound/soc.h
-index f6226914..a9389cf 100644
+index 8d948aa..e1b47ed 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
-@@ -954,7 +954,9 @@ struct snd_soc_dai_link {
+@@ -956,7 +956,9 @@ struct snd_soc_dai_link {
struct device_node *platform_of_node;
int be_id; /* optional ID for machine driver BE identification */
@@ -938,244 +960,57 @@ index f6226914..a9389cf 100644
unsigned int dai_fmt; /* format to set on init */
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
-index 3db2852..7c5699a 100644
+index 3db2852..25793a2 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
-@@ -75,3 +75,15 @@ config SND_BCM2708_SOC_RASPIDAC3
+@@ -75,3 +75,11 @@ config SND_BCM2708_SOC_RASPIDAC3
select SND_SOC_TPA6130A2
help
Say Y or M if you want to add support for RaspiDAC Rev.3x.
+
-+config SND_BCM2708_SOC_RPI_CODEC_WSP_PREINIT
-+ tristate
-+
+config SND_BCM2708_SOC_RPI_CODEC_WSP
+ tristate "Support for Cirrus sound pi"
+ depends on SND_BCM2708_SOC_I2S
+ select SND_SOC_WM5102
+ select SND_SOC_WM8804
-+ select SND_BCM2708_SOC_RPI_CODEC_WSP_PREINIT
+ help
+ Say Y or M if you want to add support for Cirrus sound pi
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
-index 621358b..65e120d 100644
+index 621358b..485af3c 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
-@@ -17,6 +17,8 @@ snd-soc-rpi-dac-objs := rpi-dac.o
+@@ -17,6 +17,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o
snd-soc-rpi-proto-objs := rpi-proto.o
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
snd-soc-raspidac3-objs := raspidac3.o
+snd-soc-rpi-wsp-objs := rpi-cirrus-sound-pi.o
-+snd-soc-rpi-wsp-preinit-objs := rpi-cirrus-sound-pi-preinit.o
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
-@@ -26,3 +28,5 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
+@@ -26,3 +27,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP) += snd-soc-rpi-wsp.o
-+obj-$(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP_PREINIT) += snd-soc-rpi-wsp-preinit.o
-diff --git a/sound/soc/bcm/rpi-cirrus-sound-pi-preinit.c b/sound/soc/bcm/rpi-cirrus-sound-pi-preinit.c
-new file mode 100644
-index 0000000..a2f17e4
---- /dev/null
-+++ b/sound/soc/bcm/rpi-cirrus-sound-pi-preinit.c
-@@ -0,0 +1,188 @@
-+/*
-+ * Cirrus Audio Card wm8804 preinit code
-+ *
-+ * Refactored out of the Cirrus Audio Card code to work around
-+ * init dependecy issues.
-+ *
-+ * Copyright 2015 Cirrus Logic Inc.
-+ *
-+ * Author: Nikesh Oswal, <Nikesh.Oswal@wolfsonmicro.com>
-+ * Author: Matthias Reichl, <hias@horus.com>
-+ * Partly based on sound/soc/bcm/iqaudio-dac.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/platform_device.h>
-+#include <linux/gpio.h>
-+#include <linux/delay.h>
-+#include <linux/io.h>
-+
-+#include <asm/system_info.h>
-+
-+/*TODO: Shift this to platform data*/
-+#define GPIO_WM8804_RST 8
-+#define GPIO_WM8804_MODE 2
-+#define GPIO_WM8804_SW_MODE 23
-+#define GPIO_WM8804_I2C_ADDR_B 18
-+#define GPIO_WM8804_I2C_ADDR_B_PLUS 13
-+
-+static void bcm2708_set_gpio_alt(int pin, int alt)
-+{
-+ /*
-+ * This is the common way to handle the GPIO pins for
-+ * the Raspberry Pi.
-+ * TODO This is a hack. Use pinmux / pinctrl.
-+ */
-+#define INP_GPIO(g) *(gpio+((g)/10)) &= ~(7<<(((g)%10)*3))
-+#define SET_GPIO_ALT(g,a) *(gpio+(((g)/10))) |= (((a)<=3?(a)+4:(a)==4?3:2)<<(((g)%10)*3))
-+ unsigned int *gpio;
-+ gpio = ioremap(GPIO_BASE, SZ_16K);
-+ INP_GPIO(pin);
-+ SET_GPIO_ALT(pin, alt);
-+ iounmap(gpio);
-+#undef INP_GPIO
-+#undef SET_GPIO_ALT
-+}
-+
-+static int wm8804_reset(void)
-+ {
-+ int ret;
-+ unsigned int gpio_wm8804_i2c_addr;
-+
-+ if ((system_rev & 0xffffff) >= 0x10) {
-+ /* Model B+ or later */
-+ gpio_wm8804_i2c_addr = GPIO_WM8804_I2C_ADDR_B_PLUS;
-+ } else {
-+ gpio_wm8804_i2c_addr = GPIO_WM8804_I2C_ADDR_B;
-+ }
-+
-+ if (!gpio_is_valid(GPIO_WM8804_RST)) {
-+ pr_err("Skipping unavailable gpio %d (%s)\n", GPIO_WM8804_RST, "wm8804_rst");
-+ return -ENOMEM;
-+ }
-+
-+ if (!gpio_is_valid(GPIO_WM8804_MODE)) {
-+ pr_err("Skipping unavailable gpio %d (%s)\n", GPIO_WM8804_MODE, "wm8804_mode");
-+ return -ENOMEM;
-+ }
-+
-+ if (!gpio_is_valid(GPIO_WM8804_SW_MODE)) {
-+ pr_err("Skipping unavailable gpio %d (%s)\n", GPIO_WM8804_SW_MODE, "wm8804_sw_mode");
-+ return -ENOMEM;
-+ }
-+
-+ if (!gpio_is_valid(gpio_wm8804_i2c_addr)) {
-+ pr_err("Skipping unavailable gpio %d (%s)\n", gpio_wm8804_i2c_addr, "wm8804_i2c_addr");
-+ return -ENOMEM;
-+ }
-+
-+ ret = gpio_request(GPIO_WM8804_RST, "wm8804_rst");
-+ if (ret < 0) {
-+ pr_err("gpio_request wm8804_rst failed\n");
-+ return ret;
-+ }
-+
-+ ret = gpio_request(GPIO_WM8804_MODE, "wm8804_mode");
-+ if (ret < 0) {
-+ pr_err("gpio_request wm8804_mode failed\n");
-+ return ret;
-+ }
-+
-+ ret = gpio_request(GPIO_WM8804_SW_MODE, "wm8804_sw_mode");
-+ if (ret < 0) {
-+ pr_err("gpio_request wm8804_sw_mode failed\n");
-+ return ret;
-+ }
-+
-+ ret = gpio_request(gpio_wm8804_i2c_addr, "wm8804_i2c_addr");
-+ if (ret < 0) {
-+ pr_err("gpio_request wm8804_i2c_addr failed\n");
-+ return ret;
-+ }
-+
-+ /*GPIO2 is used for SW/HW Mode Select and after Reset the same pin is used as
-+ I2C data line, so initially it is configured as GPIO OUT from BCM perspective*/
-+ /*Set SW Mode*/
-+ ret = gpio_direction_output(GPIO_WM8804_MODE, 1);
-+ if (ret < 0) {
-+ pr_err("gpio_direction_output wm8804_mode failed\n");
-+ }
-+
-+ /*Set 2 Wire (I2C) Mode*/
-+ ret = gpio_direction_output(GPIO_WM8804_SW_MODE, 0);
-+ if (ret < 0) {
-+ pr_err("gpio_direction_output wm8804_sw_mode failed\n");
-+ }
-+
-+ /*Set 2 Wire (I2C) Addr to 0x3A, writing 1 will make the Addr as 0x3B*/
-+ ret = gpio_direction_output(gpio_wm8804_i2c_addr, 0);
-+ if (ret < 0) {
-+ pr_err("gpio_direction_output wm8804_i2c_addr failed\n");
-+ }
-+
-+ /*Take WM8804 out of reset*/
-+ ret = gpio_direction_output(GPIO_WM8804_RST, 1);
-+ if (ret < 0) {
-+ pr_err("gpio_direction_output wm8804_rst failed\n");
-+ }
-+
-+ /*Put WM8804 in reset*/
-+ gpio_set_value(GPIO_WM8804_RST, 0);
-+ mdelay(500);
-+ /*Take WM8804 out of reset*/
-+ gpio_set_value(GPIO_WM8804_RST, 1);
-+ mdelay(500);
-+
-+ gpio_free(GPIO_WM8804_RST);
-+ gpio_free(GPIO_WM8804_MODE);
-+ gpio_free(GPIO_WM8804_SW_MODE);
-+ gpio_free(gpio_wm8804_i2c_addr);
-+
-+ /*GPIO2 is used for SW/HW Mode Select and after Reset the same pin is used as
-+ I2C data line, so after reset it is configured as I2C data line i.e ALT0 function*/
-+ bcm2708_set_gpio_alt(GPIO_WM8804_MODE, 0);
-+
-+ return ret;
-+}
-+
-+static int snd_rpi_wsp_preinit_probe(struct platform_device *pdev)
-+{
-+ int ret;
-+ struct device *dev = &pdev->dev;
-+
-+ dev_info(dev, "initializing wm8804 on Cirrus audio card\n");
-+ ret = wm8804_reset();
-+ if (ret)
-+ dev_err(dev, "wm8804_reset returned %d\n", ret);
-+
-+ return ret;
-+}
-+
-+#ifdef CONFIG_OF
-+static const struct of_device_id snd_rpi_wsp_preinit_of_match[] = {
-+ { .compatible = "wlf,rpi-wm5102-preinit", },
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, snd_rpi_wsp_preinit_of_match);
-+#endif /* CONFIG_OF */
-+
-+static struct platform_driver snd_rpi_wsp_preinit_driver = {
-+ .driver = {
-+ .name = "snd-rpi-wsp-preinit",
-+ .owner = THIS_MODULE,
-+ .of_match_table = of_match_ptr(snd_rpi_wsp_preinit_of_match),
-+ },
-+ .probe = snd_rpi_wsp_preinit_probe,
-+};
-+
-+module_platform_driver(snd_rpi_wsp_preinit_driver);
-+
-+MODULE_AUTHOR("Nikesh Oswal");
-+MODULE_AUTHOR("Liu Xin");
-+MODULE_AUTHOR("Matthias Reichl");
-+MODULE_DESCRIPTION("Cirrus sound pi wm8804 one-time initialisation code");
-+MODULE_LICENSE("GPL");
+diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c
+index 5e93cd6..aa8cd0f 100644
+--- a/sound/soc/bcm/bcm2708-i2s.c
++++ b/sound/soc/bcm/bcm2708-i2s.c
+@@ -881,7 +881,7 @@ static struct snd_pcm_hardware bcm2708_pcm_hardware = {
+ SNDRV_PCM_FMTBIT_S24_LE |
+ SNDRV_PCM_FMTBIT_S32_LE,
+ .period_bytes_min = 32,
+- .period_bytes_max = 64 * PAGE_SIZE,
++ .period_bytes_max = SZ_64K - 4,
+ .periods_min = 2,
+ .periods_max = 255,
+ .buffer_bytes_max = 128 * PAGE_SIZE,
diff --git a/sound/soc/bcm/rpi-cirrus-sound-pi.c b/sound/soc/bcm/rpi-cirrus-sound-pi.c
new file mode 100644
-index 0000000..f7b8839
+index 0000000..bc86996
--- /dev/null
+++ b/sound/soc/bcm/rpi-cirrus-sound-pi.c
-@@ -0,0 +1,530 @@
+@@ -0,0 +1,529 @@
+/*
+ * ASoC machine driver for Cirrus Audio Card (with a WM5102 and WM8804 codecs )
+ * connected to a Raspberry Pi
@@ -1571,7 +1406,7 @@ index 0000000..f7b8839
+ .stream_name = "SPDIF Tx/Rx",
+ .cpu_dai_name = "wm5102-aif2",
+ .codec_dai_name = "wm8804-spdif",
-+ .codec_name = "wm8804.1-003a",
++ .codec_name = "wm8804.1-003b",
+ .dai_fmt = SND_SOC_DAIFMT_I2S
+ | SND_SOC_DAIFMT_NB_NF
+ | SND_SOC_DAIFMT_CBM_CFM,
@@ -1701,13 +1536,12 @@ index 0000000..f7b8839
+
+module_platform_driver(snd_rpi_wsp_driver);
+
-+MODULE_SOFTDEP("pre: snd_soc_wm8804_i2c");
+MODULE_AUTHOR("Nikesh Oswal");
+MODULE_AUTHOR("Liu Xin");
+MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to Cirrus sound pi");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
-index ee91edc..6f19255 100644
+index ee91edc..b501471 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
@@ -1266,7 +1266,7 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,
@@ -1746,6 +1580,60 @@ index ee91edc..6f19255 100644
switch (dai_priv->clk) {
case ARIZONA_CLK_SYSCLK:
switch (priv->arizona->type) {
+@@ -1967,19 +1987,15 @@ static int arizona_enable_fll(struct arizona_fll *fll)
+
+ arizona_fll_dbg(fll, "Waiting for FLL lock...\n");
+ val = 0;
+- for (i = 0; i < 15; i++) {
+- if (i < 5)
+- usleep_range(200, 400);
+- else
+- msleep(20);
+-
++ for (i = 0; i < 25; i++) {
+ regmap_read(arizona->regmap,
+ ARIZONA_INTERRUPT_RAW_STATUS_5,
+ &val);
+ if (val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1)))
+ break;
++ msleep(10);
+ }
+- if (i == 15)
++ if (i == 25)
+ arizona_fll_warn(fll, "Timed out waiting for lock\n");
+ else
+ arizona_fll_dbg(fll, "FLL locked (%d polls)\n", i);
+@@ -1991,6 +2007,8 @@ static void arizona_disable_fll(struct arizona_fll *fll)
+ {
+ struct arizona *arizona = fll->arizona;
+ bool change;
++ int i;
++ unsigned int val;
+
+ regmap_update_bits_async(arizona->regmap, fll->base + 1,
+ ARIZONA_FLL1_FREERUN, ARIZONA_FLL1_FREERUN);
+@@ -2001,6 +2019,21 @@ static void arizona_disable_fll(struct arizona_fll *fll)
+ regmap_update_bits_async(arizona->regmap, fll->base + 1,
+ ARIZONA_FLL1_FREERUN, 0);
+
++ arizona_fll_dbg(fll, "Waiting for FLL disable...\n");
++ val = 0;
++ for (i = 0; i < 25; i++) {
++ regmap_read(arizona->regmap,
++ ARIZONA_INTERRUPT_RAW_STATUS_5,
++ &val);
++ if (!(val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1))))
++ break;
++ msleep(10);
++ }
++ if (i == 25)
++ arizona_fll_warn(fll, "Timed out waiting for disable\n");
++ else
++ arizona_fll_dbg(fll, "FLL disabled (%d polls)\n", i);
++
+ if (change)
+ pm_runtime_put_autosuspend(arizona->dev);
+ }
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c
index d476221..fc50c6d 100644
--- a/sound/soc/codecs/wm5102.c
@@ -2043,6 +1931,3 @@ index b6c12dc..e767365 100644
ret = snd_soc_dapm_add_path(&card->dapm, source, w, NULL, NULL);
if (ret)
---
-2.6.1
-
diff --git a/main/linux-rpi/rpi-dma-i2s-fix.patch b/main/linux-rpi/rpi-dma-i2s-fix.patch
deleted file mode 100644
index 82fa6dcf7c..0000000000
--- a/main/linux-rpi/rpi-dma-i2s-fix.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 8a2e9aec63f46deceacd0a92a66835a07fb18a31 Mon Sep 17 00:00:00 2001
-From: Matthias Reichl <hias@horus.com>
-Date: Sun, 8 Nov 2015 16:58:57 +0100
-Subject: [PATCH] bcm2708-dmaengine: fix calculation of cyclic DMA frames
-
-The calculation of the number of required frames was wrong which
-could lead to the last frame being longer than the requested period
-length and even the maximum supported transfer size.
-
-eg when requesting a 88208 bytes buffer with a period len of 22052
-(the defaults when playing a 44.1kHz stereo 16bit file with aplay)
-the code would allocate 3 frames, two with 22052 bytes and the
-last one with 44104 bytes instead of the expected 4 frames with
-22052 bytes each.
-
-Signed-off-by: Matthias Reichl <hias@horus.com>
----
- drivers/dma/bcm2708-dmaengine.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
-index 85ce18b..91eac60 100644
---- a/drivers/dma/bcm2708-dmaengine.c
-+++ b/drivers/dma/bcm2708-dmaengine.c
-@@ -710,7 +710,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
- max_size = MAX_NORMAL_TRANSFER;
- period_len = min(period_len, max_size);
-
-- d->frames = (buf_len-1) / period_len + 1;
-+ d->frames = DIV_ROUND_UP(buf_len, period_len);
-
- /* Allocate memory for control blocks */
- d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb);
---
-2.6.3
-
-
-From 8e469d0e00fa0f337e0e5ccdb504ce0ecf6ea6d6 Mon Sep 17 00:00:00 2001
-From: Matthias Reichl <hias@horus.com>
-Date: Sun, 8 Nov 2015 17:00:45 +0100
-Subject: [PATCH] bcm2708-i2s: match period_bytes_max to DMA controller limit
-
-bcm2708-dmaengine supports a maximum transfer length of 32k bytes on
-the lite channels. period_bytes_max should reflect this limit.
-
-Signed-off-by: Matthias Reichl <hias@horus.com>
----
- sound/soc/bcm/bcm2708-i2s.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c
-index 5e93cd6..b65d785 100644
---- a/sound/soc/bcm/bcm2708-i2s.c
-+++ b/sound/soc/bcm/bcm2708-i2s.c
-@@ -881,7 +881,7 @@ static struct snd_pcm_hardware bcm2708_pcm_hardware = {
- SNDRV_PCM_FMTBIT_S24_LE |
- SNDRV_PCM_FMTBIT_S32_LE,
- .period_bytes_min = 32,
-- .period_bytes_max = 64 * PAGE_SIZE,
-+ .period_bytes_max = SZ_32K,
- .periods_min = 2,
- .periods_max = 255,
- .buffer_bytes_max = 128 * PAGE_SIZE,
---
-2.6.3
-