From 20402106a376dcc4a766d3b0cee801ce29ba76d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Thu, 7 Jul 2016 09:22:07 +0200 Subject: brcm2708: update linux 4.4 patches to latest version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As usual these patches were extracted and rebased from the raspberry pi repo: https://github.com/raspberrypi/linux/tree/rpi-4.4.y Signed-off-by: Álvaro Fernández Rojas --- ...0X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch | 578 +++++++++++++++++++++ 1 file changed, 578 insertions(+) create mode 100644 target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch (limited to 'target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch') diff --git a/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch b/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch new file mode 100644 index 0000000000..3b348506a0 --- /dev/null +++ b/target/linux/brcm2708/patches-4.4/0305-BCM270X_DT-Sound-DT-adjustments-for-Dynamic-DT.patch @@ -0,0 +1,578 @@ +From ef21e99d52371ca26385dce327687880143316a1 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Tue, 26 Apr 2016 10:44:59 +0100 +Subject: [PATCH 305/423] BCM270X_DT: Sound DT adjustments for Dynamic DT + +There are a number of issues when loading and unloading overlays for +sound cards: +1) The "sound" and "audio" nodes must be children of a bus node, such + as "/soc", otherwise the DT changes don't result in platform devices + being created and deleted. +2) The "/sound" node must have a "disabled" status property, otherwise + setting the status to "okay" won't be detected. +3) ALSA doesn't like having components unloaded under its feet, and it + is easy to deadlock or crash. Ordering the overlay fragments so that + the sound card appears last avoids this problem. + +Signed-off-by: Phil Elwell +--- + arch/arm/boot/dts/bcm2708_common.dtsi | 23 +++++++++--------- + .../dts/overlays/akkordion-iqdacplus-overlay.dts | 28 +++++++++++----------- + .../boot/dts/overlays/boomberry-dac-overlay.dts | 22 ++++++++--------- + .../boot/dts/overlays/boomberry-digi-overlay.dts | 20 ++++++++-------- + .../boot/dts/overlays/hifiberry-amp-overlay.dts | 20 ++++++++-------- + .../boot/dts/overlays/hifiberry-dac-overlay.dts | 22 ++++++++--------- + .../dts/overlays/hifiberry-dacplus-overlay.dts | 22 ++++++++--------- + .../boot/dts/overlays/hifiberry-digi-overlay.dts | 20 ++++++++-------- + arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts | 20 ++++++++-------- + .../boot/dts/overlays/iqaudio-dacplus-overlay.dts | 22 ++++++++--------- + arch/arm/boot/dts/overlays/raspidac3-overlay.dts | 20 ++++++++-------- + arch/arm/boot/dts/overlays/rpi-dac-overlay.dts | 22 ++++++++--------- + arch/arm/boot/dts/overlays/rpi-proto-overlay.dts | 20 ++++++++-------- + 13 files changed, 141 insertions(+), 140 deletions(-) + +--- a/arch/arm/boot/dts/bcm2708_common.dtsi ++++ b/arch/arm/boot/dts/bcm2708_common.dtsi +@@ -34,17 +34,6 @@ + clocks = &clocks; + }; + +- /* Onboard audio */ +- audio: audio { +- compatible = "brcm,bcm2835-audio"; +- brcm,pwm-channels = <8>; +- status = "disabled"; +- }; +- +- /* External sound card */ +- sound: sound { +- }; +- + soc: soc { + compatible = "simple-bus"; + #address-cells = <1>; +@@ -313,6 +302,18 @@ + compatible = "brcm,bcm2835-thermal"; + firmware = <&firmware>; + }; ++ ++ /* Onboard audio */ ++ audio: audio { ++ compatible = "brcm,bcm2835-audio"; ++ brcm,pwm-channels = <8>; ++ status = "disabled"; ++ }; ++ ++ /* External sound card */ ++ sound: sound { ++ status = "disabled"; ++ }; + }; + + clocks: clocks { +--- a/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts ++++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts +@@ -6,25 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- frag0: __overlay__ { +- compatible = "iqaudio,iqaudio-dac"; +- card_name = "Akkordion"; +- dai_name = "IQaudIO DAC"; +- dai_stream_name = "IQaudIO DAC HiFi"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -40,7 +28,19 @@ + }; + }; + ++ fragment@2 { ++ target = <&sound>; ++ frag2: __overlay__ { ++ compatible = "iqaudio,iqaudio-dac"; ++ card_name = "Akkordion"; ++ dai_name = "IQaudIO DAC"; ++ dai_stream_name = "IQaudIO DAC HiFi"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ + __overrides__ { +- 24db_digital_gain = <&frag0>,"iqaudio,24db_digital_gain?"; ++ 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?"; + }; + }; +--- a/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts ++++ b/arch/arm/boot/dts/overlays/boomberry-dac-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- frag0: __overlay__ { +- compatible = "boomberry,boomberry-dac"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -37,7 +28,16 @@ + }; + }; + ++ fragment@2 { ++ target = <&sound>; ++ frag2: __overlay__ { ++ compatible = "boomberry,boomberry-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ + __overrides__ { +- 24db_digital_gain = <&frag0>,"boomberry,24db_digital_gain?"; ++ 24db_digital_gain = <&frag2>,"boomberry,24db_digital_gain?"; + }; + }; +--- a/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts ++++ b/arch/arm/boot/dts/overlays/boomberry-digi-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "boomberry,boomberry-digi"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -36,4 +27,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "boomberry,boomberry-digi"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts ++++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "hifiberry,hifiberry-amp"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -36,4 +27,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "hifiberry,hifiberry-amp"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts ++++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts +@@ -6,23 +6,14 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "hifiberry,hifiberry-dac"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { +- target-path = "/"; ++ fragment@1 { ++ target = <&soc>; + __overlay__ { + pcm5102a-codec { + #sound-dai-cells = <0>; +@@ -31,4 +22,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "hifiberry,hifiberry-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts ++++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts +@@ -16,22 +16,13 @@ + }; + + fragment@1 { +- target = <&sound>; +- frag1: __overlay__ { +- compatible = "hifiberry,hifiberry-dacplus"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@2 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@3 { ++ fragment@2 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -48,7 +39,16 @@ + }; + }; + ++ fragment@3 { ++ target = <&sound>; ++ frag3: __overlay__ { ++ compatible = "hifiberry,hifiberry-dacplus"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ + __overrides__ { +- 24db_digital_gain = <&frag1>,"hifiberry,24db_digital_gain?"; ++ 24db_digital_gain = <&frag3>,"hifiberry,24db_digital_gain?"; + }; + }; +--- a/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts ++++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "hifiberry,hifiberry-digi"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -36,4 +27,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "hifiberry,hifiberry-digi"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts ++++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "iqaudio,iqaudio-dac"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -36,4 +27,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "iqaudio,iqaudio-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts ++++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- frag0: __overlay__ { +- compatible = "iqaudio,iqaudio-dac"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -37,7 +28,16 @@ + }; + }; + ++ fragment@2 { ++ target = <&sound>; ++ frag2: __overlay__ { ++ compatible = "iqaudio,iqaudio-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; ++ + __overrides__ { +- 24db_digital_gain = <&frag0>,"iqaudio,24db_digital_gain?"; ++ 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?"; + }; + }; +--- a/arch/arm/boot/dts/overlays/raspidac3-overlay.dts ++++ b/arch/arm/boot/dts/overlays/raspidac3-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "jg,raspidacv3"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -42,4 +33,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "jg,raspidacv3"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts ++++ b/arch/arm/boot/dts/overlays/rpi-dac-overlay.dts +@@ -6,23 +6,14 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "rpi,rpi-dac"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { +- target-path = "/"; ++ fragment@1 { ++ target = <&soc>; + __overlay__ { + pcm1794a-codec { + #sound-dai-cells = <0>; +@@ -31,4 +22,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "rpi,rpi-dac"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; +--- a/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts ++++ b/arch/arm/boot/dts/overlays/rpi-proto-overlay.dts +@@ -6,22 +6,13 @@ + compatible = "brcm,bcm2708"; + + fragment@0 { +- target = <&sound>; +- __overlay__ { +- compatible = "rpi,rpi-proto"; +- i2s-controller = <&i2s>; +- status = "okay"; +- }; +- }; +- +- fragment@1 { + target = <&i2s>; + __overlay__ { + status = "okay"; + }; + }; + +- fragment@2 { ++ fragment@1 { + target = <&i2c1>; + __overlay__ { + #address-cells = <1>; +@@ -36,4 +27,13 @@ + }; + }; + }; ++ ++ fragment@2 { ++ target = <&sound>; ++ __overlay__ { ++ compatible = "rpi,rpi-proto"; ++ i2s-controller = <&i2s>; ++ status = "okay"; ++ }; ++ }; + }; -- cgit v1.2.3