162306a36Sopenharmony_ci* Spreadtrum SC9860 Pin Controller
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciPlease refer to sprd,pinctrl.txt in this directory for common binding part
462306a36Sopenharmony_ciand usage.
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciRequired properties:
762306a36Sopenharmony_ci- compatible: Must be "sprd,sc9860-pinctrl".
862306a36Sopenharmony_ci- reg: The register address of pin controller device.
962306a36Sopenharmony_ci- pins : An array of strings, each string containing the name of a pin.
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciOptional properties:
1262306a36Sopenharmony_ci- function: A string containing the name of the function, values must be
1362306a36Sopenharmony_ci  one of: "func1", "func2", "func3" and "func4".
1462306a36Sopenharmony_ci- drive-strength: Drive strength in mA. Supported values: 2, 4, 6, 8, 10,
1562306a36Sopenharmony_ci  12, 14, 16, 20, 21, 24, 25, 27, 29, 31 and 33.
1662306a36Sopenharmony_ci- input-schmitt-disable: Enable schmitt-trigger mode.
1762306a36Sopenharmony_ci- input-schmitt-enable: Disable schmitt-trigger mode.
1862306a36Sopenharmony_ci- bias-disable: Disable pin bias.
1962306a36Sopenharmony_ci- bias-pull-down: Pull down on pin.
2062306a36Sopenharmony_ci- bias-pull-up: Pull up on pin. Supported values: 20000 for pull-up resistor
2162306a36Sopenharmony_ci  is 20K and 4700 for pull-up resistor is 4.7K.
2262306a36Sopenharmony_ci- input-enable: Enable pin input.
2362306a36Sopenharmony_ci- input-disable: Enable pin output.
2462306a36Sopenharmony_ci- output-high: Set the pin as an output level high.
2562306a36Sopenharmony_ci- output-low: Set the pin as an output level low.
2662306a36Sopenharmony_ci- sleep-hardware-state: Indicate these configs in this state are sleep related.
2762306a36Sopenharmony_ci- sprd,control: Control values referring to databook for global control pins.
2862306a36Sopenharmony_ci- sprd,sleep-mode: Choose the pin sleep mode, and supported values are:
2962306a36Sopenharmony_ci  AP_SLEEP, PUBCP_SLEEP, TGLDSP_SLEEP and AGDSP_SLEEP.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciPin sleep mode definition:
3262306a36Sopenharmony_cienum pin_sleep_mode {
3362306a36Sopenharmony_ci	AP_SLEEP = BIT(0),
3462306a36Sopenharmony_ci	PUBCP_SLEEP = BIT(1),
3562306a36Sopenharmony_ci	TGLDSP_SLEEP = BIT(2),
3662306a36Sopenharmony_ci	AGDSP_SLEEP = BIT(3),
3762306a36Sopenharmony_ci};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciExample:
4062306a36Sopenharmony_cipin_controller: pinctrl@402a0000 {
4162306a36Sopenharmony_ci	compatible = "sprd,sc9860-pinctrl";
4262306a36Sopenharmony_ci	reg = <0x402a0000 0x10000>;
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	grp1: sd0 {
4562306a36Sopenharmony_ci		pins = "SC9860_VIO_SD2_IRTE", "SC9860_VIO_SD0_IRTE";
4662306a36Sopenharmony_ci		sprd,control = <0x1>;
4762306a36Sopenharmony_ci	};
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	grp2: rfctl_33 {
5062306a36Sopenharmony_ci		pins = "SC9860_RFCTL33";
5162306a36Sopenharmony_ci		function = "func2";
5262306a36Sopenharmony_ci		sprd,sleep-mode = <AP_SLEEP | PUBCP_SLEEP>;
5362306a36Sopenharmony_ci		grp2_sleep_mode: rfctl_33_sleep {
5462306a36Sopenharmony_ci			pins = "SC9860_RFCTL33";
5562306a36Sopenharmony_ci			sleep-hardware-state;
5662306a36Sopenharmony_ci			output-low;
5762306a36Sopenharmony_ci		}
5862306a36Sopenharmony_ci	};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	grp3: rfctl_misc_20 {
6162306a36Sopenharmony_ci		pins = "SC9860_RFCTL20_MISC";
6262306a36Sopenharmony_ci		drive-strength = <10>;
6362306a36Sopenharmony_ci		bias-pull-up = <4700>;
6462306a36Sopenharmony_ci		grp3_sleep_mode: rfctl_misc_sleep {
6562306a36Sopenharmony_ci			pins = "SC9860_RFCTL20_MISC";
6662306a36Sopenharmony_ci			sleep-hardware-state;
6762306a36Sopenharmony_ci			bias-pull-up;
6862306a36Sopenharmony_ci		}
6962306a36Sopenharmony_ci	};
7062306a36Sopenharmony_ci};
71