backlight: lms283gf05: use devm_gpio_request()
The devm_ functions allocate memory that is released when a driver detaches. This patch uses devm_gpio_request() for these functions. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Acked-by: Marek Vasut <marek.vasut@gmail.com> Cc: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
f5b71941a5
commit
04e961fb1d
@@ -158,29 +158,27 @@ static int __devinit lms283gf05_probe(struct spi_device *spi)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (pdata != NULL) {
|
if (pdata != NULL) {
|
||||||
ret = gpio_request(pdata->reset_gpio, "LMS285GF05 RESET");
|
ret = devm_gpio_request(&spi->dev, pdata->reset_gpio,
|
||||||
|
"LMS285GF05 RESET");
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = gpio_direction_output(pdata->reset_gpio,
|
ret = gpio_direction_output(pdata->reset_gpio,
|
||||||
!pdata->reset_inverted);
|
!pdata->reset_inverted);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
st = devm_kzalloc(&spi->dev, sizeof(struct lms283gf05_state),
|
st = devm_kzalloc(&spi->dev, sizeof(struct lms283gf05_state),
|
||||||
GFP_KERNEL);
|
GFP_KERNEL);
|
||||||
if (st == NULL) {
|
if (st == NULL) {
|
||||||
dev_err(&spi->dev, "No memory for device state\n");
|
dev_err(&spi->dev, "No memory for device state\n");
|
||||||
ret = -ENOMEM;
|
return -ENOMEM;
|
||||||
goto err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ld = lcd_device_register("lms283gf05", &spi->dev, st, &lms_ops);
|
ld = lcd_device_register("lms283gf05", &spi->dev, st, &lms_ops);
|
||||||
if (IS_ERR(ld)) {
|
if (IS_ERR(ld))
|
||||||
ret = PTR_ERR(ld);
|
return PTR_ERR(ld);
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
st->spi = spi;
|
st->spi = spi;
|
||||||
st->ld = ld;
|
st->ld = ld;
|
||||||
@@ -193,24 +191,14 @@ static int __devinit lms283gf05_probe(struct spi_device *spi)
|
|||||||
lms283gf05_toggle(spi, disp_initseq, ARRAY_SIZE(disp_initseq));
|
lms283gf05_toggle(spi, disp_initseq, ARRAY_SIZE(disp_initseq));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err:
|
|
||||||
if (pdata != NULL)
|
|
||||||
gpio_free(pdata->reset_gpio);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __devexit lms283gf05_remove(struct spi_device *spi)
|
static int __devexit lms283gf05_remove(struct spi_device *spi)
|
||||||
{
|
{
|
||||||
struct lms283gf05_state *st = dev_get_drvdata(&spi->dev);
|
struct lms283gf05_state *st = dev_get_drvdata(&spi->dev);
|
||||||
struct lms283gf05_pdata *pdata = st->spi->dev.platform_data;
|
|
||||||
|
|
||||||
lcd_device_unregister(st->ld);
|
lcd_device_unregister(st->ld);
|
||||||
|
|
||||||
if (pdata != NULL)
|
|
||||||
gpio_free(pdata->reset_gpio);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user