openwrt/target/linux/bcm27xx/patches-6.6/950-0878-DT-overlays-adds-support-for-Hifiberry-AMP4-Pro.patch
Álvaro Fernández Rojas 8c405cdccc bcm27xx: add 6.6 kernel patches
The patches were generated from the RPi repo with the following command:
git format-patch v6.6.34..rpi-6.1.y

Some patches needed rebasing and, as usual, the applied and reverted, wireless
drivers, Github workflows, READMEs and defconfigs patches were removed.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-06-18 18:52:49 +02:00

131 lines
4.6 KiB
Diff

From 607dd7d1529f719b342861f16654b36d868a5cc6 Mon Sep 17 00:00:00 2001
From: Joerg Schambacher <joerg@hifiberry.com>
Date: Fri, 19 Jan 2024 10:44:22 +0100
Subject: [PATCH 0878/1085] DT-overlays: adds support for Hifiberry AMP4 Pro
The AMP4 Pro uses a TI TAS5756 amplifier in master mode
and requires the DAC Plus card driver and the
pcm512x component driver with TAS support.
Signed-off-by: Joerg Schambacher <joerg@hifiberry.com>
---
arch/arm/boot/dts/overlays/Makefile | 1 +
arch/arm/boot/dts/overlays/README | 28 +++++++++
.../overlays/hifiberry-amp4pro-overlay.dts | 63 +++++++++++++++++++
3 files changed, 92 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -87,6 +87,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
hifiberry-amp.dtbo \
hifiberry-amp100.dtbo \
hifiberry-amp3.dtbo \
+ hifiberry-amp4pro.dtbo \
hifiberry-dac.dtbo \
hifiberry-dacplus.dtbo \
hifiberry-dacplusadc.dtbo \
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -1744,6 +1744,34 @@ Load: dtoverlay=hifiberry-amp3
Params: <None>
+Name: hifiberry-amp4pro
+Info: Configures the HifiBerry AMP4 Pro audio card
+Load: dtoverlay=hifiberry-amp4pro,<param>=<val>
+Params: 24db_digital_gain Allow gain to be applied via the TAS5756
+ Digital volume control. Enable with
+ "dtoverlay=hifiberry-amp4pro,24db_digital_gain"
+ (The default behaviour is that the Digital
+ volume control is limited to a maximum of
+ 0dB. ie. it can attenuate but not provide
+ gain. For most users, this will be desired
+ as it will prevent clipping. By appending
+ the 24dB_digital_gain parameter, the Digital
+ volume control will allow up to 24dB of
+ gain. If this parameter is enabled, it is the
+ responsibility of the user to ensure that
+ the Digital volume control is set to a value
+ that does not result in clipping/distortion!)
+ slave Force the amp into slave mode, using Pi as
+ master for bit clock and frame clock.
+ leds_off If set to 'true' the onboard indicator LEDs
+ are switched off at all times.
+ auto_mute If set to 'true' the amplifier is automatically
+ muted when it is not playing.
+ mute_ext_ctl The amplifier's HW mute control is enabled
+ in ALSA mixer and set to <val>.
+ Will be overwritten by ALSA user settings.
+
+
Name: hifiberry-dac
Info: Configures the HifiBerry DAC audio cards
Load: dtoverlay=hifiberry-dac
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
@@ -0,0 +1,63 @@
+// Definitions for HiFiBerry AMP4PRO
+/dts-v1/;
+/plugin/;
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+ compatible = "brcm,bcm2835";
+
+ fragment@0 {
+ target-path = "/";
+ __overlay__ {
+ dacpro_osc: dacpro_osc {
+ compatible = "hifiberry,dacpro-clk";
+ #clock-cells = <0>;
+ };
+ };
+ };
+
+ frag1: fragment@1 {
+ target = <&i2s_clk_consumer>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+
+ fragment@2 {
+ target = <&i2c1>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "okay";
+
+ tas5756@4d {
+ #sound-dai-cells = <0>;
+ compatible = "ti,tas5756";
+ reg = <0x4d>;
+ clocks = <&dacpro_osc>;
+ status = "okay";
+ };
+ };
+ };
+
+ fragment@3 {
+ target = <&sound>;
+ hifiberry_dacplus: __overlay__ {
+ compatible = "hifiberry,hifiberry-dacplus";
+ i2s-controller = <&i2s_clk_consumer>;
+ status = "okay";
+ mute-gpio = <&gpio 4 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ __overrides__ {
+ 24db_digital_gain =
+ <&hifiberry_dacplus>,"hifiberry-amp4,24db_digital_gain?";
+ leds_off = <&hifiberry_dacplus>,"hifiberry-amp4,leds_off?";
+ mute_ext_ctl = <&hifiberry_dacplus>,"hifiberry-amp4,mute_ext_ctl:0";
+ auto_mute = <&hifiberry_dacplus>,"hifiberry-amp4,auto_mute?";
+ slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?",
+ <&frag1>,"target:0=",<&i2s_clk_producer>,
+ <&hifiberry_dacplus>,"i2s-controller:0=",<&i2s_clk_producer>;
+ };
+};