pinctrl: tegra: uphy: fix Coverity issues
[linux-3.10.git] / Documentation / padctrl.txt
1 PADCTRL (PAD CONTROL) subsystem
2 This document outlines the pad control subsystem in Linux
3
4 This subsystem  is extension of the pinctrl and the configuration which
5 is not possible through pinctrl interface can be done here.
6
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.
12
13 The pad controller can configure the pads to work on different voltages based
14 on IO power voltages or any such multiple configurations.
15
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.
21
22 - The group of pins wich belongs to given PAD act on similar voltage or any
23   such configuration.
24
25 Top-level interface
26 ===================
27
28 The client of pad controller can configure the pads voltages etc.
29
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
33         padctrl_put()
34
35 Client can call API padctrl_set_voltage() to set the pad voltage to desired
36 level.
37
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.
43
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()
47
48
49  Some supports APIs are provided to write driver
50         padctrl_set_drvdata()
51         padctrl_get_drvdata()
52   
53 When HW driver register itself as pad controller, it provide the callback
54  through padctrl_ops.
55         padctrl_ops {
56                 set_voltage()
57                 get_voltage()
58         }
59