hc
2023-11-20 3c9370f7b6bffd697c9907a7139e9df5b0d4b9df
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
* Rockchip specific extensions to the Synopsys Designware Mobile
  Storage Host Controller
 
The Synopsys designware mobile storage host controller is used to interface
a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
differences between the core Synopsys dw mshc controller properties described
by synopsys-dw-mshc.txt and the properties used by the Rockchip specific
extensions to the Synopsys Designware Mobile Storage Host Controller.
 
Required Properties:
 
* compatible: should be
   - "rockchip,rk2928-dw-mshc": for Rockchip RK2928 and following,
                           before RK3288
   - "rockchip,rk3288-dw-mshc": for Rockchip RK3288
   - "rockchip,rv1108-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RV1108
   - "rockchip,px30-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip PX30
   - "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RK3036
   - "rockchip,rk3228-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RK322x
   - "rockchip,rk3328-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RK3328
   - "rockchip,rk3368-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RK3368
   - "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc": for Rockchip RK3399
 
Optional Properties:
* clocks: from common clock binding: if ciu-drive and ciu-sample are
  specified in clock-names, should contain handles to these clocks.
 
* clock-names: Apart from the clock-names described in synopsys-dw-mshc.txt
  two more clocks "ciu-drive" and "ciu-sample" are supported. They are used
  to control the clock phases, "ciu-sample" is required for tuning high-
  speed modes.
 
* rockchip,default-sample-phase: The default phase to set ciu-sample at
  probing, low speeds or in case where all phases work at tuning time.
  If not specified 0 deg will be used.
 
* rockchip,desired-num-phases: The desired number of times that the host
  execute tuning when needed. If not specified, the host will do tuning
  for 360 times, namely tuning for each degree.
 
* pinctrl-names: should be "default" or "normal" combined with "idle". For
  SDIO or eMMC devices, recommend to use "default". For SD/MMC cards, recommend
  to use "normal" combined with "idle" to prevent power leak if vqmmc can't be
  powered off. "normal" state is the same as "default" state, but "idle" state
  should define the clk/cmd/data line to be pulled down or pulled none.
 
Example:
 
   rkdwmmc0@12200000 {
       compatible = "rockchip,rk3288-dw-mshc";
       reg = <0x12200000 0x1000>;
       interrupts = <0 75 0>;
       #address-cells = <1>;
       #size-cells = <0>;
   };
 
   /* "default" pinctrl */
   &rkdwmmc0{
       ...
       pinctrl-names = "default"
       pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4>;
       ...
   };
 
   /* "normal" combined with "idle" pinctrl */
   sdmmc_idle_gpios: sdmmc-idle-gpios {
       rockchip,pins =
           <3 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>,
           <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>,
           <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>,
           <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>,
           <3 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>,
           <3 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
   };
 
   &rkdwmmc0{
       ...
       pinctrl-names = "normal", "idle";
       pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_det &sdmmc0_bus4>;
       pinctrl-1 = <&sdmmc_idle_gpios &sdmmc0_det>;
       ...
   }