sm501: gpio dynamic registration for PCI devices
The SM501 PCI card requires a dyanmic gpio allocation as the number of cards is not known at compile time. Fixup the platform data and registration to deal with this. Acked-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Arnaud Patard <apatard@mandriva.com> Cc: David Brownell <david-b@pacbell.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f61be273d3
commit
60e540d617
@ -996,12 +996,13 @@ static int __devinit sm501_gpio_register_chip(struct sm501_devdata *sm,
|
||||
{
|
||||
struct sm501_platdata *pdata = sm->platdata;
|
||||
struct gpio_chip *gchip = &chip->gpio;
|
||||
unsigned base = pdata->gpio_base;
|
||||
int base = pdata->gpio_base;
|
||||
|
||||
memcpy(chip, &gpio_chip_template, sizeof(struct gpio_chip));
|
||||
|
||||
if (chip == &gpio->high) {
|
||||
base += 32;
|
||||
if (base > 0)
|
||||
base += 32;
|
||||
chip->regbase = gpio->regs + SM501_GPIO_DATA_HIGH;
|
||||
gchip->label = "SM501-HIGH";
|
||||
} else {
|
||||
@ -1452,6 +1453,7 @@ static struct sm501_platdata_fb sm501_fb_pdata = {
|
||||
static struct sm501_platdata sm501_pci_platdata = {
|
||||
.init = &sm501_pci_initdata,
|
||||
.fb = &sm501_fb_pdata,
|
||||
.gpio_base = -1,
|
||||
};
|
||||
|
||||
static int sm501_pci_probe(struct pci_dev *dev,
|
||||
|
@ -156,7 +156,7 @@ struct sm501_platdata {
|
||||
struct sm501_platdata_fb *fb;
|
||||
|
||||
int flags;
|
||||
unsigned gpio_base;
|
||||
int gpio_base;
|
||||
|
||||
int (*get_power)(struct device *dev);
|
||||
int (*set_power)(struct device *dev, unsigned int on);
|
||||
|
Loading…
Reference in New Issue
Block a user