Skip to content

Commit

Permalink
use managed gpio requests
Browse files Browse the repository at this point in the history
Use devm_gpio_request_one to simplify release and error paths.
devm_gpio_request_one came with Linux 3.5.
  • Loading branch information
notro committed Aug 9, 2014
1 parent 06f0bba commit 9644cef
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 35 deletions.
37 changes: 3 additions & 34 deletions fbtft-core.c
Expand Up @@ -153,8 +153,9 @@ int fbtft_request_gpios(struct fbtft_par *par)
if (flags == FBTFT_GPIO_NO_MATCH)
flags = fbtft_request_gpios_match(par, gpio);
if (flags != FBTFT_GPIO_NO_MATCH) {
ret = gpio_request_one(gpio->gpio, flags,
par->info->device->driver->name);
ret = devm_gpio_request_one(par->info->device,
gpio->gpio, flags,
par->info->device->driver->name);
if (ret < 0) {
dev_err(par->info->device,
"%s: gpio_request_one('%s'=%d) failed with %d\n",
Expand All @@ -173,33 +174,6 @@ int fbtft_request_gpios(struct fbtft_par *par)
return 0;
}

void fbtft_free_gpios(struct fbtft_par *par)
{
struct fbtft_platform_data *pdata = NULL;
const struct fbtft_gpio *gpio;

fbtft_par_dbg(DEBUG_FREE_GPIOS, par, "%s()\n", __func__);

if (par->spi)
pdata = par->spi->dev.platform_data;
if (par->pdev)
pdata = par->pdev->dev.platform_data;

if (pdata && pdata->gpios) {
gpio = pdata->gpios;
while (gpio->name[0]) {
fbtft_par_dbg(DEBUG_FREE_GPIOS, par,
"%s(): gpio_free('%s'=%d)\n",
__func__, gpio->name, gpio->gpio);
/* if the gpio wasn't recognized by request_gpios,
WARN() will protest */
gpio_direction_input(gpio->gpio);
gpio_free(gpio->gpio);
gpio++;
}
}
}

#ifdef CONFIG_FB_BACKLIGHT
int fbtft_backlight_update_status(struct backlight_device *bd)
{
Expand Down Expand Up @@ -601,8 +575,6 @@ void fbtft_merge_fbtftops(struct fbtft_ops *dst, struct fbtft_ops *src)
dst->request_gpios_match = src->request_gpios_match;
if (src->request_gpios)
dst->request_gpios = src->request_gpios;
if (src->free_gpios)
dst->free_gpios = src->free_gpios;
if (src->verify_gpios)
dst->verify_gpios = src->verify_gpios;
if (src->register_backlight)
Expand Down Expand Up @@ -831,7 +803,6 @@ struct fb_info *fbtft_framebuffer_alloc(struct fbtft_display *display,
par->fbtftops.mkdirty = fbtft_mkdirty;
par->fbtftops.update_display = fbtft_update_display;
par->fbtftops.request_gpios = fbtft_request_gpios;
par->fbtftops.free_gpios = fbtft_free_gpios;
if (display->backlight)
par->fbtftops.register_backlight = fbtft_register_backlight;

Expand Down Expand Up @@ -959,7 +930,6 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
spi_set_drvdata(spi, NULL);
if (par->pdev)
platform_set_drvdata(par->pdev, NULL);
par->fbtftops.free_gpios(par);

return ret;
}
Expand Down Expand Up @@ -987,7 +957,6 @@ int fbtft_unregister_framebuffer(struct fb_info *fb_info)
if (par->fbtftops.unregister_backlight)
par->fbtftops.unregister_backlight(par);
fbtft_sysfs_exit(par);
par->fbtftops.free_gpios(par);
ret = unregister_framebuffer(fb_info);
return ret;
}
Expand Down
1 change: 0 additions & 1 deletion fbtft.h
Expand Up @@ -96,7 +96,6 @@ struct fbtft_ops {
unsigned long (*request_gpios_match)(struct fbtft_par *par,
const struct fbtft_gpio *gpio);
int (*request_gpios)(struct fbtft_par *par);
void (*free_gpios)(struct fbtft_par *par);
int (*verify_gpios)(struct fbtft_par *par);

void (*register_backlight)(struct fbtft_par *par);
Expand Down

0 comments on commit 9644cef

Please sign in to comment.