mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-12 09:32:44 +00:00
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
2 changed files with 5 additions and 3 deletions
|
@ -996,12 +996,13 @@ static int __devinit sm501_gpio_register_chip(struct sm501_devdata *sm,
|
||||||
{
|
{
|
||||||
struct sm501_platdata *pdata = sm->platdata;
|
struct sm501_platdata *pdata = sm->platdata;
|
||||||
struct gpio_chip *gchip = &chip->gpio;
|
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));
|
memcpy(chip, &gpio_chip_template, sizeof(struct gpio_chip));
|
||||||
|
|
||||||
if (chip == &gpio->high) {
|
if (chip == &gpio->high) {
|
||||||
base += 32;
|
if (base > 0)
|
||||||
|
base += 32;
|
||||||
chip->regbase = gpio->regs + SM501_GPIO_DATA_HIGH;
|
chip->regbase = gpio->regs + SM501_GPIO_DATA_HIGH;
|
||||||
gchip->label = "SM501-HIGH";
|
gchip->label = "SM501-HIGH";
|
||||||
} else {
|
} else {
|
||||||
|
@ -1452,6 +1453,7 @@ static struct sm501_platdata_fb sm501_fb_pdata = {
|
||||||
static struct sm501_platdata sm501_pci_platdata = {
|
static struct sm501_platdata sm501_pci_platdata = {
|
||||||
.init = &sm501_pci_initdata,
|
.init = &sm501_pci_initdata,
|
||||||
.fb = &sm501_fb_pdata,
|
.fb = &sm501_fb_pdata,
|
||||||
|
.gpio_base = -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int sm501_pci_probe(struct pci_dev *dev,
|
static int sm501_pci_probe(struct pci_dev *dev,
|
||||||
|
|
|
@ -156,7 +156,7 @@ struct sm501_platdata {
|
||||||
struct sm501_platdata_fb *fb;
|
struct sm501_platdata_fb *fb;
|
||||||
|
|
||||||
int flags;
|
int flags;
|
||||||
unsigned gpio_base;
|
int gpio_base;
|
||||||
|
|
||||||
int (*get_power)(struct device *dev);
|
int (*get_power)(struct device *dev);
|
||||||
int (*set_power)(struct device *dev, unsigned int on);
|
int (*set_power)(struct device *dev, unsigned int on);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue