hc
2024-05-10 cde9070d9970eef1f7ec2360586c802a16230ad8
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
* Spreadtrum SC9860 Pin Controller
 
Please refer to sprd,pinctrl.txt in this directory for common binding part
and usage.
 
Required properties:
- compatible: Must be "sprd,sc9860-pinctrl".
- reg: The register address of pin controller device.
- pins : An array of strings, each string containing the name of a pin.
 
Optional properties:
- function: A string containing the name of the function, values must be
  one of: "func1", "func2", "func3" and "func4".
- drive-strength: Drive strength in mA. Supported values: 2, 4, 6, 8, 10,
  12, 14, 16, 20, 21, 24, 25, 27, 29, 31 and 33.
- input-schmitt-disable: Enable schmitt-trigger mode.
- input-schmitt-enable: Disable schmitt-trigger mode.
- bias-disable: Disable pin bias.
- bias-pull-down: Pull down on pin.
- bias-pull-up: Pull up on pin. Supported values: 20000 for pull-up resistor
  is 20K and 4700 for pull-up resistor is 4.7K.
- input-enable: Enable pin input.
- input-disable: Enable pin output.
- output-high: Set the pin as an output level high.
- output-low: Set the pin as an output level low.
- sleep-hardware-state: Indicate these configs in this state are sleep related.
- sprd,control: Control values referring to databook for global control pins.
- sprd,sleep-mode: Choose the pin sleep mode, and supported values are:
  AP_SLEEP, PUBCP_SLEEP, TGLDSP_SLEEP and AGDSP_SLEEP.
 
Pin sleep mode definition:
enum pin_sleep_mode {
   AP_SLEEP = BIT(0),
   PUBCP_SLEEP = BIT(1),
   TGLDSP_SLEEP = BIT(2),
   AGDSP_SLEEP = BIT(3),
};
 
Example:
pin_controller: pinctrl@402a0000 {
   compatible = "sprd,sc9860-pinctrl";
   reg = <0x402a0000 0x10000>;
 
   grp1: sd0 {
       pins = "SC9860_VIO_SD2_IRTE", "SC9860_VIO_SD0_IRTE";
       sprd,control = <0x1>;
   };
 
   grp2: rfctl_33 {
       pins = "SC9860_RFCTL33";
       function = "func2";
       sprd,sleep-mode = <AP_SLEEP | PUBCP_SLEEP>;
       grp2_sleep_mode: rfctl_33_sleep {
           pins = "SC9860_RFCTL33";
           sleep-hardware-state;
           output-low;
       }
   };
 
   grp3: rfctl_misc_20 {
       pins = "SC9860_RFCTL20_MISC";
       drive-strength = <10>;
       bias-pull-up = <4700>;
       grp3_sleep_mode: rfctl_misc_sleep {
           pins = "SC9860_RFCTL20_MISC";
           sleep-hardware-state;
           bias-pull-up;
       }
   };
};