|
@@ -23,6 +23,7 @@
|
|
|
#include <linux/gpio.h>
|
|
|
#include <linux/interrupt.h>
|
|
|
#include <linux/of_device.h>
|
|
|
+#include <linux/of_irq.h>
|
|
|
|
|
|
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
|
|
|
|
|
@@ -650,11 +651,12 @@ static int pm8xxx_pin_populate(struct pm8xxx_gpio *pctrl,
|
|
|
}
|
|
|
|
|
|
static const struct of_device_id pm8xxx_gpio_of_match[] = {
|
|
|
- { .compatible = "qcom,pm8018-gpio", .data = (void *)6 },
|
|
|
- { .compatible = "qcom,pm8038-gpio", .data = (void *)12 },
|
|
|
- { .compatible = "qcom,pm8058-gpio", .data = (void *)40 },
|
|
|
- { .compatible = "qcom,pm8917-gpio", .data = (void *)38 },
|
|
|
- { .compatible = "qcom,pm8921-gpio", .data = (void *)44 },
|
|
|
+ { .compatible = "qcom,pm8018-gpio" },
|
|
|
+ { .compatible = "qcom,pm8038-gpio" },
|
|
|
+ { .compatible = "qcom,pm8058-gpio" },
|
|
|
+ { .compatible = "qcom,pm8917-gpio" },
|
|
|
+ { .compatible = "qcom,pm8921-gpio" },
|
|
|
+ { .compatible = "qcom,ssbi-gpio" },
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, pm8xxx_gpio_of_match);
|
|
@@ -672,7 +674,9 @@ static int pm8xxx_gpio_probe(struct platform_device *pdev)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
pctrl->dev = &pdev->dev;
|
|
|
- pctrl->npins = (unsigned)of_device_get_match_data(&pdev->dev);
|
|
|
+ pctrl->npins = of_irq_count(pdev->dev.of_node);
|
|
|
+ if (!pctrl->npins)
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
|
|
if (!pctrl->regmap) {
|