mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-05 04:16:46 +02:00
main/linux-rpi: upgrade to 4.1.15, update patches and config
This commit is contained in:
parent
218c9e63e3
commit
57a77853ac
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
67
main/linux-rpi/gpio-mcp23s08-pullups.patch
Normal file
67
main/linux-rpi/gpio-mcp23s08-pullups.patch
Normal file
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user