~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/pinctrl/sprd,pinctrl.txt

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php