Skip to content

Commit

Permalink
ARM: 6373/1: tc35892-gpio: add setup/remove callbacks
Browse files Browse the repository at this point in the history
For board-specific initialization.

Cc: Samuel Ortiz <[email protected]>
Cc: [email protected]
Acked-by: Linus Walleij <[email protected]>
Signed-off-by: Rabin Vincent <[email protected]>
Signed-off-by: Russell King <[email protected]>
  • Loading branch information
vitkyrka authored and Russell King committed Sep 19, 2010
1 parent f066439 commit f0a7a98
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/gpio/tc35892-gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,9 @@ static int __devinit tc35892_gpio_probe(struct platform_device *pdev)
goto out_freeirq;
}

if (pdata->setup)
pdata->setup(tc35892, tc35892_gpio->chip.base);

platform_set_drvdata(pdev, tc35892_gpio);

return 0;
Expand All @@ -338,9 +341,14 @@ static int __devinit tc35892_gpio_probe(struct platform_device *pdev)
static int __devexit tc35892_gpio_remove(struct platform_device *pdev)
{
struct tc35892_gpio *tc35892_gpio = platform_get_drvdata(pdev);
struct tc35892 *tc35892 = tc35892_gpio->tc35892;
struct tc35892_gpio_platform_data *pdata = tc35892->pdata->gpio;
int irq = platform_get_irq(pdev, 0);
int ret;

if (pdata->remove)
pdata->remove(tc35892, tc35892_gpio->chip.base);

ret = gpiochip_remove(&tc35892_gpio->chip);
if (ret < 0) {
dev_err(tc35892_gpio->dev,
Expand Down
4 changes: 4 additions & 0 deletions include/linux/mfd/tc35892.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,13 @@ extern int tc35892_set_bits(struct tc35892 *tc35892, u8 reg, u8 mask, u8 val);
* struct tc35892_gpio_platform_data - TC35892 GPIO platform data
* @gpio_base: first gpio number assigned to TC35892. A maximum of
* %TC35892_NR_GPIOS GPIOs will be allocated.
* @setup: callback for board-specific initialization
* @remove: callback for board-specific teardown
*/
struct tc35892_gpio_platform_data {
int gpio_base;
void (*setup)(struct tc35892 *tc35892, unsigned gpio_base);
void (*remove)(struct tc35892 *tc35892, unsigned gpio_base);
};

/**
Expand Down

0 comments on commit f0a7a98

Please sign in to comment.