On Thu, Nov 09, 2017 at 11:12:33AM +0100, Arnaud Pouliquen wrote:
Add bindings that describes audio settings to support Digital Filter for pulse density modulation(PDM) microphone.
Signed-off-by: Arnaud Pouliquen arnaud.pouliquen@st.com
V3 -> V4 changes:
- Update to move on of_graph description.
- Link to DFSDM IIO bindings.
.../devicetree/bindings/sound/st,stm32-adfsdm.txt | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt
diff --git a/Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt b/Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt new file mode 100644 index 0000000..75e298b --- /dev/null +++ b/Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt @@ -0,0 +1,63 @@ +STMicroelectronics audio DFSDM DT bindings
+This driver supports audio PDM microphone capture through Digital Filter format
Bindings aren't drivers.
+Sigma Delta modulators (DFSDM).
+Required properties:
- compatible: "st,stm32h7-dfsdm-dai".
- #sound-dai-cells : Must be equal to 0
- io-channels : phandle to iio dfsdm instance node.
[See: ../iio/adc/st,stm32-dfsdm-adc.txt for DFSDM options]
+Example of a sound card using audio DFSDM node.
- sound_card {
compatible = "audio-graph-card";
dais = <&cpu_port>;
- };
- dfsdm: dfsdm@40017000 {
compatible = "st,stm32h7-dfsdm";
reg = <0x40017000 0x400>;
clocks = <&rcc DFSDM1_CK>;
clock-names = "dfsdm";
#address-cells = <1>;
#size-cells = <0>;
dfsdm_adc0: dfsdm-adc@0 {
compatible = "st,stm32-dfsdm-dmic";
reg = <0>;
interrupts = <110>;
dmas = <&dmamux1 101 0x400 0x00>;
dma-names = "rx";
st,adc-channels = <1>;
st,adc-channel-names = "dmic0";
st,adc-channel-types = "SPI_R";
st,adc-channel-clk-src = "CLKOUT";
st,filter-order = <5>;
};
- }
- dfsdm_dai0:dfsdm_dai@0 {
Unit address without reg property is not valid. Building your dtb with W=2 will tell you this.
Need a space after the ':'.
Should be a child of dfsdm?
compatible = "st,stm32h7-dfsdm-dai";
#sound-dai-cells = <0>;
io-channels = <&dfsdm_adc0 0>;
It doesn't seem like this is an actual h/w block. Why can't 'dais' point directly to the ADC?
cpu_port: port {
dfsdm_endpoint: endpoint {
remote-endpoint = <&dmic0_endpoint>;
};
};
- };
- dmic0: dmic@0 {
compatible = "dmic-codec";
#sound-dai-cells = <0>;
port {
dmic0_endpoint: endpoint {
remote-endpoint = <&dfsdm_endpoint>;
};
};
- };
-- 2.7.4