diff options
author | Cyril Chemparathy <cyril@ti.com> | 2010-05-07 17:06:32 -0400 |
---|---|---|
committer | Kevin Hilman <khilman@deeprootsystems.com> | 2010-05-13 13:05:22 -0400 |
commit | b8d44293952e4b32b8595d924a377351f3cd1565 (patch) | |
tree | 9d5e44f154f18ce9a5496e9f9198fd03e57c8a73 /arch/arm/mach-davinci/gpio.c | |
parent | a6374f53405b719c767c6318fe052a6d8f32cd89 (diff) |
Davinci: gpio - use ioremap()
This patch modifies the gpio_base definition in davinci_soc_info to be a
physical address, which is then ioremap()ed by the gpio initialization
function.
Signed-off-by: Cyril Chemparathy <cyril@ti.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/gpio.c')
-rw-r--r-- | arch/arm/mach-davinci/gpio.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c index 2efb4468ebd0..bf0ff587e46a 100644 --- a/arch/arm/mach-davinci/gpio.c +++ b/arch/arm/mach-davinci/gpio.c | |||
@@ -37,22 +37,22 @@ struct davinci_gpio_regs { | |||
37 | container_of(chip, struct davinci_gpio_controller, chip) | 37 | container_of(chip, struct davinci_gpio_controller, chip) |
38 | 38 | ||
39 | static struct davinci_gpio_controller chips[DIV_ROUND_UP(DAVINCI_N_GPIO, 32)]; | 39 | static struct davinci_gpio_controller chips[DIV_ROUND_UP(DAVINCI_N_GPIO, 32)]; |
40 | static void __iomem *gpio_base; | ||
40 | 41 | ||
41 | static struct davinci_gpio_regs __iomem __init *gpio2regs(unsigned gpio) | 42 | static struct davinci_gpio_regs __iomem __init *gpio2regs(unsigned gpio) |
42 | { | 43 | { |
43 | void __iomem *ptr; | 44 | void __iomem *ptr; |
44 | void __iomem *base = davinci_soc_info.gpio_base; | ||
45 | 45 | ||
46 | if (gpio < 32 * 1) | 46 | if (gpio < 32 * 1) |
47 | ptr = base + 0x10; | 47 | ptr = gpio_base + 0x10; |
48 | else if (gpio < 32 * 2) | 48 | else if (gpio < 32 * 2) |
49 | ptr = base + 0x38; | 49 | ptr = gpio_base + 0x38; |
50 | else if (gpio < 32 * 3) | 50 | else if (gpio < 32 * 3) |
51 | ptr = base + 0x60; | 51 | ptr = gpio_base + 0x60; |
52 | else if (gpio < 32 * 4) | 52 | else if (gpio < 32 * 4) |
53 | ptr = base + 0x88; | 53 | ptr = gpio_base + 0x88; |
54 | else if (gpio < 32 * 5) | 54 | else if (gpio < 32 * 5) |
55 | ptr = base + 0xb0; | 55 | ptr = gpio_base + 0xb0; |
56 | else | 56 | else |
57 | ptr = NULL; | 57 | ptr = NULL; |
58 | return ptr; | 58 | return ptr; |
@@ -157,6 +157,10 @@ static int __init davinci_gpio_setup(void) | |||
157 | if (WARN_ON(DAVINCI_N_GPIO < ngpio)) | 157 | if (WARN_ON(DAVINCI_N_GPIO < ngpio)) |
158 | ngpio = DAVINCI_N_GPIO; | 158 | ngpio = DAVINCI_N_GPIO; |
159 | 159 | ||
160 | gpio_base = ioremap(soc_info->gpio_base, SZ_4K); | ||
161 | if (WARN_ON(!gpio_base)) | ||
162 | return -ENOMEM; | ||
163 | |||
160 | for (i = 0, base = 0; base < ngpio; i++, base += 32) { | 164 | for (i = 0, base = 0; base < ngpio; i++, base += 32) { |
161 | chips[i].chip.label = "DaVinci"; | 165 | chips[i].chip.label = "DaVinci"; |
162 | 166 | ||
@@ -445,7 +449,7 @@ done: | |||
445 | /* BINTEN -- per-bank interrupt enable. genirq would also let these | 449 | /* BINTEN -- per-bank interrupt enable. genirq would also let these |
446 | * bits be set/cleared dynamically. | 450 | * bits be set/cleared dynamically. |
447 | */ | 451 | */ |
448 | __raw_writel(binten, soc_info->gpio_base + 0x08); | 452 | __raw_writel(binten, gpio_base + 0x08); |
449 | 453 | ||
450 | printk(KERN_INFO "DaVinci: %d gpio irqs\n", irq - gpio_to_irq(0)); | 454 | printk(KERN_INFO "DaVinci: %d gpio irqs\n", irq - gpio_to_irq(0)); |
451 | 455 | ||