162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/sound/microchip,sama7g5-pdmc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Microchip Pulse Density Microphone Controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  The Microchip Pulse Density Microphone Controller (PDMC) interfaces up to 4
1462306a36Sopenharmony_ci  digital microphones having Pulse Density Modulated (PDM) outputs.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciallOf:
1762306a36Sopenharmony_ci  - $ref: dai-common.yaml#
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    const: microchip,sama7g5-pdmc
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  reg:
2462306a36Sopenharmony_ci    maxItems: 1
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  "#sound-dai-cells":
2762306a36Sopenharmony_ci    const: 0
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  interrupts:
3062306a36Sopenharmony_ci    maxItems: 1
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci  clocks:
3362306a36Sopenharmony_ci    items:
3462306a36Sopenharmony_ci      - description: Peripheral Bus Clock
3562306a36Sopenharmony_ci      - description: Generic Clock
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  clock-names:
3862306a36Sopenharmony_ci    items:
3962306a36Sopenharmony_ci      - const: pclk
4062306a36Sopenharmony_ci      - const: gclk
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  dmas:
4362306a36Sopenharmony_ci    description: RX DMA Channel
4462306a36Sopenharmony_ci    maxItems: 1
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  dma-names:
4762306a36Sopenharmony_ci    const: rx
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  microchip,mic-pos:
5062306a36Sopenharmony_ci    description: |
5162306a36Sopenharmony_ci      Position of PDM microphones on the DS line and the sampling edge (rising
5262306a36Sopenharmony_ci      or falling) of the CLK line. A microphone is represented as a pair of DS
5362306a36Sopenharmony_ci      line and the sampling edge. The first microphone is mapped to channel 0,
5462306a36Sopenharmony_ci      the second to channel 1, etc.
5562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-matrix
5662306a36Sopenharmony_ci    items:
5762306a36Sopenharmony_ci      items:
5862306a36Sopenharmony_ci        - description: value for DS line
5962306a36Sopenharmony_ci          enum: [0, 1]
6062306a36Sopenharmony_ci        - description: value for sampling edge
6162306a36Sopenharmony_ci          enum: [0, 1]
6262306a36Sopenharmony_ci    minItems: 1
6362306a36Sopenharmony_ci    maxItems: 4
6462306a36Sopenharmony_ci    uniqueItems: true
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  microchip,startup-delay-us:
6762306a36Sopenharmony_ci    description: |
6862306a36Sopenharmony_ci      Specifies the delay in microseconds that needs to be applied after
6962306a36Sopenharmony_ci      enabling the PDMC microphones to avoid unwanted noise due to microphones
7062306a36Sopenharmony_ci      not being ready.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_cirequired:
7362306a36Sopenharmony_ci  - compatible
7462306a36Sopenharmony_ci  - reg
7562306a36Sopenharmony_ci  - "#sound-dai-cells"
7662306a36Sopenharmony_ci  - interrupts
7762306a36Sopenharmony_ci  - clocks
7862306a36Sopenharmony_ci  - clock-names
7962306a36Sopenharmony_ci  - dmas
8062306a36Sopenharmony_ci  - dma-names
8162306a36Sopenharmony_ci  - microchip,mic-pos
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ciunevaluatedProperties: false
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciexamples:
8662306a36Sopenharmony_ci  - |
8762306a36Sopenharmony_ci    #include <dt-bindings/clock/at91.h>
8862306a36Sopenharmony_ci    #include <dt-bindings/dma/at91.h>
8962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
9062306a36Sopenharmony_ci    #include <dt-bindings/sound/microchip,pdmc.h>
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci    pdmc: sound@e1608000 {
9362306a36Sopenharmony_ci        compatible = "microchip,sama7g5-pdmc";
9462306a36Sopenharmony_ci        reg = <0xe1608000 0x4000>;
9562306a36Sopenharmony_ci        #sound-dai-cells = <0>;
9662306a36Sopenharmony_ci        interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
9762306a36Sopenharmony_ci        dmas = <&dma0 AT91_XDMAC_DT_PERID(37)>;
9862306a36Sopenharmony_ci        dma-names = "rx";
9962306a36Sopenharmony_ci        clocks = <&pmc PMC_TYPE_PERIPHERAL 68>, <&pmc PMC_TYPE_GCK 68>;
10062306a36Sopenharmony_ci        clock-names = "pclk", "gclk";
10162306a36Sopenharmony_ci        microchip,mic-pos = <MCHP_PDMC_DS0 MCHP_PDMC_CLK_POSITIVE>,
10262306a36Sopenharmony_ci                            <MCHP_PDMC_DS0 MCHP_PDMC_CLK_NEGATIVE>,
10362306a36Sopenharmony_ci                            <MCHP_PDMC_DS1 MCHP_PDMC_CLK_POSITIVE>,
10462306a36Sopenharmony_ci                            <MCHP_PDMC_DS1 MCHP_PDMC_CLK_NEGATIVE>;
10562306a36Sopenharmony_ci    };
106