1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
From 98ac9b84709dc01ee936b6fe79eaac5e3a4aa6e7 Mon Sep 17 00:00:00 2001
From: Joerg Schambacher <joerg@hifiberry.com>
Date: Fri, 19 Jan 2024 10:44:22 +0100
Subject: [PATCH 1267/1295] 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
@@ -86,6 +86,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
@@ -1738,6 +1738,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>;
+ };
+};
|