12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- From 8f9baa887c3328ee17a78b05eba51af6c8ffc83e Mon Sep 17 00:00:00 2001
- From: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
- Date: Sun, 29 May 2016 05:22:29 +0100
- Subject: [PATCH] Add dt param to force HiFiBerry DAC+ Pro into slave mode
- "dtoverlay=hifiberry-dacplus,slave"
- Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
- with Pi as master for bit and frame clock.
- Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
- ---
- arch/arm/boot/dts/overlays/README | 2 ++
- arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts | 6 ++++--
- sound/soc/bcm/hifiberry_dacplus.c | 10 ++++++++--
- 3 files changed, 14 insertions(+), 4 deletions(-)
- --- a/arch/arm/boot/dts/overlays/README
- +++ b/arch/arm/boot/dts/overlays/README
- @@ -344,6 +344,8 @@ Params: 24db_digital_gain Allow ga
- 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 DAC+ Pro into slave mode, using Pi as
- + master for bit clock and frame clock.
-
-
- Name: hifiberry-digi
- --- a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
- +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
- @@ -41,7 +41,7 @@
-
- fragment@3 {
- target = <&sound>;
- - frag3: __overlay__ {
- + hifiberry_dacplus: __overlay__ {
- compatible = "hifiberry,hifiberry-dacplus";
- i2s-controller = <&i2s>;
- status = "okay";
- @@ -49,6 +49,8 @@
- };
-
- __overrides__ {
- - 24db_digital_gain = <&frag3>,"hifiberry,24db_digital_gain?";
- + 24db_digital_gain =
- + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
- + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
- };
- };
- --- a/sound/soc/bcm/hifiberry_dacplus.c
- +++ b/sound/soc/bcm/hifiberry_dacplus.c
- @@ -47,6 +47,7 @@ struct pcm512x_priv {
- /* Clock rate of CLK48EN attached to GPIO3 pin */
- #define CLK_48EN_RATE 24576000UL
-
- +static bool slave;
- static bool snd_rpi_hifiberry_is_dacpro;
- static bool digital_gain_0db_limit = true;
-
- @@ -145,8 +146,11 @@ static int snd_rpi_hifiberry_dacplus_ini
- struct snd_soc_codec *codec = rtd->codec;
- struct pcm512x_priv *priv;
-
- - snd_rpi_hifiberry_is_dacpro
- - = snd_rpi_hifiberry_dacplus_is_pro_card(codec);
- + if (slave)
- + snd_rpi_hifiberry_is_dacpro = false;
- + else
- + snd_rpi_hifiberry_is_dacpro =
- + snd_rpi_hifiberry_dacplus_is_pro_card(codec);
-
- if (snd_rpi_hifiberry_is_dacpro) {
- struct snd_soc_dai_link *dai = rtd->dai_link;
- @@ -314,6 +318,8 @@ static int snd_rpi_hifiberry_dacplus_pro
-
- digital_gain_0db_limit = !of_property_read_bool(
- pdev->dev.of_node, "hifiberry,24db_digital_gain");
- + slave = of_property_read_bool(pdev->dev.of_node,
- + "hifiberry-dacplus,slave");
- }
-
- ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);
|