Skip to content

Commit b2c0969

Browse files
j-schambacherpelwell
authored andcommitted
sound: Add the HiFiBerry DAC+HD version
This adds the driver for the DAC+HD version supporting HiFiBerry's PCM179x based DACs. It also adds PLL control for clock generation. Signed-off-by: Joerg Schambacher <[email protected]>
1 parent c8fbe9c commit b2c0969

File tree

13 files changed

+696
-0
lines changed

13 files changed

+696
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
5757
hifiberry-dacplusadc.dtbo \
5858
hifiberry-dacplusadcpro.dtbo \
5959
hifiberry-dacplusdsp.dtbo \
60+
hifiberry-dacplushd.dtbo \
6061
hifiberry-digi.dtbo \
6162
hifiberry-digi-pro.dtbo \
6263
hy28a.dtbo \

arch/arm/boot/dts/overlays/README

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,12 @@ Load: dtoverlay=hifiberry-dacplusdsp
956956
Params: <None>
957957

958958

959+
Name: hifiberry-dacplushd
960+
Info: Configures the HifiBerry DAC+ HD audio card
961+
Load: dtoverlay=hifiberry-dacplushd
962+
Params: <None>
963+
964+
959965
Name: hifiberry-digi
960966
Info: Configures the HifiBerry Digi and Digi+ audio card
961967
Load: dtoverlay=hifiberry-digi
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
// Definitions for HiFiBerry DAC+ HD
2+
/dts-v1/;
3+
/plugin/;
4+
5+
#include <dt-bindings/gpio/gpio.h>
6+
7+
/ {
8+
compatible = "brcm,bcm2835";
9+
10+
fragment@0 {
11+
target-path = "/clocks";
12+
__overlay__ {
13+
dachd_osc: pll_dachd_osc {
14+
compatible = "hifiberry,dachd-clk";
15+
#clock-cells = <0>;
16+
};
17+
};
18+
};
19+
20+
fragment@1 {
21+
target = <&i2s>;
22+
__overlay__ {
23+
status = "okay";
24+
};
25+
};
26+
27+
fragment@2 {
28+
target = <&i2c1>;
29+
__overlay__ {
30+
#address-cells = <1>;
31+
#size-cells = <0>;
32+
status = "okay";
33+
34+
pcm1792a@4c {
35+
compatible = "ti,pcm1792a";
36+
#sound-dai-cells = <0>;
37+
#clock-cells = <0>;
38+
clocks = <&dachd_osc>;
39+
reg = <0x4c>;
40+
status = "okay";
41+
};
42+
pll: pll@62 {
43+
compatible = "hifiberry,dachd-clk";
44+
#clock-cells = <0>;
45+
reg = <0x62>;
46+
clocks = <&dachd_osc>;
47+
status = "okay";
48+
common_pll_regs = [
49+
02 53 03 00 07 20 0F 00
50+
10 0D 11 1D 12 0D 13 8C
51+
14 8C 15 8C 16 8C 17 8C
52+
18 2A 1C 00 1D 0F 1F 00
53+
2A 00 2C 00 2F 00 30 00
54+
31 00 32 00 34 00 37 00
55+
38 00 39 00 3A 00 3B 01
56+
3E 00 3F 00 40 00 41 00
57+
5A 00 5B 00 95 00 96 00
58+
97 00 98 00 99 00 9A 00
59+
9B 00 A2 00 A3 00 A4 00
60+
B7 92 ];
61+
192k_pll_regs = [
62+
1A 0C 1B 35 1E F0 20 09
63+
21 50 2B 02 2D 10 2E 40
64+
33 01 35 22 36 80 3C 22
65+
3D 46 ];
66+
96k_pll_regs = [
67+
1A 0C 1B 35 1E F0 20 09
68+
21 50 2B 02 2D 10 2E 40
69+
33 01 35 47 36 00 3C 32
70+
3D 46 ];
71+
48k_pll_regs = [
72+
1A 0C 1B 35 1E F0 20 09
73+
21 50 2B 02 2D 10 2E 40
74+
33 01 35 90 36 00 3C 42
75+
3D 46 ];
76+
176k4_pll_regs = [
77+
1A 3D 1B 09 1E F3 20 13
78+
21 75 2B 04 2D 11 2E E0
79+
33 02 35 25 36 C0 3C 22
80+
3D 7A ];
81+
88k2_pll_regs = [
82+
1A 3D 1B 09 1E F3 20 13
83+
21 75 2B 04 2D 11 2E E0
84+
33 01 35 4D 36 80 3C 32
85+
3D 7A ];
86+
44k1_pll_regs = [
87+
1A 3D 1B 09 1E F3 20 13
88+
21 75 2B 04 2D 11 2E E0
89+
33 01 35 9D 36 00 3C 42
90+
3D 7A ];
91+
};
92+
};
93+
};
94+
95+
fragment@3 {
96+
target = <&sound>;
97+
__overlay__ {
98+
compatible = "hifiberry,hifiberry-dacplushd";
99+
i2s-controller = <&i2s>;
100+
clocks = <&pll 0>;
101+
reset-gpio = <&gpio 16 GPIO_ACTIVE_LOW>;
102+
status = "okay";
103+
};
104+
};
105+
106+
};

arch/arm/configs/bcm2709_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,7 @@ CONFIG_SND_BCM2835_SOC_I2S=m
975975
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
976976
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
977977
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
978+
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
978979
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m
979980
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m
980981
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m

arch/arm/configs/bcm2711_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,7 @@ CONFIG_SND_BCM2835_SOC_I2S=m
989989
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
990990
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
991991
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
992+
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
992993
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m
993994
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m
994995
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m

arch/arm/configs/bcmrpi_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,7 @@ CONFIG_SND_BCM2835_SOC_I2S=m
967967
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
968968
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
969969
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
970+
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
970971
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m
971972
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m
972973
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m

arch/arm64/configs/bcm2711_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@ CONFIG_SND_BCM2835_SOC_I2S=m
978978
CONFIG_SND_BCM2708_SOC_GOOGLEVOICEHAT_SOUNDCARD=m
979979
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
980980
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
981+
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
981982
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC=m
982983
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO=m
983984
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP=m

arch/arm64/configs/bcmrpi3_defconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,7 @@ CONFIG_SND_SOC=m
811811
CONFIG_SND_BCM2835_SOC_I2S=m
812812
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
813813
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
814+
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD=m
814815
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
815816
CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
816817
CONFIG_SND_BCM2708_SOC_RPI_DAC=m

drivers/clk/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ obj-$(CONFIG_COMMON_CLK_ASPEED) += clk-aspeed.o
3232
obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
3333
obj-$(CONFIG_CLK_HSDK) += clk-hsdk-pll.o
3434
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += clk-hifiberry-dacpro.o
35+
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD) += clk-hifiberry-dachd.o
3536
obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
3637
obj-$(CONFIG_COMMON_CLK_MAX9485) += clk-max9485.o
3738
obj-$(CONFIG_ARCH_MOXART) += clk-moxart.o

0 commit comments

Comments
 (0)