forked from mirrors/linux
		
	i2c: gpio: Use devm_gpio_request()
Use devm_gpio_request() to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Reviewed-by: Violeta Menendez <violeta.menendez@codethink.co.uk> Reviewed-by: Ian Molton <ian.molton@codethink.co.uk> Tested-by: Violeta Menendez <violeta.menendez@codethink.co.uk> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
		
							parent
							
								
									fa96faaa11
								
							
						
					
					
						commit
						a0682a3158
					
				
					 1 changed files with 7 additions and 18 deletions
				
			
		| 
						 | 
				
			
			@ -147,24 +147,22 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 | 
			
		|||
		scl_pin = pdata->scl_pin;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ret = gpio_request(sda_pin, "sda");
 | 
			
		||||
	ret = devm_gpio_request(&pdev->dev, sda_pin, "sda");
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		if (ret == -EINVAL)
 | 
			
		||||
			ret = -EPROBE_DEFER;	/* Try again later */
 | 
			
		||||
		goto err_request_sda;
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
	ret = gpio_request(scl_pin, "scl");
 | 
			
		||||
	ret = devm_gpio_request(&pdev->dev, scl_pin, "scl");
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		if (ret == -EINVAL)
 | 
			
		||||
			ret = -EPROBE_DEFER;	/* Try again later */
 | 
			
		||||
		goto err_request_scl;
 | 
			
		||||
		return ret;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 | 
			
		||||
	if (!priv) {
 | 
			
		||||
		ret = -ENOMEM;
 | 
			
		||||
		goto err_add_bus;
 | 
			
		||||
	}
 | 
			
		||||
	if (!priv)
 | 
			
		||||
		return -ENOMEM;
 | 
			
		||||
	adap = &priv->adap;
 | 
			
		||||
	bit_data = &priv->bit_data;
 | 
			
		||||
	pdata = &priv->pdata;
 | 
			
		||||
| 
						 | 
				
			
			@ -225,7 +223,7 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 | 
			
		|||
	adap->nr = pdev->id;
 | 
			
		||||
	ret = i2c_bit_add_numbered_bus(adap);
 | 
			
		||||
	if (ret)
 | 
			
		||||
		goto err_add_bus;
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	platform_set_drvdata(pdev, priv);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -235,13 +233,6 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 | 
			
		|||
		 ? ", no clock stretching" : "");
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
err_add_bus:
 | 
			
		||||
	gpio_free(scl_pin);
 | 
			
		||||
err_request_scl:
 | 
			
		||||
	gpio_free(sda_pin);
 | 
			
		||||
err_request_sda:
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int i2c_gpio_remove(struct platform_device *pdev)
 | 
			
		||||
| 
						 | 
				
			
			@ -255,8 +246,6 @@ static int i2c_gpio_remove(struct platform_device *pdev)
 | 
			
		|||
	pdata = &priv->pdata;
 | 
			
		||||
 | 
			
		||||
	i2c_del_adapter(adap);
 | 
			
		||||
	gpio_free(pdata->scl_pin);
 | 
			
		||||
	gpio_free(pdata->sda_pin);
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue