diff options
Diffstat (limited to 'drivers/gpio/gpio-eic-sprd.c')
| -rw-r--r-- | drivers/gpio/gpio-eic-sprd.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpio/gpio-eic-sprd.c b/drivers/gpio/gpio-eic-sprd.c index bb287f35cf40..8c9757774010 100644 --- a/drivers/gpio/gpio-eic-sprd.c +++ b/drivers/gpio/gpio-eic-sprd.c @@ -569,6 +569,7 @@ static int sprd_eic_probe(struct platform_device *pdev)  	const struct sprd_eic_variant_data *pdata;  	struct gpio_irq_chip *irq;  	struct sprd_eic *sprd_eic; +	struct resource *res;  	int ret, i;  	pdata = of_device_get_match_data(&pdev->dev); @@ -595,9 +596,13 @@ static int sprd_eic_probe(struct platform_device *pdev)  		 * have one bank EIC, thus base[1] and base[2] can be  		 * optional.  		 */ -		sprd_eic->base[i] = devm_platform_ioremap_resource(pdev, i); -		if (IS_ERR(sprd_eic->base[i])) +		res = platform_get_resource(pdev, IORESOURCE_MEM, i); +		if (!res)  			continue; + +		sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res); +		if (IS_ERR(sprd_eic->base[i])) +			return PTR_ERR(sprd_eic->base[i]);  	}  	sprd_eic->chip.label = sprd_eic_label_name[sprd_eic->type];  |