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;
 | 
							scl_pin = pdata->scl_pin;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = gpio_request(sda_pin, "sda");
 | 
						ret = devm_gpio_request(&pdev->dev, sda_pin, "sda");
 | 
				
			||||||
	if (ret) {
 | 
						if (ret) {
 | 
				
			||||||
		if (ret == -EINVAL)
 | 
							if (ret == -EINVAL)
 | 
				
			||||||
			ret = -EPROBE_DEFER;	/* Try again later */
 | 
								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) {
 | 
				
			||||||
		if (ret == -EINVAL)
 | 
							if (ret == -EINVAL)
 | 
				
			||||||
			ret = -EPROBE_DEFER;	/* Try again later */
 | 
								ret = -EPROBE_DEFER;	/* Try again later */
 | 
				
			||||||
		goto err_request_scl;
 | 
							return ret;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 | 
						priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
 | 
				
			||||||
	if (!priv) {
 | 
						if (!priv)
 | 
				
			||||||
		ret = -ENOMEM;
 | 
							return -ENOMEM;
 | 
				
			||||||
		goto err_add_bus;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	adap = &priv->adap;
 | 
						adap = &priv->adap;
 | 
				
			||||||
	bit_data = &priv->bit_data;
 | 
						bit_data = &priv->bit_data;
 | 
				
			||||||
	pdata = &priv->pdata;
 | 
						pdata = &priv->pdata;
 | 
				
			||||||
| 
						 | 
					@ -225,7 +223,7 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 | 
				
			||||||
	adap->nr = pdev->id;
 | 
						adap->nr = pdev->id;
 | 
				
			||||||
	ret = i2c_bit_add_numbered_bus(adap);
 | 
						ret = i2c_bit_add_numbered_bus(adap);
 | 
				
			||||||
	if (ret)
 | 
						if (ret)
 | 
				
			||||||
		goto err_add_bus;
 | 
							return ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	platform_set_drvdata(pdev, priv);
 | 
						platform_set_drvdata(pdev, priv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -235,13 +233,6 @@ static int i2c_gpio_probe(struct platform_device *pdev)
 | 
				
			||||||
		 ? ", no clock stretching" : "");
 | 
							 ? ", no clock stretching" : "");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						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)
 | 
					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;
 | 
						pdata = &priv->pdata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	i2c_del_adapter(adap);
 | 
						i2c_del_adapter(adap);
 | 
				
			||||||
	gpio_free(pdata->scl_pin);
 | 
					 | 
				
			||||||
	gpio_free(pdata->sda_pin);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue