From 607dd7d1529f719b342861f16654b36d868a5cc6 Mon Sep 17 00:00:00 2001 From: Joerg Schambacher 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 --- 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: +Name: hifiberry-amp4pro +Info: Configures the HifiBerry AMP4 Pro audio card +Load: dtoverlay=hifiberry-amp4pro,= +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 . + 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 + +/ { + 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>; + }; +};