brcm2708-gpu-fw: update to latest version
[oweals/openwrt.git] / target / linux / brcm2708 / patches-4.4 / 0368-Add-dt-param-to-force-HiFiBerry-DAC-Pro-into-slave-m.patch
1 From 23a2a66f68d9cef1664e904b741e074dab5b82d6 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] Add dt param to force HiFiBerry DAC+ Pro into slave mode
5
6 "dtoverlay=hifiberry-dacplus,slave"
7
8 Add 'slave' param to use HiFiBerry DAC+ Pro in slave mode,
9 with Pi as master for bit and frame clock.
10
11 Signed-off-by: DigitalDreamtime <clive.messer@digitaldreamtime.co.uk>
12 ---
13  arch/arm/boot/dts/overlays/README                        |  2 ++
14  arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts |  6 ++++--
15  sound/soc/bcm/hifiberry_dacplus.c                        | 10 ++++++++--
16  3 files changed, 14 insertions(+), 4 deletions(-)
17
18 --- a/arch/arm/boot/dts/overlays/README
19 +++ b/arch/arm/boot/dts/overlays/README
20 @@ -344,6 +344,8 @@ Params: 24db_digital_gain       Allow ga
21                                  responsibility of the user to ensure that
22                                  the Digital volume control is set to a value
23                                  that does not result in clipping/distortion!)
24 +        slave                   Force DAC+ Pro into slave mode, using Pi as
25 +                                master for bit clock and frame clock.
26  
27  
28  Name:   hifiberry-digi
29 --- a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
30 +++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
31 @@ -41,7 +41,7 @@
32  
33         fragment@3 {
34                 target = <&sound>;
35 -               frag3: __overlay__ {
36 +               hifiberry_dacplus: __overlay__ {
37                         compatible = "hifiberry,hifiberry-dacplus";
38                         i2s-controller = <&i2s>;
39                         status = "okay";
40 @@ -49,6 +49,8 @@
41         };
42  
43         __overrides__ {
44 -               24db_digital_gain = <&frag3>,"hifiberry,24db_digital_gain?";
45 +               24db_digital_gain =
46 +                       <&hifiberry_dacplus>,"hifiberry,24db_digital_gain?";
47 +               slave = <&hifiberry_dacplus>,"hifiberry-dacplus,slave?";
48         };
49  };
50 --- a/sound/soc/bcm/hifiberry_dacplus.c
51 +++ b/sound/soc/bcm/hifiberry_dacplus.c
52 @@ -47,6 +47,7 @@ struct pcm512x_priv {
53  /* Clock rate of CLK48EN attached to GPIO3 pin */
54  #define CLK_48EN_RATE 24576000UL
55  
56 +static bool slave;
57  static bool snd_rpi_hifiberry_is_dacpro;
58  static bool digital_gain_0db_limit = true;
59  
60 @@ -145,8 +146,11 @@ static int snd_rpi_hifiberry_dacplus_ini
61         struct snd_soc_codec *codec = rtd->codec;
62         struct pcm512x_priv *priv;
63  
64 -       snd_rpi_hifiberry_is_dacpro
65 -               = snd_rpi_hifiberry_dacplus_is_pro_card(codec);
66 +       if (slave)
67 +               snd_rpi_hifiberry_is_dacpro = false;
68 +       else
69 +               snd_rpi_hifiberry_is_dacpro =
70 +                               snd_rpi_hifiberry_dacplus_is_pro_card(codec);
71  
72         if (snd_rpi_hifiberry_is_dacpro) {
73                 struct snd_soc_dai_link *dai = rtd->dai_link;
74 @@ -314,6 +318,8 @@ static int snd_rpi_hifiberry_dacplus_pro
75  
76                 digital_gain_0db_limit = !of_property_read_bool(
77                         pdev->dev.of_node, "hifiberry,24db_digital_gain");
78 +               slave = of_property_read_bool(pdev->dev.of_node,
79 +                                               "hifiberry-dacplus,slave");
80         }
81  
82         ret = snd_soc_register_card(&snd_rpi_hifiberry_dacplus);