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 I2S controller
 
The I2S bus (Inter-IC sound bus) is a serial link for digital
audio data transfer between devices in the system.
 
Required properties:
 
- compatible: should be one of the following:
   - "rockchip,rk3066-i2s": for rk3066
   - "rockchip,px30-i2s", "rockchip,rk3066-i2s": for px30
   - "rockchip,rk1808-i2s", "rockchip,rk3066-i2s": for rk1808
   - "rockchip,rk3036-i2s", "rockchip,rk3066-i2s": for rk3036
   - "rockchip,rk3128-i2s", "rockchip,rk3066-i2s": for rk3128
   - "rockchip,rk3188-i2s", "rockchip,rk3066-i2s": for rk3188
   - "rockchip,rk3228-i2s", "rockchip,rk3066-i2s": for rk3228
   - "rockchip,rk3288-i2s", "rockchip,rk3066-i2s": for rk3288
   - "rockchip,rk3308-i2s", "rockchip,rk3066-i2s": for rk3308
   - "rockchip,rk3328-i2s", "rockchip,rk3066-i2s": for rk3328
   - "rockchip,rk3366-i2s", "rockchip,rk3066-i2s": for rk3366
   - "rockchip,rk3368-i2s", "rockchip,rk3066-i2s": for rk3368
   - "rockchip,rk3399-i2s", "rockchip,rk3066-i2s": for rk3399
   - "rockchip,rv1126-i2s", "rockchip,rk3066-i2s": for rv1126
- reg: physical base address of the controller and length of memory mapped
  region.
- interrupts: should contain the I2S interrupt.
- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
   Documentation/devicetree/bindings/dma/dma.txt
- dma-names: should include "tx" and "rx".
- clocks: a list of phandle + clock-specifer pairs, one for each entry in clock-names.
- clock-names: should contain the following:
   - "i2s_hclk": clock for I2S BUS
   - "i2s_clk" : clock for I2S controller
- resets: a list of phandle + reset-specifer paris, one for each entry in reset-names.
- reset-names: reset names, should include "reset-m", "reset-h", there may be only
  "reset-m" on some platforms.
- rockchip,playback-channels: max playback channels, if not set, 8 channels default.
- rockchip,capture-channels: max capture channels, if not set, 2 channels default.
- rockchip,bclk-fs: configure the i2s bclk fs.
- rockchip,clk-trcm: tx and rx lrck/bclk common use.
   - 0: both tx_lrck/bclk and rx_lrck/bclk are used
   - 1: only tx_lrck/bclk is used
   - 2: only rx_lrck/bclk is used
- 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.
- rockchip,playback-only: Specify that the controller only has playback capability.
- rockchip,capture-only: Specify that the controller only has capture capability.
 
Required properties for controller which support multi channels
playback/capture:
 
- rockchip,grf: the phandle of the syscon node for GRF register.
 
Optional properties:
- rockchip,mclk-calibrate: This is a boolean value, if present, enable
  clk calibrate and compenation.
 
  note: the corresponding property 'i2s_clk_root' should be assigned.
 
Example for rk3288 I2S controller:
 
i2s@ff890000 {
   compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
   reg = <0xff890000 0x10000>;
   interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
   dmas = <&pdma1 0>, <&pdma1 1>;
   dma-names = "tx", "rx";
   clock-names = "i2s_hclk", "i2s_clk";
   clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
   rockchip,playback-channels = <8>;
   rockchip,capture-channels = <2>;
   rockchip,bclk-fs = <64>;
};
 
Example for RV1126 I2S controller with mclk-calibrate:
 
&i2s1_2ch {
   status = "okay";
   clocks = <&cru MCLK_I2S1>, <&cru HCLK_I2S1>, <&cru PLL_CPLL>;
   clock-names = "i2s_clk", "i2s_hclk", "i2s_clk_root";
   rockchip,mclk-calibrate;
};