hc
2023-05-26 a23f51ed7a39e452c1037343a84d7db1ca2c5bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
* Rockchip PDM controller
 
Required properties:
 
- compatible:
  - "rockchip,px30-pdm"
  - "rockchip,rk1808-pdm"
  - "rockchip,rk3308-pdm"
  - "rockchip,rk3328-pdm"
  - "rockchip,rk3568-pdm"
  - "rockchip,rv1126-pdm"
- reg: physical base address of the controller and length of memory mapped
  region.
- dmas: DMA specifiers for rx dma. See the DMA client binding,
   Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should include "rx".
- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
- clock-names: should contain following:
   - "pdm_hclk": clock for PDM BUS
   - "pdm_clk" : clock for PDM controller
- resets: a list of phandle + reset-specifer paris, one for each entry in reset-names.
- reset-names: reset names, should include "pdm-m".
- rockchip,no-dmaengine: This is a boolean property. If present, driver will do not
  register pcm dmaengine, only just register dai. if the dai is part of multi-dais,
  the property should be present. Please refer to rockchip,multidais.txt about
  multi-dais usage.
- pinctrl-names: Must contain a "default" entry.
- pinctrl-N: One property must exist for each entry in
        pinctrl-names. See ../pinctrl/pinctrl-bindings.txt
        for details of the property values.
 
Optional properties:
- rockchip,path-map: This is a variable length array, that shows the mapping
  of SDIx to PATHx. By default, they are one-to-one mapping as follows:
 
   path0 <-- sdi0
   path1 <-- sdi1
   path2 <-- sdi2
   path3 <-- sdi3
 
  e.g. "rockchip,path-map = <3 2 1 0>" means the mapping as follows:
 
   path0 <-- sdi3
   path1 <-- sdi2
   path2 <-- sdi1
   path3 <-- sdi0
 
- rockchip,mclk-calibrate: This is a boolean value, if present, enable
  clk calibrate and compenation.
 
  note: the corresponding property 'pdm_clk_root' should be assigned.
 
Example for rk3328 PDM controller:
 
pdm: pdm@ff040000 {
   compatible = "rockchip,pdm";
   reg = <0x0 0xff040000 0x0 0x1000>;
   clocks = <&clk_pdm>, <&clk_gates28 0>;
   clock-names = "pdm_clk", "pdm_hclk";
   dmas = <&pdma 16>;
   #dma-cells = <1>;
   dma-names = "rx";
   pinctrl-names = "default", "sleep";
   pinctrl-0 = <&pdmm0_clk
            &pdmm0_sdi0
            &pdmm0_sdi1
            &pdmm0_sdi2
            &pdmm0_sdi3>;
   pinctrl-1 = <&pdmm0_clk_sleep
            &pdmm0_sdi0_sleep
            &pdmm0_sdi1_sleep
            &pdmm0_sdi2_sleep
            &pdmm0_sdi3_sleep>;
};
 
Example for RV1126 PDM controller with mclk-calibrate:
 
&pdm {
   status = "okay";
   clocks = <&cru MCLK_PDM>, <&cru HCLK_PDM>, <&cru PLL_CPLL>;
   clock-names = "pdm_clk", "pdm_hclk", "pdm_clk_root";
   rockchip,mclk-calibrate;
};