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