xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/sound/rockchip,pdm.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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
19properties:
20  compatible:
21    enum:
22      - rockchip,pdm
23      - rockchip,px30-pdm
24      - rockchip,rk1808-pdm
25      - rockchip,rk3308-pdm
26      - rockchip,rk3568-pdm
27      - rockchip,rk3588-pdm
28      - rockchip,rv1126-pdm
29
30  reg:
31    maxItems: 1
32
33  interrupts:
34    maxItems: 1
35
36  clocks:
37    items:
38      - description: clock for PDM controller
39      - description: clock for PDM BUS
40
41  clock-names:
42    items:
43      - const: pdm_clk
44      - const: pdm_hclk
45
46  dmas:
47    maxItems: 1
48
49  dma-names:
50    items:
51      - const: rx
52
53  power-domains:
54    maxItems: 1
55
56  resets:
57    items:
58      - description: reset for PDM controller
59
60  reset-names:
61    items:
62      - const: pdm-m
63
64  rockchip,path-map:
65    $ref: /schemas/types.yaml#/definitions/uint32-array
66    description:
67      Defines the mapping of PDM SDIx to PDM PATHx.
68      By default, they are mapped one-to-one.
69    maxItems: 4
70    uniqueItems: true
71    items:
72      enum: [ 0, 1, 2, 3 ]
73
74  "#sound-dai-cells":
75    const: 0
76
77required:
78  - compatible
79  - reg
80  - interrupts
81  - clocks
82  - clock-names
83  - dmas
84  - dma-names
85  - "#sound-dai-cells"
86
87additionalProperties: false
88
89examples:
90  - |
91    #include <dt-bindings/clock/rk3328-cru.h>
92    #include <dt-bindings/interrupt-controller/arm-gic.h>
93    #include <dt-bindings/interrupt-controller/irq.h>
94    #include <dt-bindings/pinctrl/rockchip.h>
95
96    bus {
97        #address-cells = <2>;
98        #size-cells = <2>;
99
100        pdm@ff040000 {
101            compatible = "rockchip,pdm";
102            reg = <0x0 0xff040000 0x0 0x1000>;
103            interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
104            clocks = <&cru SCLK_PDM>, <&cru HCLK_PDM>;
105            clock-names = "pdm_clk", "pdm_hclk";
106            dmas = <&dmac 16>;
107            dma-names = "rx";
108            #sound-dai-cells = <0>;
109            pinctrl-names = "default", "sleep";
110            pinctrl-0 = <&pdmm0_clk
111                         &pdmm0_sdi0
112                         &pdmm0_sdi1
113                         &pdmm0_sdi2
114                         &pdmm0_sdi3>;
115            pinctrl-1 = <&pdmm0_clk_sleep
116                         &pdmm0_sdi0_sleep
117                         &pdmm0_sdi1_sleep
118                         &pdmm0_sdi2_sleep
119                         &pdmm0_sdi3_sleep>;
120        };
121    };
122