brcm2708-gpu-fw: update to latest version
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.4 / 0369-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
1 From e4183dfba92b3adf88a9be7e073cf80c5bda2c69 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 369/423] Add dt param to force HiFiBerry DAC+ Pro into slave
5 mode
6
7 "dtoverlay=hifiberry-dacplus,slave"
8
9 Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
10 with Pi as master for bit and frame clock.
11
12 Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
13 ---
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(-)
18
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.
27
28
29 Name: hifiberry-digi
30 --- a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
31 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
32 @@ -41,7 +41,7 @@
33
34 fragment@3 {
35 target = <&sound>;
36 - frag3: __overlay__ {
37 + hifiberry_dacplus: __overlay__ {
38 compatible = "hifiberry,hifiberry-dacplus";
39 i2s-controller = <&i2s>;
40 status = "okay";
41 @@ -49,6 +49,8 @@
42 };
43
44 __overrides__ {
45 - 24db_digital_gain = <&frag3>,"hifiberry,24db_digital_gain?";
46 + 24db_digital_gain =
47 + <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
48 + slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
49 };
50 };
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
56
57 +static bool slave;
58 static bool snd_rpi_hifiberry_is_dacpro;
59 static bool digital_gain_0db_limit = true;
60
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;
64
65 - snd_rpi_hifiberry_is_dacpro
66 - = snd_rpi_hifiberry_dacplus_is_pro_card(codec);
67 + if (slave)
68 + snd_rpi_hifiberry_is_dacpro = false;
69 + else
70 + snd_rpi_hifiberry_is_dacpro =
71 + snd_rpi_hifiberry_dacplus_is_pro_card(codec);
72
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
76
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");
81 }
82
83 ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);