1 From 0975e732daee077f1b50d3869a37fb07b255f78a Mon Sep 17 00:00:00 2001
2 From: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
3 Date: Sun, 29 May 2016 05:22:29 +0100
4 Subject: [PATCH 363/381] Add dt param to force HiFiBerry DAC+ Pro into slave
7 "dtoverlay=hifiberry-dacplus,slave"
9 Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
10 with Pi as master for bit and frame clock.
12 Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
14 arch/arm/boot/dts/overlays/README | 2 ++
15 arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts | 6 ++++--
16 sound/soc/bcm/hifiberry_dacplus.c | 10 ++++++++--
17 3 files changed, 14 insertions(+), 4 deletions(-)
19 --- a/arch/arm/boot/dts/overlays/README
20 +++ b/arch/arm/boot/dts/overlays/README
21 @@ -344,6 +344,8 @@ Params: 24db_digital_gain Allow ga
22 responsibility of the user to ensure that
23 the Digital volume control is set to a value
24 that does not result in clipping/distortion!)
25 + slave Force DAC+ Pro into slave mode, using Pi as
26 + master for bit clock and frame clock.
30 --- a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
31 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
36 - frag3: __overlay__ {
37 + hifiberry_dacplus: __overlay__ {
38 compatible = "hifiberry,hifiberry-dacplus";
39 i2s-controller = <&i2s>;
45 - 24db_digital_gain = <&frag3>,"hifiberry,24db_digital_gain?";
47 + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
48 + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
51 --- a/sound/soc/bcm/hifiberry_dacplus.c
52 +++ b/sound/soc/bcm/hifiberry_dacplus.c
53 @@ -47,6 +47,7 @@ struct pcm512x_priv {
54 /* Clock rate of CLK48EN attached to GPIO3 pin */
55 #define CLK_48EN_RATE 24576000UL
58 static bool snd_rpi_hifiberry_is_dacpro;
59 static bool digital_gain_0db_limit = true;
61 @@ -145,8 +146,11 @@ static int snd_rpi_hifiberry_dacplus_ini
62 struct snd_soc_codec *codec = rtd->codec;
63 struct pcm512x_priv *priv;
65 - snd_rpi_hifiberry_is_dacpro
66 - = snd_rpi_hifiberry_dacplus_is_pro_card(codec);
68 + snd_rpi_hifiberry_is_dacpro = false;
70 + snd_rpi_hifiberry_is_dacpro =
71 + snd_rpi_hifiberry_dacplus_is_pro_card(codec);
73 if (snd_rpi_hifiberry_is_dacpro) {
74 struct snd_soc_dai_link *dai = rtd->dai_link;
75 @@ -314,6 +318,8 @@ static int snd_rpi_hifiberry_dacplus_pro
77 digital_gain_0db_limit = !of_property_read_bool(
78 pdev->dev.of_node, "hifiberry,24db_digital_gain");
79 + slave = of_property_read_bool(pdev->dev.of_node,
80 + "hifiberry-dacplus,slave");
83 ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);