Commit a940d9a1 authored by Tony Lindgren's avatar Tony Lindgren

ARM: OMAP2+: Remove hardcoded twl4030 gpio_base, irq_base and irq_end

We can't use hardcoded interrupts for SPARSE_IRQ, and can replace
the hardcoded gpio_base with twl_gpiochip.base after it's been
allocated.

Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
parent 714df7b8
...@@ -211,9 +211,6 @@ static struct regulator_init_data sdp2430_vmmc1 = { ...@@ -211,9 +211,6 @@ static struct regulator_init_data sdp2430_vmmc1 = {
}; };
static struct twl4030_gpio_platform_data sdp2430_gpio_data = { static struct twl4030_gpio_platform_data sdp2430_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
}; };
static struct twl4030_platform_data sdp2430_twldata = { static struct twl4030_platform_data sdp2430_twldata = {
......
...@@ -229,9 +229,6 @@ static int sdp3430_twl_gpio_setup(struct device *dev, ...@@ -229,9 +229,6 @@ static int sdp3430_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data sdp3430_gpio_data = { static struct twl4030_gpio_platform_data sdp3430_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.pulldowns = BIT(2) | BIT(6) | BIT(8) | BIT(13) .pulldowns = BIT(2) | BIT(6) | BIT(8) | BIT(13)
| BIT(16) | BIT(17), | BIT(16) | BIT(17),
.setup = sdp3430_twl_gpio_setup, .setup = sdp3430_twl_gpio_setup,
......
...@@ -543,7 +543,6 @@ static struct twl6040_platform_data twl6040_data = { ...@@ -543,7 +543,6 @@ static struct twl6040_platform_data twl6040_data = {
.codec = &twl6040_codec, .codec = &twl6040_codec,
.vibra = &twl6040_vibra, .vibra = &twl6040_vibra,
.audpwron_gpio = 127, .audpwron_gpio = 127,
.irq_base = TWL6040_CODEC_IRQ_BASE,
}; };
static struct twl4030_platform_data sdp4430_twldata = { static struct twl4030_platform_data sdp4430_twldata = {
......
...@@ -469,9 +469,6 @@ static int cm_t35_twl_gpio_setup(struct device *dev, unsigned gpio, ...@@ -469,9 +469,6 @@ static int cm_t35_twl_gpio_setup(struct device *dev, unsigned gpio,
} }
static struct twl4030_gpio_platform_data cm_t35_gpio_data = { static struct twl4030_gpio_platform_data cm_t35_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.setup = cm_t35_twl_gpio_setup, .setup = cm_t35_twl_gpio_setup,
}; };
......
...@@ -235,9 +235,6 @@ static int devkit8000_twl_gpio_setup(struct device *dev, ...@@ -235,9 +235,6 @@ static int devkit8000_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data devkit8000_gpio_data = { static struct twl4030_gpio_platform_data devkit8000_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.pulldowns = BIT(1) | BIT(2) | BIT(6) | BIT(8) | BIT(13) .pulldowns = BIT(1) | BIT(2) | BIT(6) | BIT(8) | BIT(13)
| BIT(15) | BIT(16) | BIT(17), | BIT(15) | BIT(16) | BIT(17),
......
...@@ -424,9 +424,6 @@ static int igep_twl_gpio_setup(struct device *dev, ...@@ -424,9 +424,6 @@ static int igep_twl_gpio_setup(struct device *dev,
}; };
static struct twl4030_gpio_platform_data igep_twl4030_gpio_pdata = { static struct twl4030_gpio_platform_data igep_twl4030_gpio_pdata = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.setup = igep_twl_gpio_setup, .setup = igep_twl_gpio_setup,
}; };
......
...@@ -274,9 +274,6 @@ static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio) ...@@ -274,9 +274,6 @@ static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio)
} }
static struct twl4030_gpio_platform_data ldp_gpio_data = { static struct twl4030_gpio_platform_data ldp_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.setup = ldp_twl_gpio_setup, .setup = ldp_twl_gpio_setup,
}; };
......
...@@ -296,9 +296,6 @@ static int beagle_twl_gpio_setup(struct device *dev, ...@@ -296,9 +296,6 @@ static int beagle_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data beagle_gpio_data = { static struct twl4030_gpio_platform_data beagle_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.pullups = BIT(1), .pullups = BIT(1),
.pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13)
......
...@@ -388,9 +388,6 @@ static int omap3evm_twl_gpio_setup(struct device *dev, ...@@ -388,9 +388,6 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data omap3evm_gpio_data = { static struct twl4030_gpio_platform_data omap3evm_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.setup = omap3evm_twl_gpio_setup, .setup = omap3evm_twl_gpio_setup,
}; };
......
...@@ -77,9 +77,6 @@ static struct regulator_init_data omap3logic_vmmc1 = { ...@@ -77,9 +77,6 @@ static struct regulator_init_data omap3logic_vmmc1 = {
}; };
static struct twl4030_gpio_platform_data omap3logic_gpio_data = { static struct twl4030_gpio_platform_data omap3logic_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.pullups = BIT(1), .pullups = BIT(1),
.pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8)
......
...@@ -320,9 +320,6 @@ static int omap3pandora_twl_gpio_setup(struct device *dev, ...@@ -320,9 +320,6 @@ static int omap3pandora_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data omap3pandora_gpio_data = { static struct twl4030_gpio_platform_data omap3pandora_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.setup = omap3pandora_twl_gpio_setup, .setup = omap3pandora_twl_gpio_setup,
}; };
......
...@@ -278,9 +278,6 @@ omap3stalker_twl_gpio_setup(struct device *dev, ...@@ -278,9 +278,6 @@ omap3stalker_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data omap3stalker_gpio_data = { static struct twl4030_gpio_platform_data omap3stalker_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.setup = omap3stalker_twl_gpio_setup, .setup = omap3stalker_twl_gpio_setup,
}; };
......
...@@ -138,9 +138,6 @@ static int touchbook_twl_gpio_setup(struct device *dev, ...@@ -138,9 +138,6 @@ static int touchbook_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data touchbook_gpio_data = { static struct twl4030_gpio_platform_data touchbook_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.pullups = BIT(1), .pullups = BIT(1),
.pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13)
......
...@@ -262,7 +262,6 @@ static struct twl6040_codec_data twl6040_codec = { ...@@ -262,7 +262,6 @@ static struct twl6040_codec_data twl6040_codec = {
static struct twl6040_platform_data twl6040_data = { static struct twl6040_platform_data twl6040_data = {
.codec = &twl6040_codec, .codec = &twl6040_codec,
.audpwron_gpio = 127, .audpwron_gpio = 127,
.irq_base = TWL6040_CODEC_IRQ_BASE,
}; };
/* Panda board uses the common PMIC configuration */ /* Panda board uses the common PMIC configuration */
......
...@@ -398,9 +398,6 @@ static int overo_twl_gpio_setup(struct device *dev, ...@@ -398,9 +398,6 @@ static int overo_twl_gpio_setup(struct device *dev,
} }
static struct twl4030_gpio_platform_data overo_gpio_data = { static struct twl4030_gpio_platform_data overo_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.use_leds = true, .use_leds = true,
.setup = overo_twl_gpio_setup, .setup = overo_twl_gpio_setup,
}; };
......
...@@ -72,9 +72,6 @@ static struct platform_device *rm680_peripherals_devices[] __initdata = { ...@@ -72,9 +72,6 @@ static struct platform_device *rm680_peripherals_devices[] __initdata = {
/* TWL */ /* TWL */
static struct twl4030_gpio_platform_data rm680_gpio_data = { static struct twl4030_gpio_platform_data rm680_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.pullups = BIT(0), .pullups = BIT(0),
.pulldowns = BIT(1) | BIT(2) | BIT(8) | BIT(15), .pulldowns = BIT(1) | BIT(2) | BIT(8) | BIT(15),
}; };
......
...@@ -773,9 +773,6 @@ static int rx51_twlgpio_setup(struct device *dev, unsigned gpio, unsigned n) ...@@ -773,9 +773,6 @@ static int rx51_twlgpio_setup(struct device *dev, unsigned gpio, unsigned n)
} }
static struct twl4030_gpio_platform_data rx51_gpio_data = { static struct twl4030_gpio_platform_data rx51_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.pulldowns = BIT(0) | BIT(1) | BIT(2) | BIT(3) .pulldowns = BIT(0) | BIT(1) | BIT(2) | BIT(3)
| BIT(4) | BIT(5) | BIT(4) | BIT(5)
| BIT(8) | BIT(9) | BIT(10) | BIT(11) | BIT(8) | BIT(9) | BIT(10) | BIT(11)
......
...@@ -251,9 +251,6 @@ static void zoom2_set_hs_extmute(int mute) ...@@ -251,9 +251,6 @@ static void zoom2_set_hs_extmute(int mute)
} }
static struct twl4030_gpio_platform_data zoom_gpio_data = { static struct twl4030_gpio_platform_data zoom_gpio_data = {
.gpio_base = OMAP_MAX_GPIO_LINES,
.irq_base = TWL4030_GPIO_IRQ_BASE,
.irq_end = TWL4030_GPIO_IRQ_END,
.setup = zoom_twl_gpio_setup, .setup = zoom_twl_gpio_setup,
}; };
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
static struct gpio_chip twl_gpiochip; static struct gpio_chip twl_gpiochip;
static int twl4030_gpio_base;
static int twl4030_gpio_irq_base; static int twl4030_gpio_irq_base;
/* genirq interfaces are not available to modules */ /* genirq interfaces are not available to modules */
...@@ -428,8 +429,6 @@ static int __devinit gpio_twl4030_probe(struct platform_device *pdev) ...@@ -428,8 +429,6 @@ static int __devinit gpio_twl4030_probe(struct platform_device *pdev)
twl_gpiochip.dev = &pdev->dev; twl_gpiochip.dev = &pdev->dev;
if (pdata) { if (pdata) {
twl_gpiochip.base = pdata->gpio_base;
/* /*
* NOTE: boards may waste power if they don't set pullups * NOTE: boards may waste power if they don't set pullups
* and pulldowns correctly ... default for non-ULPI pins is * and pulldowns correctly ... default for non-ULPI pins is
...@@ -461,15 +460,21 @@ static int __devinit gpio_twl4030_probe(struct platform_device *pdev) ...@@ -461,15 +460,21 @@ static int __devinit gpio_twl4030_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "could not register gpiochip, %d\n", ret); dev_err(&pdev->dev, "could not register gpiochip, %d\n", ret);
twl_gpiochip.ngpio = 0; twl_gpiochip.ngpio = 0;
gpio_twl4030_remove(pdev); gpio_twl4030_remove(pdev);
} else if (pdata && pdata->setup) { goto out;
}
twl4030_gpio_base = twl_gpiochip.base;
if (pdata && pdata->setup) {
int status; int status;
status = pdata->setup(&pdev->dev, status = pdata->setup(&pdev->dev,
pdata->gpio_base, TWL4030_GPIO_MAX); twl4030_gpio_base, TWL4030_GPIO_MAX);
if (status) if (status)
dev_dbg(&pdev->dev, "setup --> %d\n", status); dev_dbg(&pdev->dev, "setup --> %d\n", status);
} }
out:
return ret; return ret;
} }
...@@ -481,7 +486,7 @@ static int gpio_twl4030_remove(struct platform_device *pdev) ...@@ -481,7 +486,7 @@ static int gpio_twl4030_remove(struct platform_device *pdev)
if (pdata && pdata->teardown) { if (pdata && pdata->teardown) {
status = pdata->teardown(&pdev->dev, status = pdata->teardown(&pdev->dev,
pdata->gpio_base, TWL4030_GPIO_MAX); twl4030_gpio_base, TWL4030_GPIO_MAX);
if (status) { if (status) {
dev_dbg(&pdev->dev, "teardown --> %d\n", status); dev_dbg(&pdev->dev, "teardown --> %d\n", status);
return status; return status;
......
...@@ -561,9 +561,6 @@ struct twl4030_bci_platform_data { ...@@ -561,9 +561,6 @@ struct twl4030_bci_platform_data {
/* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */ /* TWL4030_GPIO_MAX (18) GPIOs, with interrupts */
struct twl4030_gpio_platform_data { struct twl4030_gpio_platform_data {
int gpio_base;
unsigned irq_base, irq_end;
/* package the two LED signals as output-only GPIOs? */ /* package the two LED signals as output-only GPIOs? */
bool use_leds; bool use_leds;
......
...@@ -194,7 +194,6 @@ struct twl6040_vibra_data { ...@@ -194,7 +194,6 @@ struct twl6040_vibra_data {
struct twl6040_platform_data { struct twl6040_platform_data {
int audpwron_gpio; /* audio power-on gpio */ int audpwron_gpio; /* audio power-on gpio */
unsigned int irq_base;
struct twl6040_codec_data *codec; struct twl6040_codec_data *codec;
struct twl6040_vibra_data *vibra; struct twl6040_vibra_data *vibra;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment