1 PADCTRL (PAD CONTROL) subsystem
2 This document outlines the pad control subsystem in Linux
4 This subsystem is extension of the pinctrl and the configuration which
5 is not possible through pinctrl interface can be done here.
7 Pad controller are not actual pin controller by HW. This is very much
8 engage with IO power rail for the pins functionality.
9 SOC has number of pins. Group of pins are allocated to the IO power rail.
10 This IO power rail voltage decides the interface voltage levels on that pins.
11 A Pad can contains the group of pins with single IO power rail.
13 The pad controller can configure the pads to work on different voltages based
14 on IO power voltages or any such multiple configurations.
16 Definition of PAD CONTROLLER:
17 ============================
18 - A pad controller is a piece of hardware, usually a set of registers, that
19 can control PADs. A PADs may contain group of pins and so it can configure
20 the properties of pins. It is extension of pinctrl.
22 - The group of pins wich belongs to given PAD act on similar voltage or any
28 The client of pad controller can configure the pads voltages etc.
30 The client can get the handle of given padcontrol HW as
31 padctrl_get() and devm_padctrl_get()
32 The handle can be realse through
35 Client can call API padctrl_set_voltage() to set the pad voltage to desired
38 Pad controller HW driver:
39 ========================
40 Pad controller client calls teh generic API to configure the pads.
41 The hw module which controls the pad implement the desired APIs/functionality
42 to achieve the control of pads.
44 The padcotrol HW driver can register/unregister with framework as
45 padctrl_register() and devm_padctrl_register()
46 padctrl_unregister() and devm_padctrl_unregister()
49 Some supports APIs are provided to write driver
53 When HW driver register itself as pad controller, it provide the callback