diff options
Diffstat (limited to 'drivers/pinctrl/pinctrl-abx500.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-abx500.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/drivers/pinctrl/pinctrl-abx500.c b/drivers/pinctrl/pinctrl-abx500.c index aa17f7580f61..6d4532702f80 100644 --- a/drivers/pinctrl/pinctrl-abx500.c +++ b/drivers/pinctrl/pinctrl-abx500.c | |||
@@ -851,23 +851,12 @@ static int abx500_gpio_probe(struct platform_device *pdev) | |||
851 | 851 | ||
852 | if (abx500_pdata) | 852 | if (abx500_pdata) |
853 | pdata = abx500_pdata->gpio; | 853 | pdata = abx500_pdata->gpio; |
854 | if (!pdata) { | ||
855 | if (np) { | ||
856 | const struct of_device_id *match; | ||
857 | 854 | ||
858 | match = of_match_device(abx500_gpio_match, &pdev->dev); | 855 | if (!(pdata || np)) { |
859 | if (!match) | 856 | dev_err(&pdev->dev, "gpio dt and platform data missing\n"); |
860 | return -ENODEV; | 857 | return -ENODEV; |
861 | id = (unsigned long)match->data; | ||
862 | } else { | ||
863 | dev_err(&pdev->dev, "gpio dt and platform data missing\n"); | ||
864 | return -ENODEV; | ||
865 | } | ||
866 | } | 858 | } |
867 | 859 | ||
868 | if (platid) | ||
869 | id = platid->driver_data; | ||
870 | |||
871 | pct = devm_kzalloc(&pdev->dev, sizeof(struct abx500_pinctrl), | 860 | pct = devm_kzalloc(&pdev->dev, sizeof(struct abx500_pinctrl), |
872 | GFP_KERNEL); | 861 | GFP_KERNEL); |
873 | if (pct == NULL) { | 862 | if (pct == NULL) { |
@@ -882,6 +871,16 @@ static int abx500_gpio_probe(struct platform_device *pdev) | |||
882 | pct->chip.dev = &pdev->dev; | 871 | pct->chip.dev = &pdev->dev; |
883 | pct->chip.base = (np) ? -1 : pdata->gpio_base; | 872 | pct->chip.base = (np) ? -1 : pdata->gpio_base; |
884 | 873 | ||
874 | if (platid) | ||
875 | id = platid->driver_data; | ||
876 | else if (np) { | ||
877 | const struct of_device_id *match; | ||
878 | |||
879 | match = of_match_device(abx500_gpio_match, &pdev->dev); | ||
880 | if (match) | ||
881 | id = (unsigned long)match->data; | ||
882 | } | ||
883 | |||
885 | /* initialize the lock */ | 884 | /* initialize the lock */ |
886 | mutex_init(&pct->lock); | 885 | mutex_init(&pct->lock); |
887 | 886 | ||
@@ -900,8 +899,7 @@ static int abx500_gpio_probe(struct platform_device *pdev) | |||
900 | abx500_pinctrl_ab8505_init(&pct->soc); | 899 | abx500_pinctrl_ab8505_init(&pct->soc); |
901 | break; | 900 | break; |
902 | default: | 901 | default: |
903 | dev_err(&pdev->dev, "Unsupported pinctrl sub driver (%d)\n", | 902 | dev_err(&pdev->dev, "Unsupported pinctrl sub driver (%d)\n", id); |
904 | (int) platid->driver_data); | ||
905 | mutex_destroy(&pct->lock); | 903 | mutex_destroy(&pct->lock); |
906 | return -EINVAL; | 904 | return -EINVAL; |
907 | } | 905 | } |