diff options
-rw-r--r-- | drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c index ded7d765af2e..23641e4d4521 100644 --- a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c +++ b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c | |||
@@ -665,12 +665,11 @@ static int pm8xxx_pin_populate(struct pm8xxx_gpio *pctrl, | |||
665 | } | 665 | } |
666 | 666 | ||
667 | static const struct of_device_id pm8xxx_gpio_of_match[] = { | 667 | static const struct of_device_id pm8xxx_gpio_of_match[] = { |
668 | { .compatible = "qcom,pm8018-gpio" }, | 668 | { .compatible = "qcom,pm8018-gpio", .data = (void *) 6 }, |
669 | { .compatible = "qcom,pm8038-gpio" }, | 669 | { .compatible = "qcom,pm8038-gpio", .data = (void *) 12 }, |
670 | { .compatible = "qcom,pm8058-gpio" }, | 670 | { .compatible = "qcom,pm8058-gpio", .data = (void *) 44 }, |
671 | { .compatible = "qcom,pm8917-gpio" }, | 671 | { .compatible = "qcom,pm8917-gpio", .data = (void *) 38 }, |
672 | { .compatible = "qcom,pm8921-gpio" }, | 672 | { .compatible = "qcom,pm8921-gpio", .data = (void *) 44 }, |
673 | { .compatible = "qcom,ssbi-gpio" }, | ||
674 | { }, | 673 | { }, |
675 | }; | 674 | }; |
676 | MODULE_DEVICE_TABLE(of, pm8xxx_gpio_of_match); | 675 | MODULE_DEVICE_TABLE(of, pm8xxx_gpio_of_match); |
@@ -680,20 +679,14 @@ static int pm8xxx_gpio_probe(struct platform_device *pdev) | |||
680 | struct pm8xxx_pin_data *pin_data; | 679 | struct pm8xxx_pin_data *pin_data; |
681 | struct pinctrl_pin_desc *pins; | 680 | struct pinctrl_pin_desc *pins; |
682 | struct pm8xxx_gpio *pctrl; | 681 | struct pm8xxx_gpio *pctrl; |
683 | int ret; | 682 | int ret, i; |
684 | int i, npins; | ||
685 | 683 | ||
686 | pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL); | 684 | pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL); |
687 | if (!pctrl) | 685 | if (!pctrl) |
688 | return -ENOMEM; | 686 | return -ENOMEM; |
689 | 687 | ||
690 | pctrl->dev = &pdev->dev; | 688 | pctrl->dev = &pdev->dev; |
691 | npins = platform_irq_count(pdev); | 689 | pctrl->npins = (uintptr_t) device_get_match_data(&pdev->dev); |
692 | if (!npins) | ||
693 | return -EINVAL; | ||
694 | if (npins < 0) | ||
695 | return npins; | ||
696 | pctrl->npins = npins; | ||
697 | 690 | ||
698 | pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL); | 691 | pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL); |
699 | if (!pctrl->regmap) { | 692 | if (!pctrl->regmap) { |