diff options
Diffstat (limited to 'drivers/gpio/gpio-syscon.c')
| -rw-r--r-- | drivers/gpio/gpio-syscon.c | 9 | 
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/gpio/gpio-syscon.c b/drivers/gpio/gpio-syscon.c index 537cec7583fc..8b0a69c5ba88 100644 --- a/drivers/gpio/gpio-syscon.c +++ b/drivers/gpio/gpio-syscon.c @@ -182,20 +182,15 @@ MODULE_DEVICE_TABLE(of, syscon_gpio_ids);  static int syscon_gpio_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev; -	const struct of_device_id *of_id;  	struct syscon_gpio_priv *priv;  	struct device_node *np = dev->of_node;  	int ret; -	of_id = of_match_device(syscon_gpio_ids, dev); -	if (!of_id) -		return -ENODEV; -  	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);  	if (!priv)  		return -ENOMEM; -	priv->data = of_id->data; +	priv->data = of_device_get_match_data(dev);  	if (priv->data->compatible) {  		priv->syscon = syscon_regmap_lookup_by_compatible( @@ -205,6 +200,8 @@ static int syscon_gpio_probe(struct platform_device *pdev)  	} else {  		priv->syscon =  			syscon_regmap_lookup_by_phandle(np, "gpio,syscon-dev"); +		if (IS_ERR(priv->syscon) && np->parent) +			priv->syscon = syscon_node_to_regmap(np->parent);  		if (IS_ERR(priv->syscon))  			return PTR_ERR(priv->syscon);  |