1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/microchip,pdmc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Microchip Pulse Density Microphone Controller
8
9maintainers:
10  - Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
11
12description:
13  The Microchip Pulse Density Microphone Controller (PDMC) interfaces up to 4
14  digital microphones having Pulse Density Modulated (PDM) outputs.
15
16properties:
17  compatible:
18    const: microchip,sama7g5-pdmc
19
20  reg:
21    maxItems: 1
22
23  "#sound-dai-cells":
24    const: 0
25
26  interrupts:
27    maxItems: 1
28
29  clocks:
30    items:
31      - description: Peripheral Bus Clock
32      - description: Generic Clock
33
34  clock-names:
35    items:
36      - const: pclk
37      - const: gclk
38
39  dmas:
40    description: RX DMA Channel
41    maxItems: 1
42
43  dma-names:
44    const: rx
45
46  microchip,mic-pos:
47    description: |
48      Position of PDM microphones on the DS line and the sampling edge (rising
49      or falling) of the CLK line. A microphone is represented as a pair of DS
50      line and the sampling edge. The first microphone is mapped to channel 0,
51      the second to channel 1, etc.
52    $ref: /schemas/types.yaml#/definitions/uint32-matrix
53    items:
54      items:
55        - description: value for DS line
56        - description: value for sampling edge
57      anyOf:
58        - enum:
59            - [0, 0]
60            - [0, 1]
61            - [1, 0]
62            - [1, 1]
63    minItems: 1
64    maxItems: 4
65    uniqueItems: true
66
67required:
68  - compatible
69  - reg
70  - "#sound-dai-cells"
71  - interrupts
72  - clocks
73  - clock-names
74  - dmas
75  - dma-names
76  - microchip,mic-pos
77
78additionalProperties: false
79
80examples:
81  - |
82    #include <dt-bindings/clock/at91.h>
83    #include <dt-bindings/dma/at91.h>
84    #include <dt-bindings/interrupt-controller/arm-gic.h>
85    #include <dt-bindings/sound/microchip,pdmc.h>
86
87    pdmc: sound@e1608000 {
88        compatible = "microchip,sama7g5-pdmc";
89        reg = <0xe1608000 0x4000>;
90        #sound-dai-cells = <0>;
91        interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
92        dmas = <&dma0 AT91_XDMAC_DT_PERID(37)>;
93        dma-names = "rx";
94        clocks = <&pmc PMC_TYPE_PERIPHERAL 68>, <&pmc PMC_TYPE_GCK 68>;
95        clock-names = "pclk", "gclk";
96        microchip,mic-pos = <MCHP_PDMC_DS0 MCHP_PDMC_CLK_POSITIVE>,
97                            <MCHP_PDMC_DS0 MCHP_PDMC_CLK_NEGATIVE>,
98                            <MCHP_PDMC_DS1 MCHP_PDMC_CLK_POSITIVE>,
99                            <MCHP_PDMC_DS1 MCHP_PDMC_CLK_NEGATIVE>;
100    };
101