mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
164 lines
3.8 KiB
Diff
164 lines
3.8 KiB
Diff
|
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";
|
||
|
+ };
|
||
|
+};
|