mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 10:31:48 +00:00
647dbd1e84
The drivers don't really need to know which PMIC they're for, so make a generic binding for them. This alleviates us from updating the drivers every time a new PMIC comes out. It's still recommended that we update the binding with new PMIC models and always specify the specific model for the MPPs and gpios before the generic compatible string in devicetree, but this at least cuts down on adding more and more compatible strings to the drivers until we actually need them. Cc: <devicetree@vger.kernel.org> Acked-by: "Ivan T. Ivanov" <iivanov.xz@gmail.com> Reviewed-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
223 lines
6.3 KiB
Plaintext
223 lines
6.3 KiB
Plaintext
Qualcomm PMIC GPIO block
|
|
|
|
This binding describes the GPIO block(s) found in the 8xxx series of
|
|
PMIC's from Qualcomm.
|
|
|
|
- compatible:
|
|
Usage: required
|
|
Value type: <string>
|
|
Definition: must be one of:
|
|
"qcom,pm8018-gpio"
|
|
"qcom,pm8038-gpio"
|
|
"qcom,pm8058-gpio"
|
|
"qcom,pm8916-gpio"
|
|
"qcom,pm8917-gpio"
|
|
"qcom,pm8921-gpio"
|
|
"qcom,pm8941-gpio"
|
|
"qcom,pm8994-gpio"
|
|
"qcom,pma8084-gpio"
|
|
|
|
And must contain either "qcom,spmi-gpio" or "qcom,ssbi-gpio"
|
|
if the device is on an spmi bus or an ssbi bus respectively
|
|
|
|
- reg:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: Register base of the GPIO block and length.
|
|
|
|
- interrupts:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: Must contain an array of encoded interrupt specifiers for
|
|
each available GPIO
|
|
|
|
- gpio-controller:
|
|
Usage: required
|
|
Value type: <none>
|
|
Definition: Mark the device node as a GPIO controller
|
|
|
|
- #gpio-cells:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: Must be 2;
|
|
the first cell will be used to define gpio number and the
|
|
second denotes the flags for this gpio
|
|
|
|
Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
|
|
a general description of GPIO and interrupt bindings.
|
|
|
|
Please refer to pinctrl-bindings.txt in this directory for details of the
|
|
common pinctrl bindings used by client devices, including the meaning of the
|
|
phrase "pin configuration node".
|
|
|
|
The pin configuration nodes act as a container for an arbitrary number of
|
|
subnodes. Each of these subnodes represents some desired configuration for a
|
|
pin or a list of pins. This configuration can include the
|
|
mux function to select on those pin(s), and various pin configuration
|
|
parameters, as listed below.
|
|
|
|
|
|
SUBNODES:
|
|
|
|
The name of each subnode is not important; all subnodes should be enumerated
|
|
and processed purely based on their content.
|
|
|
|
Each subnode only affects those parameters that are explicitly listed. In
|
|
other words, a subnode that lists a mux function but no pin configuration
|
|
parameters implies no information about any pin configuration parameters.
|
|
Similarly, a pin subnode that describes a pullup parameter implies no
|
|
information about e.g. the mux function.
|
|
|
|
The following generic properties as defined in pinctrl-bindings.txt are valid
|
|
to specify in a pin configuration subnode:
|
|
|
|
- pins:
|
|
Usage: required
|
|
Value type: <string-array>
|
|
Definition: List of gpio pins affected by the properties specified in
|
|
this subnode. Valid pins are:
|
|
gpio1-gpio6 for pm8018
|
|
gpio1-gpio12 for pm8038
|
|
gpio1-gpio40 for pm8058
|
|
gpio1-gpio4 for pm8916
|
|
gpio1-gpio38 for pm8917
|
|
gpio1-gpio44 for pm8921
|
|
gpio1-gpio36 for pm8941
|
|
gpio1-gpio22 for pm8994
|
|
gpio1-gpio22 for pma8084
|
|
|
|
- function:
|
|
Usage: required
|
|
Value type: <string>
|
|
Definition: Specify the alternative function to be configured for the
|
|
specified pins. Valid values are:
|
|
"normal",
|
|
"paired",
|
|
"func1",
|
|
"func2",
|
|
"dtest1",
|
|
"dtest2",
|
|
"dtest3",
|
|
"dtest4"
|
|
|
|
- bias-disable:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins should be configured as no pull.
|
|
|
|
- bias-pull-down:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins should be configured as pull down.
|
|
|
|
- bias-pull-up:
|
|
Usage: optional
|
|
Value type: <empty>
|
|
Definition: The specified pins should be configured as pull up.
|
|
|
|
- qcom,pull-up-strength:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: Specifies the strength to use for pull up, if selected.
|
|
Valid values are; as defined in
|
|
<dt-bindings/pinctrl/qcom,pmic-gpio.h>:
|
|
1: 30uA (PMIC_GPIO_PULL_UP_30)
|
|
2: 1.5uA (PMIC_GPIO_PULL_UP_1P5)
|
|
3: 31.5uA (PMIC_GPIO_PULL_UP_31P5)
|
|
4: 1.5uA + 30uA boost (PMIC_GPIO_PULL_UP_1P5_30)
|
|
If this property is omitted 30uA strength will be used if
|
|
pull up is selected
|
|
|
|
- bias-high-impedance:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins will put in high-Z mode and disabled.
|
|
|
|
- input-enable:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are put in input mode.
|
|
|
|
- output-high:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are configured in output mode, driven
|
|
high.
|
|
|
|
- output-low:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are configured in output mode, driven
|
|
low.
|
|
|
|
- power-source:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: Selects the power source for the specified pins. Valid
|
|
power sources are defined per chip in
|
|
<dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
|
|
|
- qcom,drive-strength:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: Selects the drive strength for the specified pins. Value
|
|
drive strengths are:
|
|
0: no (PMIC_GPIO_STRENGTH_NO)
|
|
1: high (PMIC_GPIO_STRENGTH_HIGH) 0.9mA @ 1.8V - 1.9mA @ 2.6V
|
|
2: medium (PMIC_GPIO_STRENGTH_MED) 0.6mA @ 1.8V - 1.25mA @ 2.6V
|
|
3: low (PMIC_GPIO_STRENGTH_LOW) 0.15mA @ 1.8V - 0.3mA @ 2.6V
|
|
as defined in <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
|
|
|
- drive-push-pull:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are configured in push-pull mode.
|
|
|
|
- drive-open-drain:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are configured in open-drain mode.
|
|
|
|
- drive-open-source:
|
|
Usage: optional
|
|
Value type: <none>
|
|
Definition: The specified pins are configured in open-source mode.
|
|
|
|
Example:
|
|
|
|
pm8921_gpio: gpio@150 {
|
|
compatible = "qcom,pm8921-gpio", "qcom,ssbi-gpio";
|
|
reg = <0x150 0x160>;
|
|
interrupts = <192 1>, <193 1>, <194 1>,
|
|
<195 1>, <196 1>, <197 1>,
|
|
<198 1>, <199 1>, <200 1>,
|
|
<201 1>, <202 1>, <203 1>,
|
|
<204 1>, <205 1>, <206 1>,
|
|
<207 1>, <208 1>, <209 1>,
|
|
<210 1>, <211 1>, <212 1>,
|
|
<213 1>, <214 1>, <215 1>,
|
|
<216 1>, <217 1>, <218 1>,
|
|
<219 1>, <220 1>, <221 1>,
|
|
<222 1>, <223 1>, <224 1>,
|
|
<225 1>, <226 1>, <227 1>,
|
|
<228 1>, <229 1>, <230 1>,
|
|
<231 1>, <232 1>, <233 1>,
|
|
<234 1>, <235 1>;
|
|
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
|
|
pm8921_gpio_keys: gpio-keys {
|
|
volume-keys {
|
|
pins = "gpio20", "gpio21";
|
|
function = "normal";
|
|
|
|
input-enable;
|
|
bias-pull-up;
|
|
drive-push-pull;
|
|
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
|
|
power-source = <PM8921_GPIO_S4>;
|
|
};
|
|
};
|
|
};
|