forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.7 KiB
83 lines
3.7 KiB
* Spreadtrum Pin Controller |
|
|
|
The Spreadtrum pin controller are organized in 3 blocks (types). |
|
|
|
The first block comprises some global control registers, and each |
|
register contains several bit fields with one bit or several bits |
|
to configure for some global common configuration, such as domain |
|
pad driving level, system control select and so on ("domain pad |
|
driving level": One pin can output 3.0v or 1.8v, depending on the |
|
related domain pad driving selection, if the related domain pad |
|
slect 3.0v, then the pin can output 3.0v. "system control" is used |
|
to choose one function (like: UART0) for which system, since we |
|
have several systems (AP/CP/CM4) on one SoC.). |
|
|
|
There are too much various configuration that we can not list all |
|
of them, so we can not make every Spreadtrum-special configuration |
|
as one generic configuration, and maybe it will add more strange |
|
global configuration in future. Then we add one "sprd,control" to |
|
set these various global control configuration, and we need use |
|
magic number for this property. |
|
|
|
Moreover we recognise every fields comprising one bit or several |
|
bits in one global control register as one pin, thus we should |
|
record every pin's bit offset, bit width and register offset to |
|
configure this field (pin). |
|
|
|
The second block comprises some common registers which have unified |
|
register definition, and each register described one pin is used |
|
to configure the pin sleep mode, function select and sleep related |
|
configuration. |
|
|
|
Now we have 4 systems for sleep mode on SC9860 SoC: AP system, |
|
PUBCP system, TGLDSP system and AGDSP system. And the pin sleep |
|
related configuration are: |
|
- input-enable |
|
- input-disable |
|
- output-high |
|
- output-low |
|
- bias-pull-up |
|
- bias-pull-down |
|
|
|
In some situation we need set the pin sleep mode and pin sleep related |
|
configuration, to set the pin sleep related configuration automatically |
|
by hardware when the system specified by sleep mode goes into deep |
|
sleep mode. For example, if we set the pin sleep mode as PUBCP_SLEEP |
|
and set the pin sleep related configuration as "input-enable", which |
|
means when PUBCP system goes into deep sleep mode, this pin will be set |
|
input enable automatically. |
|
|
|
Moreover we can not use the "sleep" state, since some systems (like: |
|
PUBCP system) do not run linux kernel OS (only AP system run linux |
|
kernel on SC9860 platform), then we can not select "sleep" state |
|
when the PUBCP system goes into deep sleep mode. Thus we introduce |
|
"sprd,sleep-mode" property to set pin sleep mode. |
|
|
|
The last block comprises some misc registers which also have unified |
|
register definition, and each register described one pin is used to |
|
configure drive strength, pull up/down and so on. Especially for pull |
|
up, we have two kind pull up resistor: 20K and 4.7K. |
|
|
|
Required properties for Spreadtrum pin controller: |
|
- compatible: "sprd,<soc>-pinctrl" |
|
Please refer to each sprd,<soc>-pinctrl.txt binding doc for supported SoCs. |
|
- reg: The register address of pin controller device. |
|
- pins : An array of pin names. |
|
|
|
Optional properties: |
|
- function: Specified the function name. |
|
- drive-strength: Drive strength in mA. |
|
- 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. |
|
- 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: Sleep mode selection. |
|
|
|
Please refer to each sprd,<soc>-pinctrl.txt binding doc for supported values.
|
|
|