From: "Ivan T. Ivanov" <iivanov@xxxxxxxxxx> Available 'power-source' labels differ between chips. Use just VIN0-VIN14 in the input source names. PM8018, PM8038, PM8058, PM8917, PM8921 pin controller hardware support only one function 'gpio'. Currently GPIO's will support only 'normal' mode. Rest of the modes will be added later, if needed. We can not use generic drive-strength because Qualcomm hardware define those values as low, medium and high. Use qcom,strength for this. We can not use generic bias-pull-up because Qualcomm hardware define those values in uA's. Use qcom,pull-up for this. Add qcom,pm8941-gpio and qcom,pma8084-gpio to chips, which support these DT bindings. Signed-off-by: Ivan T. Ivanov <iivanov@xxxxxxxxxx> --- .../bindings/pinctrl/qcom,pm8xxx-gpio.txt | 97 +++++++++++----------- drivers/pinctrl/pinctrl-pm8xxx-gpio.c | 34 ++++---- include/dt-bindings/pinctrl/qcom,pm8xxx-gpio.h | 33 ++++---- 3 files changed, 81 insertions(+), 83 deletions(-) diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,pm8xxx-gpio.txt b/Documentation/devicetree/bindings/pinctrl/qcom,pm8xxx-gpio.txt index 0035dd8..f17580a 100644 --- a/Documentation/devicetree/bindings/pinctrl/qcom,pm8xxx-gpio.txt +++ b/Documentation/devicetree/bindings/pinctrl/qcom,pm8xxx-gpio.txt @@ -12,6 +12,8 @@ Qualcomm. "qcom,pm8058-gpio" "qcom,pm8917-gpio" "qcom,pm8921-gpio" + "qcom,pm8941-gpio" + "qcom,pma8084-gpio" - reg: Usage: required @@ -74,20 +76,14 @@ to specify in a pin configuration subnode: gpio1-gpio40 for pm8058 gpio1-gpio38 for pm8917 gpio1-gpio44 for pm8921 + gpio1-gpio36 for pm8941 + gpio1-gpio22 for pma8084 - function: - Usage: optional + Usage: mandatory 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" + specified pins. Valid values is: "gpio" - bias-disable: Usage: optional @@ -99,18 +95,6 @@ to specify in a pin configuration subnode: Value type: <none> Definition: The specified pins should be configued as pull down. -- bias-pull-up: - Usage: optional - Value type: <u32> (optional) - Definition: The specified pins should be configued as pull up. An - optional argument can be used to configure the strength. - Valid values are; as defined in - <dt-bindings/pinctrl/qcom,pm8xxx-gpio.h>: - 1: 30uA (PM8XXX_GPIO_PULL_UP_30) - 2: 1.5uA (PM8XXX_GPIO_PULL_UP_1P5) - 3: 31.5uA (PM8XXX_GPIO_PULL_UP_31P5) - 4: 1.5uA + 30uA boost (PM8XXX_GPIO_PULL_UP_1P5_30) - - bias-high-impedance: Usage: optional Value type: <none> @@ -139,47 +123,37 @@ to specify in a pin configuration subnode: Definition: Selects the power source for the specified pins. Valid power sources are, as defined in <dt-bindings/pinctrl/qcom,pm8xxx-gpio.h>: - 0: bb (PM8XXX_GPIO_VIN_BB) + 0: bb (PM8XXX_GPIO_VIN0) valid for pm8038, pm8058, pm8917, pm8921 - 1: ldo2 (PM8XXX_GPIO_VIN_L2) + 1: ldo2 (PM8XXX_GPIO_VIN1) valid for pm8018, pm8038, pm8917,pm8921 - 2: ldo3 (PM8XXX_GPIO_VIN_L3) + 2: ldo3 (PM8XXX_GPIO_VIN2) valid for pm8038, pm8058, pm8917, pm8921 - 3: ldo4 (PM8XXX_GPIO_VIN_L4) + 3: ldo4 (PM8XXX_GPIO_VIN3) valid for pm8018, pm8917, pm8921 - 4: ldo5 (PM8XXX_GPIO_VIN_L5) + 4: ldo5 (PM8XXX_GPIO_VIN4) valid for pm8018, pm8058 - 5: ldo6 (PM8XXX_GPIO_VIN_L6) + 5: ldo6 (PM8XXX_GPIO_VIN5) valid for pm8018, pm8058 - 6: ldo7 (PM8XXX_GPIO_VIN_L7) + 6: ldo7 (PM8XXX_GPIO_VIN6) valid for pm8058 - 7: ldo8 (PM8XXX_GPIO_VIN_L8) + 7: ldo8 (PM8XXX_GPIO_VIN7) valid for pm8018 - 8: ldo11 (PM8XXX_GPIO_VIN_L11) + 8: ldo11 (PM8XXX_GPIO_VIN8) valid for pm8038 - 9: ldo14 (PM8XXX_GPIO_VIN_L14) + 9: ldo14 (PM8XXX_GPIO_VIN9) valid for pm8018 - 10: ldo15 (PM8XXX_GPIO_VIN_L15) + 10: ldo15 (PM8XXX_GPIO_VIN10) valid for pm8038, pm8917, pm8921 - 11: ldo17 (PM8XXX_GPIO_VIN_L17) + 11: ldo17 (PM8XXX_GPIO_VIN11) valid for pm8038, pm8917, pm8921 - 12: smps3 (PM8XXX_GPIO_VIN_S3) + 12: smps3 (PM8XXX_GPIO_VIN12) valid for pm8018, pm8058 - 13: smps4 (PM8XXX_GPIO_VIN_S4) + 13: smps4 (PM8XXX_GPIO_VIN13) valid for pm8921 - 14: vph (PM8XXX_GPIO_VIN_VPH) + 14: vph (PM8XXX_GPIO_VIN14) valid for pm8018, pm8038, pm8058, pm8917 pm8921 -- drive-strength: - Usage: optional - Value type: <u32> - Definition: Selects the drive strength for the specified pins. Value - drive strengths are: - 0: no (PM8XXX_GPIO_STRENGTH_NO) - 1: high (PM8XXX_GPIO_STRENGTH_HIGH) - 2: medium (PM8XXX_GPIO_STRENGTH_MED) - 3: low (PM8XXX_GPIO_STRENGTH_LOW) - - drive-push-pull: Usage: optional Value type: <none> @@ -190,6 +164,28 @@ to specify in a pin configuration subnode: Value type: <none> Definition: The specified pins are configured in open-drain mode. +- qcom,pull-up: + Usage: optional + Value type: <u32> + Definition: The specified pins should be configued as pull up. An + optional argument can be used to configure the strength. + Valid values are as defined in + <dt-bindings/pinctrl/qcom,pm8xxx-gpio.h>: + 1: 30uA (PM8XXX_GPIO_PULL_UP_30) + 2: 1.5uA (PM8XXX_GPIO_PULL_UP_1P5) + 3: 31.5uA (PM8XXX_GPIO_PULL_UP_31P5) + 4: 1.5uA + 30uA boost (PM8XXX_GPIO_PULL_UP_1P5_30) + +- qcom,strength: + Usage: optional + Value type: <u32> + Definition: Selects the drive strength for the specified pins. + Valid values are as defined in + <dt-bindings/pinctrl/qcom,pm8xxx-gpio.h>: + 0: no (PM8XXX_GPIO_STRENGTH_NO) + 1: high (PM8XXX_GPIO_STRENGTH_HIGH) + 2: medium (PM8XXX_GPIO_STRENGTH_MED) + 3: low (PM8XXX_GPIO_STRENGTH_LOW) Example: @@ -218,13 +214,14 @@ Example: pm8921_gpio_keys: gpio-keys { volume-keys { pins = "gpio20", "gpio21"; - function = "normal"; + function = "gpio"; input-enable; bias-pull-up; drive-push-pull; - drive-strength = <PM8XXX_GPIO_STRENGTH_NO>; - power-source = <PM8XXX_GPIO_VIN_S4>; + + power-source = <PM8XXX_GPIO_VIN13>; + qcom,strength = <PM8XXX_GPIO_STRENGTH_NO>; }; }; }; diff --git a/drivers/pinctrl/pinctrl-pm8xxx-gpio.c b/drivers/pinctrl/pinctrl-pm8xxx-gpio.c index 5aaf914..68feb2f 100644 --- a/drivers/pinctrl/pinctrl-pm8xxx-gpio.c +++ b/drivers/pinctrl/pinctrl-pm8xxx-gpio.c @@ -95,9 +95,7 @@ static const char * const pm8xxx_gpio_groups[PM8XXX_MAX_GPIOS] = { }; static const char * const pm8xxx_gpio_functions[] = { - "normal", "paired", - "func1", "func2", - "dtest1", "dtest2", "dtest3", "dtest4", + "gpio", }; static int pm8xxx_gpio_read(struct pm8xxx_gpio *pctrl, int pin, int bank) @@ -622,9 +620,9 @@ static int pm8xxx_gpio_populate(struct pm8xxx_gpio *pctrl) static const struct pm8xxx_gpio_data pm8018_gpio_data = { .ngpio = 6, .power_sources = (int[]) { - PM8XXX_GPIO_VIN_L4, PM8XXX_GPIO_VIN_L14, PM8XXX_GPIO_VIN_S3, - PM8XXX_GPIO_VIN_L6, PM8XXX_GPIO_VIN_L2, PM8XXX_GPIO_VIN_L5, - PM8XXX_GPIO_VIN_L8, PM8XXX_GPIO_VIN_VPH + PM8XXX_GPIO_VIN3, PM8XXX_GPIO_VIN9, PM8XXX_GPIO_VIN12, + PM8XXX_GPIO_VIN5, PM8XXX_GPIO_VIN1, PM8XXX_GPIO_VIN4, + PM8XXX_GPIO_VIN7, PM8XXX_GPIO_VIN14 }, .npower_sources = 8, }; @@ -632,9 +630,9 @@ static const struct pm8xxx_gpio_data pm8018_gpio_data = { static const struct pm8xxx_gpio_data pm8038_gpio_data = { .ngpio = 12, .power_sources = (int[]) { - PM8XXX_GPIO_VIN_VPH, PM8XXX_GPIO_VIN_BB, PM8XXX_GPIO_VIN_L11, - PM8XXX_GPIO_VIN_L15, PM8XXX_GPIO_VIN_L4, PM8XXX_GPIO_VIN_L3, - PM8XXX_GPIO_VIN_L17 + PM8XXX_GPIO_VIN14, PM8XXX_GPIO_VIN0, PM8XXX_GPIO_VIN8, + PM8XXX_GPIO_VIN10, PM8XXX_GPIO_VIN3, PM8XXX_GPIO_VIN2, + PM8XXX_GPIO_VIN11 }, .npower_sources = 7, }; @@ -642,18 +640,18 @@ static const struct pm8xxx_gpio_data pm8038_gpio_data = { static const struct pm8xxx_gpio_data pm8058_gpio_data = { .ngpio = 40, .power_sources = (int[]) { - PM8XXX_GPIO_VIN_VPH, PM8XXX_GPIO_VIN_BB, PM8XXX_GPIO_VIN_S3, - PM8XXX_GPIO_VIN_L3, PM8XXX_GPIO_VIN_L7, PM8XXX_GPIO_VIN_L6, - PM8XXX_GPIO_VIN_L5, PM8XXX_GPIO_VIN_L2 + PM8XXX_GPIO_VIN14, PM8XXX_GPIO_VIN0, PM8XXX_GPIO_VIN12, + PM8XXX_GPIO_VIN2, PM8XXX_GPIO_VIN6, PM8XXX_GPIO_VIN5, + PM8XXX_GPIO_VIN4, PM8XXX_GPIO_VIN1 }, .npower_sources = 8, }; static const struct pm8xxx_gpio_data pm8917_gpio_data = { .ngpio = 38, .power_sources = (int[]) { - PM8XXX_GPIO_VIN_VPH, PM8XXX_GPIO_VIN_BB, PM8XXX_GPIO_VIN_S4, - PM8XXX_GPIO_VIN_L15, PM8XXX_GPIO_VIN_L4, PM8XXX_GPIO_VIN_L3, - PM8XXX_GPIO_VIN_L17 + PM8XXX_GPIO_VIN14, PM8XXX_GPIO_VIN0, PM8XXX_GPIO_VIN13, + PM8XXX_GPIO_VIN10, PM8XXX_GPIO_VIN3, PM8XXX_GPIO_VIN2, + PM8XXX_GPIO_VIN11 }, .npower_sources = 7, }; @@ -661,9 +659,9 @@ static const struct pm8xxx_gpio_data pm8917_gpio_data = { static const struct pm8xxx_gpio_data pm8921_gpio_data = { .ngpio = 44, .power_sources = (int[]) { - PM8XXX_GPIO_VIN_VPH, PM8XXX_GPIO_VIN_BB, PM8XXX_GPIO_VIN_S4, - PM8XXX_GPIO_VIN_L15, PM8XXX_GPIO_VIN_L4, PM8XXX_GPIO_VIN_L3, - PM8XXX_GPIO_VIN_L17 + PM8XXX_GPIO_VIN14, PM8XXX_GPIO_VIN0, PM8XXX_GPIO_VIN13, + PM8XXX_GPIO_VIN10, PM8XXX_GPIO_VIN3, PM8XXX_GPIO_VIN2, + PM8XXX_GPIO_VIN11 }, .npower_sources = 7, }; diff --git a/include/dt-bindings/pinctrl/qcom,pm8xxx-gpio.h b/include/dt-bindings/pinctrl/qcom,pm8xxx-gpio.h index 6b66fff..564fd05 100644 --- a/include/dt-bindings/pinctrl/qcom,pm8xxx-gpio.h +++ b/include/dt-bindings/pinctrl/qcom,pm8xxx-gpio.h @@ -5,27 +5,30 @@ #ifndef _DT_BINDINGS_PINCTRL_QCOM_PM8XXX_GPIO_H #define _DT_BINDINGS_PINCTRL_QCOM_PM8XXX_GPIO_H +/* To be used with "qcom,pull-up = <>" */ #define PM8XXX_GPIO_PULL_UP_30 1 #define PM8XXX_GPIO_PULL_UP_1P5 2 #define PM8XXX_GPIO_PULL_UP_31P5 3 #define PM8XXX_GPIO_PULL_UP_1P5_30 4 -#define PM8XXX_GPIO_VIN_BB 0 -#define PM8XXX_GPIO_VIN_L2 1 -#define PM8XXX_GPIO_VIN_L3 2 -#define PM8XXX_GPIO_VIN_L4 3 -#define PM8XXX_GPIO_VIN_L5 4 -#define PM8XXX_GPIO_VIN_L6 5 -#define PM8XXX_GPIO_VIN_L7 6 -#define PM8XXX_GPIO_VIN_L8 7 -#define PM8XXX_GPIO_VIN_L11 8 -#define PM8XXX_GPIO_VIN_L14 9 -#define PM8XXX_GPIO_VIN_L15 10 -#define PM8XXX_GPIO_VIN_L17 11 -#define PM8XXX_GPIO_VIN_S3 12 -#define PM8XXX_GPIO_VIN_S4 13 -#define PM8XXX_GPIO_VIN_VPH 14 +/* power-source */ +#define PM8XXX_GPIO_VIN0 0 +#define PM8XXX_GPIO_VIN1 1 +#define PM8XXX_GPIO_VIN2 2 +#define PM8XXX_GPIO_VIN3 3 +#define PM8XXX_GPIO_VIN4 4 +#define PM8XXX_GPIO_VIN5 5 +#define PM8XXX_GPIO_VIN6 6 +#define PM8XXX_GPIO_VIN7 7 +#define PM8XXX_GPIO_VIN8 8 +#define PM8XXX_GPIO_VIN9 9 +#define PM8XXX_GPIO_VIN10 10 +#define PM8XXX_GPIO_VIN11 11 +#define PM8XXX_GPIO_VIN12 12 +#define PM8XXX_GPIO_VIN13 13 +#define PM8XXX_GPIO_VIN14 14 +/* To be used with "qcom,strength = <>" */ #define PM8XXX_GPIO_STRENGTH_NO 0 #define PM8XXX_GPIO_STRENGTH_HIGH 1 #define PM8XXX_GPIO_STRENGTH_MED 2 -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html