47d97e7bd5
See upstream - https://github.com/raspberrypi/documentation/issues/1671 https://github.com/raspberrypi/documentation/pull/1673 Quoted here: * Only Device Tree nodes at the top level of the tree and children of a bus node will be probed. For nodes added at run-time there is the further limitation that the bus must register for notifications of the addition and removal of children. However, there are exceptions that break this rule and cause confusion: the kernel explicitly scans the entire tree for some device types - clocks and interrupt controller being the two main ones - in order to (for clocks) initialise them early and/or (for interrupt controllers) in a particular order. This search mechanism only happens during booting and so doesn't work for nodes added by an overlay at run-time. It is therefore recommended for overlays to place fixed-clock nodes in the root of the tree unless it is guaranteed that the overlay will not be used at run-time.
118 lines
2.3 KiB
Text
118 lines
2.3 KiB
Text
/dts-v1/;
|
|
/plugin/;
|
|
|
|
/ {
|
|
compatible = "brcm,bcm2708";
|
|
|
|
fragment@0 {
|
|
target = <&i2s>;
|
|
__overlay__ {
|
|
#sound-dai-cells = <0>;
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
fragment@1 {
|
|
target-path = "/";
|
|
__overlay__ {
|
|
ac10x_mclk: codec-mclk {
|
|
compatible = "fixed-clock";
|
|
#clock-cells = <0>;
|
|
clock-frequency = <24000000>;
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@2 {
|
|
target = <&gpio>;
|
|
__overlay__ {
|
|
spk_amp_pins: spk_pins {
|
|
brcm,pins = <17 22>;
|
|
brcm,function = <1 0>; /* out in */
|
|
brcm,pull = <0 0>; /* - - */
|
|
};
|
|
gpclk0_pins: gpclk0_pins {
|
|
brcm,pins = <4>;
|
|
brcm,function = <4>; /* alt func 0 */
|
|
brcm,pull = <0>; /* - */
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@3 {
|
|
target = <&i2c1>;
|
|
__overlay__ {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
status = "okay";
|
|
|
|
ac101: ac101@1a{
|
|
compatible = "x-power,ac101";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&spk_amp_pins &gpclk0_pins>;
|
|
spk-amp-switch-gpios = <&gpio 17 0>;
|
|
switch-irq-gpios = <&gpio 22 0>;
|
|
reg = <0x1a>;
|
|
#sound-dai-cells = <0>;
|
|
};
|
|
|
|
ac108_a: ac108@35{
|
|
compatible = "x-power,ac108_0";
|
|
reg = <0x35>;
|
|
#sound-dai-cells = <0>;
|
|
data-protocol = <0>;
|
|
tdm-chips-count = <2>;
|
|
};
|
|
|
|
ac108_b: ac108@3b{
|
|
compatible = "x-power,ac108_1";
|
|
reg = <0x3b>;
|
|
#sound-dai-cells = <0>;
|
|
data-protocol = <0>;
|
|
tdm-chips-count = <2>;
|
|
};
|
|
};
|
|
};
|
|
|
|
fragment@4 {
|
|
target = <&sound>;
|
|
|
|
sound_overlay: __overlay__ {
|
|
compatible = "seeed-voicecard";
|
|
seeed-voice-card,name = "seeed-8mic-voicecard";
|
|
seeed-voice-card,channels-playback-override = <8>;
|
|
seeed-voice-card,channels-capture-override = <8>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
status = "okay";
|
|
|
|
seeed-voice-card,dai-link@0 {
|
|
format = "dsp_a";
|
|
bitclock-master = <&codec0_dai>;
|
|
frame-master = <&codec0_dai>;
|
|
/* bitclock-inversion; */
|
|
/* frame-inversion; */
|
|
reg = <0>;
|
|
|
|
cpu {
|
|
sound-dai = <&i2s>;
|
|
dai-tdm-slot-num = <2>;
|
|
dai-tdm-slot-width = <32>;
|
|
dai-tdm-slot-tx-mask = <1 1 0 0>;
|
|
dai-tdm-slot-rx-mask = <1 1 0 0>;
|
|
};
|
|
|
|
codec0_dai: codec {
|
|
sound-dai = <&ac108_a>;
|
|
clocks = <&ac10x_mclk>;
|
|
system-clock-id = <1>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
__overrides__ {
|
|
card-name = <&sound_overlay>,"seeed-voice-card,name";
|
|
};
|
|
};
|
|
|