On Thu, 2014-07-17 at 22:41 +0300, Ivan T. Ivanov wrote: > 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. > Hi Bjorn, Are you ok with these changes? I plan to send next version which adds parsing code for new "qcom,strength" and "qcom,pull-up". Regards, Ivan > 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 -- 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