blob: ff9e400494f34e56a9b2b97909bd746debab95c1 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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 };