diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0988-overlays-Add-ghost-amp-overlay.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0988-overlays-Add-ghost-amp-overlay.patch | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0988-overlays-Add-ghost-amp-overlay.patch b/target/linux/bcm27xx/patches-5.4/950-0988-overlays-Add-ghost-amp-overlay.patch new file mode 100644 index 0000000000..7404bf7f7a --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0988-overlays-Add-ghost-amp-overlay.patch @@ -0,0 +1,163 @@ +From 96f25d50e2352922e16ae74bb16fd8b6985f0f66 Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.com> +Date: Wed, 30 Sep 2020 12:17:48 +0100 +Subject: [PATCH] overlays: Add ghost-amp overlay + +Add an overlay for the Ghost amplifier. + +Signed-off-by: Phil Elwell <phil@raspberrypi.com> +--- + arch/arm/boot/dts/overlays/Makefile | 1 + + arch/arm/boot/dts/overlays/README | 7 ++ + .../boot/dts/overlays/ghost-amp-overlay.dts | 119 ++++++++++++++++++ + 3 files changed, 127 insertions(+) + create mode 100644 arch/arm/boot/dts/overlays/ghost-amp-overlay.dts + +--- a/arch/arm/boot/dts/overlays/Makefile ++++ b/arch/arm/boot/dts/overlays/Makefile +@@ -45,6 +45,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \ + exc3000.dtbo \ + fe-pi-audio.dtbo \ + fsm-demo.dtbo \ ++ ghost-amp.dtbo \ + goodix.dtbo \ + googlevoicehat-soundcard.dtbo \ + gpio-fan.dtbo \ +--- a/arch/arm/boot/dts/overlays/README ++++ b/arch/arm/boot/dts/overlays/README +@@ -775,6 +775,13 @@ Load: dtoverlay=fsm-demo,<param>=<val> + Params: fsm_debug Enable debug logging (default off) + + ++Name: ghost-amp ++Info: An overlay for the Ghost amplifier. ++Load: dtoverlay=ghost-amp,<param>=<val> ++Params: fsm_debug Enable debug logging of the GPIO FSM (default ++ off) ++ ++ + Name: goodix + Info: Enables I2C connected Goodix gt9271 multiple touch controller using + GPIOs 4 and 17 (pins 7 and 11 on GPIO header) for interrupt and reset. +--- /dev/null ++++ b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts +@@ -0,0 +1,119 @@ ++// Overlay for the PCM5122-based Ghost amplifier using gpio-fsm ++/dts-v1/; ++/plugin/; ++ ++#include <dt-bindings/gpio/gpio-fsm.h> ++ ++#define ENABLE GF_SW(0) ++#define FAULT GF_IP(0) // GPIO5 ++#define RELAY1 GF_OP(0) // GPIO22 ++#define RELAY2 GF_OP(1) // GPIO23 ++ ++/ { ++ compatible = "brcm,bcm2835"; ++ ++ fragment@0 { ++ target = <&i2s>; ++ __overlay__ { ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@1 { ++ target = <&i2c1>; ++ __overlay__ { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ status = "okay"; ++ ++ pcm5122@4c { ++ #sound-dai-cells = <0>; ++ compatible = "ti,pcm5122"; ++ reg = <0x4c>; ++ AVDD-supply = <&vdd_3v3_reg>; ++ DVDD-supply = <&vdd_3v3_reg>; ++ CPVDD-supply = <&vdd_3v3_reg>; ++ status = "okay"; ++ }; ++ }; ++ }; ++ ++ fragment@2 { ++ target = <&sound>; ++ iqaudio_dac: __overlay__ { ++ compatible = "iqaudio,iqaudio-dac"; ++ i2s-controller = <&i2s>; ++ mute-gpios = <& 0 0>; ++ iqaudio-dac,auto-mute-amp; ++ status = "okay"; ++ }; ++ }; ++ ++ fragment@3 { ++ target-path = "/"; ++ __overlay__ { ++ amp: ghost-amp { ++ compatible = "rpi,gpio-fsm"; ++ ++ debug = <0>; ++ gpio-controller; ++ #gpio-cells = <2>; ++ num-soft-gpios = <1>; ++ gpio-line-names = "enable"; ++ input-gpios = <&gpio 5 1>; // FAULT (active low) ++ output-gpios = <&gpio 22 0>, // RELAY1 ++ <&gpio 23 0>; // RELAY2 ++ shutdown-timeout-ms = <1000>; ++ ++ amp_off { ++ start_state; ++ shutdown_state; ++ ++ set = <RELAY2 0>, ++ <RELAY1 0>; ++ amp_on_1 = <ENABLE 1>; ++ fault = <FAULT 1>; ++ }; ++ ++ amp_on_1 { ++ set = <RELAY1 1>; ++ amp_on = <GF_DELAY 1500>; ++ amp_off = <ENABLE 0>; ++ fault = <FAULT 1>; ++ }; ++ ++ amp_on { ++ set = <RELAY2 1>; ++ amp_off_wait = <ENABLE 0>; ++ fault = <FAULT 1>; ++ }; ++ ++ amp_off_wait { ++ amp_off_1 = <GF_DELAY (30*60*1000)>, ++ <GF_SHUTDOWN 0>; ++ amp_on = <ENABLE 1>; ++ fault = <FAULT 1>; ++ }; ++ ++ amp_off_1 { ++ set = <RELAY2 0>; ++ amp_on = <ENABLE 1>; ++ amp_off = <GF_DELAY 100>; ++ fault = <FAULT 1>; ++ }; ++ ++ // Keep this a distinct state to prevent ++ // changes and for the diagnostic output ++ fault { ++ set = <RELAY2 0>, ++ <RELAY1 0>; ++ shutdown_state; ++ }; ++ }; ++ }; ++ }; ++ ++ __overrides__ { ++ fsm_debug = <&>,"debug:0"; ++ }; ++}; |