xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/sprd,pinctrl.txt (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1e6f3f669SBaolin Wang* Spreadtrum Pin Controller
2e6f3f669SBaolin Wang
3e6f3f669SBaolin WangThe Spreadtrum pin controller are organized in 3 blocks (types).
4e6f3f669SBaolin Wang
5e6f3f669SBaolin WangThe first block comprises some global control registers, and each
6e6f3f669SBaolin Wangregister contains several bit fields with one bit or several bits
7e6f3f669SBaolin Wangto configure for some global common configuration, such as domain
8e6f3f669SBaolin Wangpad driving level, system control select and so on ("domain pad
9e6f3f669SBaolin Wangdriving level": One pin can output 3.0v or 1.8v, depending on the
10e6f3f669SBaolin Wangrelated domain pad driving selection, if the related domain pad
11*47aab533SBjorn Helgaasselect 3.0v, then the pin can output 3.0v. "system control" is used
12e6f3f669SBaolin Wangto choose one function (like: UART0) for which system, since we
13e6f3f669SBaolin Wanghave several systems (AP/CP/CM4) on one SoC.).
14e6f3f669SBaolin Wang
15e6f3f669SBaolin WangThere are too much various configuration that we can not list all
16e6f3f669SBaolin Wangof them, so we can not make every Spreadtrum-special configuration
17e6f3f669SBaolin Wangas one generic configuration, and maybe it will add more strange
18e6f3f669SBaolin Wangglobal configuration in future. Then we add one "sprd,control" to
19e6f3f669SBaolin Wangset these various global control configuration, and we need use
20e6f3f669SBaolin Wangmagic number for this property.
21e6f3f669SBaolin Wang
22e6f3f669SBaolin WangMoreover we recognise every fields comprising one bit or several
23e6f3f669SBaolin Wangbits in one global control register as one pin, thus we should
24e6f3f669SBaolin Wangrecord every pin's bit offset, bit width and register offset to
25e6f3f669SBaolin Wangconfigure this field (pin).
26e6f3f669SBaolin Wang
27e6f3f669SBaolin WangThe second block comprises some common registers which have unified
28e6f3f669SBaolin Wangregister definition, and each register described one pin is used
29e6f3f669SBaolin Wangto configure the pin sleep mode, function select and sleep related
30e6f3f669SBaolin Wangconfiguration.
31e6f3f669SBaolin Wang
32e6f3f669SBaolin WangNow we have 4 systems for sleep mode on SC9860 SoC: AP system,
33e6f3f669SBaolin WangPUBCP system, TGLDSP system and AGDSP system. And the pin sleep
34e6f3f669SBaolin Wangrelated configuration are:
35e6f3f669SBaolin Wang- input-enable
36e6f3f669SBaolin Wang- input-disable
37e6f3f669SBaolin Wang- output-high
38e6f3f669SBaolin Wang- output-low
39e6f3f669SBaolin Wang- bias-pull-up
40e6f3f669SBaolin Wang- bias-pull-down
41e6f3f669SBaolin Wang
42e6f3f669SBaolin WangIn some situation we need set the pin sleep mode and pin sleep related
43e6f3f669SBaolin Wangconfiguration, to set the pin sleep related configuration automatically
44e6f3f669SBaolin Wangby hardware when the system specified by sleep mode goes into deep
45e6f3f669SBaolin Wangsleep mode. For example, if we set the pin sleep mode as PUBCP_SLEEP
46e6f3f669SBaolin Wangand set the pin sleep related configuration as "input-enable", which
47e6f3f669SBaolin Wangmeans when PUBCP system goes into deep sleep mode, this pin will be set
48e6f3f669SBaolin Wanginput enable automatically.
49e6f3f669SBaolin Wang
50e6f3f669SBaolin WangMoreover we can not use the "sleep" state, since some systems (like:
51e6f3f669SBaolin WangPUBCP system) do not run linux kernel OS (only AP system run linux
52e6f3f669SBaolin Wangkernel on SC9860 platform), then we can not select "sleep" state
53e6f3f669SBaolin Wangwhen the PUBCP system goes into deep sleep mode. Thus we introduce
54e6f3f669SBaolin Wang"sprd,sleep-mode" property to set pin sleep mode.
55e6f3f669SBaolin Wang
56e6f3f669SBaolin WangThe last block comprises some misc registers which also have unified
57e6f3f669SBaolin Wangregister definition, and each register described one pin is used to
58e6f3f669SBaolin Wangconfigure drive strength, pull up/down and so on. Especially for pull
59e6f3f669SBaolin Wangup, we have two kind pull up resistor: 20K and 4.7K.
60e6f3f669SBaolin Wang
61e6f3f669SBaolin WangRequired properties for Spreadtrum pin controller:
62e6f3f669SBaolin Wang- compatible: "sprd,<soc>-pinctrl"
63e6f3f669SBaolin Wang  Please refer to each sprd,<soc>-pinctrl.txt binding doc for supported SoCs.
64e6f3f669SBaolin Wang- reg: The register address of pin controller device.
65e6f3f669SBaolin Wang- pins : An array of pin names.
66e6f3f669SBaolin Wang
67e6f3f669SBaolin WangOptional properties:
68e6f3f669SBaolin Wang- function: Specified the function name.
69e6f3f669SBaolin Wang- drive-strength: Drive strength in mA.
70e6f3f669SBaolin Wang- input-schmitt-disable: Enable schmitt-trigger mode.
71e6f3f669SBaolin Wang- input-schmitt-enable: Disable schmitt-trigger mode.
72e6f3f669SBaolin Wang- bias-disable: Disable pin bias.
73e6f3f669SBaolin Wang- bias-pull-down: Pull down on pin.
74e6f3f669SBaolin Wang- bias-pull-up: Pull up on pin.
75e6f3f669SBaolin Wang- input-enable: Enable pin input.
76e6f3f669SBaolin Wang- input-disable: Enable pin output.
77e6f3f669SBaolin Wang- output-high: Set the pin as an output level high.
78e6f3f669SBaolin Wang- output-low: Set the pin as an output level low.
79e6f3f669SBaolin Wang- sleep-hardware-state: Indicate these configs in this state are sleep related.
80e6f3f669SBaolin Wang- sprd,control: Control values referring to databook for global control pins.
81e6f3f669SBaolin Wang- sprd,sleep-mode: Sleep mode selection.
82e6f3f669SBaolin Wang
83e6f3f669SBaolin WangPlease refer to each sprd,<soc>-pinctrl.txt binding doc for supported values.
84