1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/sound/rockchip,pdm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Rockchip PDM controller
8
9description:
10  The Pulse Density Modulation Interface Controller (PDMC) is
11  a PDM interface controller and decoder that support PDM format.
12  It integrates a clock generator driving the PDM microphone
13  and embeds filters which decimate the incoming bit stream to
14  obtain most common audio rates.
15
16maintainers:
17  - Heiko Stuebner <heiko@sntech.de>
18
19allOf:
20  - $ref: dai-common.yaml#
21
22properties:
23  compatible:
24    enum:
25      - rockchip,pdm
26      - rockchip,px30-pdm
27      - rockchip,rk1808-pdm
28      - rockchip,rk3308-pdm
29      - rockchip,rk3568-pdm
30      - rockchip,rv1126-pdm
31
32  reg:
33    maxItems: 1
34
35  interrupts:
36    maxItems: 1
37
38  clocks:
39    items:
40      - description: clock for PDM controller
41      - description: clock for PDM BUS
42
43  clock-names:
44    items:
45      - const: pdm_clk
46      - const: pdm_hclk
47
48  dmas:
49    maxItems: 1
50
51  dma-names:
52    items:
53      - const: rx
54
55  power-domains:
56    maxItems: 1
57
58  resets:
59    items:
60      - description: reset for PDM controller
61
62  reset-names:
63    items:
64      - const: pdm-m
65
66  rockchip,path-map:
67    $ref: /schemas/types.yaml#/definitions/uint32-array
68    description:
69      Defines the mapping of PDM SDIx to PDM PATHx.
70      By default, they are mapped one-to-one.
71    maxItems: 4
72    uniqueItems: true
73    items:
74      enum: [ 0, 1, 2, 3 ]
75
76  "#sound-dai-cells":
77    const: 0
78
79required:
80  - compatible
81  - reg
82  - interrupts
83  - clocks
84  - clock-names
85  - dmas
86  - dma-names
87  - "#sound-dai-cells"
88
89unevaluatedProperties: false
90
91examples:
92  - |
93    #include <dt-bindings/clock/rk3328-cru.h>
94    #include <dt-bindings/interrupt-controller/arm-gic.h>
95    #include <dt-bindings/interrupt-controller/irq.h>
96    #include <dt-bindings/pinctrl/rockchip.h>
97
98    bus {
99        #address-cells = <2>;
100        #size-cells = <2>;
101
102        pdm@ff040000 {
103            compatible = "rockchip,pdm";
104            reg = <0x0 0xff040000 0x0 0x1000>;
105            interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
106            clocks = <&cru SCLK_PDM>, <&cru HCLK_PDM>;
107            clock-names = "pdm_clk", "pdm_hclk";
108            dmas = <&dmac 16>;
109            dma-names = "rx";
110            #sound-dai-cells = <0>;
111            pinctrl-names = "default", "sleep";
112            pinctrl-0 = <&pdmm0_clk
113                         &pdmm0_sdi0
114                         &pdmm0_sdi1
115                         &pdmm0_sdi2
116                         &pdmm0_sdi3>;
117            pinctrl-1 = <&pdmm0_clk_sleep
118                         &pdmm0_sdi0_sleep
119                         &pdmm0_sdi1_sleep
120                         &pdmm0_sdi2_sleep
121                         &pdmm0_sdi3_sleep>;
122        };
123    };
124