aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/mach-ux500/db5500-devices.c
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2010-03-15 13:54:49 +0530
committerJohn Rigby <john.rigby@linaro.org>2010-09-02 22:44:45 -0600
commitde601d55733ab12bb6eace42326695f7bcdc8ffe (patch)
tree4dd1eeba430fee15026ae7ba1445db6e0ed66680 /arch/arm/mach-ux500/db5500-devices.c
parentfec7f54996849ec74e5c57c6647883d54bea7d5a (diff)
ux500: switch to nomadik-gpio
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Diffstat (limited to 'arch/arm/mach-ux500/db5500-devices.c')
-rw-r--r--arch/arm/mach-ux500/db5500-devices.c255
1 files changed, 31 insertions, 224 deletions
diff --git a/arch/arm/mach-ux500/db5500-devices.c b/arch/arm/mach-ux500/db5500-devices.c
index 8ba9fb86cb4..6c943a0d0c7 100644
--- a/arch/arm/mach-ux500/db5500-devices.c
+++ b/arch/arm/mach-ux500/db5500-devices.c
@@ -13,228 +13,35 @@
#include <linux/gpio.h>
#include <linux/io.h>
-/* gpio alternate funtions on this platform */
-#define __GPIO_ALT(_fun, _start, _end, _cont, _type, _name) { \
- .altfun = _fun, \
- .start = _start, \
- .end = _end, \
- .cont = _cont, \
- .type = _type, \
- .dev_name = _name }
-
-static struct gpio_altfun_data gpio_altfun_table[] = {
- __GPIO_ALT(GPIO_ALT_I2C_4, 4, 5, 0, GPIO_ALTF_B, "i2c4"),
- __GPIO_ALT(GPIO_ALT_I2C_1, 16, 17, 0, GPIO_ALTF_B, "i2c1"),
- __GPIO_ALT(GPIO_ALT_I2C_2, 8, 9, 0, GPIO_ALTF_B, "i2c2"),
- __GPIO_ALT(GPIO_ALT_I2C_0, 147, 148, 0, GPIO_ALTF_A, "i2c0"),
- __GPIO_ALT(GPIO_ALT_I2C_3, 229, 230, 0, GPIO_ALTF_C, "i2c3"),
- __GPIO_ALT(GPIO_ALT_UART_2, 177, 180, 0, GPIO_ALTF_A, "uart2"),
- __GPIO_ALT(GPIO_ALT_SSP_0, 143, 146, 0, GPIO_ALTF_A, "ssp0"),
- __GPIO_ALT(GPIO_ALT_SSP_1, 139, 142, 0, GPIO_ALTF_A, "ssp1"),
- __GPIO_ALT(GPIO_ALT_USB_OTG, 256, 267, 0, GPIO_ALTF_A, "usb"),
- __GPIO_ALT(GPIO_ALT_UART_1, 200, 203, 0, GPIO_ALTF_A, "uart1"),
- __GPIO_ALT(GPIO_ALT_UART_0_NO_MODEM, 28, 29, 0, GPIO_ALTF_A, "uart0"),
- __GPIO_ALT(GPIO_ALT_MSP_0, 12, 15, 0, GPIO_ALTF_A, "msp0"),
- __GPIO_ALT(GPIO_ALT_MSP_1, 33, 36, 0, GPIO_ALTF_A, "msp1"),
- __GPIO_ALT(GPIO_ALT_MSP_2, 192, 196, 0, GPIO_ALTF_A, "msp2"),
- __GPIO_ALT(GPIO_ALT_HSIR, 219, 221, 0, GPIO_ALTF_A, "hsir"),
- __GPIO_ALT(GPIO_ALT_HSIT, 222, 224, 0, GPIO_ALTF_A, "hsit"),
- __GPIO_ALT(GPIO_ALT_EMMC, 197, 207, 0, GPIO_ALTF_A, "emmc"),
- __GPIO_ALT(GPIO_ALT_SDMMC, 18, 28, 0, GPIO_ALTF_A, "sdmmc"),
- __GPIO_ALT(GPIO_ALT_SDIO, 208, 214, 0, GPIO_ALTF_A, "sdio"),
- __GPIO_ALT(GPIO_ALT_TRACE, 70, 74, 0, GPIO_ALTF_C, "stm"),
- __GPIO_ALT(GPIO_ALT_SDMMC2, 128, 138, 0, GPIO_ALTF_A, "mmc2"),
-#ifndef CONFIG_FB_NOMADIK_MCDE_CHANNELB_DISPLAY_VUIB_WVGA
- __GPIO_ALT(GPIO_ALT_LCD_PANELB_ED, 78, 85, 1, GPIO_ALTF_A, "mcde tvout"),
- __GPIO_ALT(GPIO_ALT_LCD_PANELB_ED, 150, 150, 0, GPIO_ALTF_B, "mcde tvout"),
- __GPIO_ALT(GPIO_ALT_LCD_PANELB, 78, 81, 1, GPIO_ALTF_A, "mcde tvout"),
- __GPIO_ALT(GPIO_ALT_LCD_PANELB, 150, 150, 0, GPIO_ALTF_B, "mcde tvout"),
-#else
- __GPIO_ALT(GPIO_ALT_LCD_PANELB, 153, 171, 1, GPIO_ALTF_B, "mcde tvout"),
- __GPIO_ALT(GPIO_ALT_LCD_PANELB, 64, 77, 0, GPIO_ALTF_A, "mcde tvout"),
-#endif
- __GPIO_ALT(GPIO_ALT_LCD_PANELA, 68, 68, 0, GPIO_ALTF_A, "mcde tvout"),
- __GPIO_ALT(GPIO_ALT_MMIO_INIT_BOARD, 141, 142, 0, GPIO_ALTF_B, "mmio"),
- __GPIO_ALT(GPIO_ALT_MMIO_CAM_SET_I2C, 8, 9, 0, GPIO_ALTF_A, "mmio"),
- __GPIO_ALT(GPIO_ALT_MMIO_CAM_SET_EXT_CLK, 227, 228, 0, GPIO_ALTF_A, "mmio"),
-#ifdef CONFIG_TOUCHP_EXT_CLK
- __GPIO_ALT(GPIO_ALT_TP_SET_EXT_CLK, 228, 228, 0, GPIO_ALTF_A, "u8500_tp1"),
-#endif
-};
-
-static struct gpio_block_data gpio0_block_data[] = {
- {
- .irq = IRQ_GPIO0,
- .base_offset = 0x0,
- .blocks_per_irq = 1,
- .block_base = 0,
- .block_size = 32,
- },
- {
- .irq = IRQ_GPIO1,
- .base_offset = 0x080,
- .blocks_per_irq = 1,
- .block_base = 32,
- .block_size = 4,
- },
-};
-
-static struct gpio_platform_data gpio0_platform_data = {
- .gpio_data = gpio0_block_data,
- .gpio_block_size = ARRAY_SIZE(gpio0_block_data),
- .altfun_table = gpio_altfun_table,
- .altfun_table_size = ARRAY_SIZE(gpio_altfun_table)
-};
-
-struct amba_device u5500_gpio0_device = {
- .dev = {
- .bus_id = "gpioblock0",
- .platform_data = &gpio0_platform_data,
- },
- .res = {
- .start = U5500_GPIO0_BASE,
- .end = U5500_GPIO0_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
- .periphid = GPIO_PER_ID,
- .irq = {IRQ_GPIO0, NO_IRQ},
-};
-
-static struct gpio_block_data gpio1_block_data[] = {
- {
- .irq = IRQ_GPIO2,
- .base_offset = 0x0,
- .blocks_per_irq = 1,
- .block_base = 64,
- .block_size = 19,
- }
-};
-
-static struct gpio_platform_data gpio1_platform_data = {
- .gpio_data = gpio1_block_data,
- .gpio_block_size = ARRAY_SIZE(gpio1_block_data),
- .altfun_table = gpio_altfun_table,
- .altfun_table_size = ARRAY_SIZE(gpio_altfun_table)
-
-};
-
-struct amba_device u5500_gpio1_device = {
- .dev = {
- .bus_id = "gpioblock1",
- .platform_data = &gpio1_platform_data,
- },
- .res = {
- .start = U5500_GPIO1_BASE,
- .end = U5500_GPIO1_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
- .periphid = GPIO_PER_ID,
- .irq = {IRQ_GPIO2, NO_IRQ},
-};
-
-static struct gpio_block_data gpio2_block_data[] = {
- {
- .irq = IRQ_GPIO3,
- .base_offset = 0x0,
- .blocks_per_irq = 1,
- .block_base = 96,
- .block_size = 6,
- }
-};
-
-static struct gpio_platform_data gpio2_platform_data = {
- .gpio_data = gpio2_block_data,
- .gpio_block_size = ARRAY_SIZE(gpio2_block_data),
- .altfun_table = gpio_altfun_table,
- .altfun_table_size = ARRAY_SIZE(gpio_altfun_table)
-};
-
-struct amba_device u5500_gpio2_device = {
- .dev = {
- .bus_id = "gpioblock2",
- .platform_data = &gpio2_platform_data,
- },
- .res = {
- .start = U5500_GPIO2_BASE,
- .end = U5500_GPIO2_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
- .periphid = GPIO_PER_ID,
- .irq = {IRQ_GPIO3, NO_IRQ},
-};
-
-static struct gpio_block_data gpio3_block_data[] = {
- {
- .irq = IRQ_GPIO4,
- .base_offset = 0x0,
- .blocks_per_irq = 1,
- .block_base = 128,
- .block_size = 21,
- }
-};
-
-static struct gpio_platform_data gpio3_platform_data = {
- .gpio_data = gpio3_block_data,
- .gpio_block_size = ARRAY_SIZE(gpio3_block_data),
- .altfun_table = gpio_altfun_table,
- .altfun_table_size = ARRAY_SIZE(gpio_altfun_table)
-
-};
-
-struct amba_device u5500_gpio3_device = {
- .dev = {
- .bus_id = "gpioblock3",
- .platform_data = &gpio3_platform_data,
- },
- .res = {
- .start = U5500_GPIO3_BASE,
- .end = U5500_GPIO3_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
- .periphid = GPIO_PER_ID,
- .irq = {IRQ_GPIO4, NO_IRQ},
-};
-
-static struct gpio_block_data gpio4_block_data[] = {
- {
- .irq = IRQ_GPIO5,
- .base_offset = 0x0,
- .blocks_per_irq = 1,
- .block_base = 160,
- .block_size = 32,
- },
- {
- .irq = IRQ_GPIO6,
- .base_offset = 0x80,
- .blocks_per_irq = 1,
- .block_base = 192,
- .block_size = 32,
- },
- {
- .irq = IRQ_GPIO7,
- .base_offset = 0x100,
- .blocks_per_irq = 1,
- .block_base = 224,
- .block_size = 4,
- }
-};
-static struct gpio_platform_data gpio4_platform_data = {
- .gpio_data = gpio4_block_data,
- .gpio_block_size = ARRAY_SIZE(gpio4_block_data),
- .altfun_table = gpio_altfun_table,
- .altfun_table_size = ARRAY_SIZE(gpio_altfun_table)
-
-};
-struct amba_device u5500_gpio4_device = {
- .dev = {
- .bus_id = "gpioblock4",
- .platform_data = &gpio4_platform_data,
- },
- .res = {
- .start = U5500_GPIO4_BASE,
- .end = U5500_GPIO4_BASE + SZ_4K - 1,
- .flags = IORESOURCE_MEM,
- },
- .periphid = GPIO_PER_ID,
- .irq = {IRQ_GPIO5, NO_IRQ},
+static struct nmk_gpio_platform_data u5500_gpio_data[] = {
+ GPIO_DATA("GPIO-0-31", 0, 32),
+ GPIO_DATA("GPIO-32-63", 32, 4), /* 36..63 not routed to pin */
+ GPIO_DATA("GPIO-64-95", 64, 19), /* 83..95 not routed to pin */
+ GPIO_DATA("GPIO-96-127", 96, 6), /* 102..127 not routed to pin */
+ GPIO_DATA("GPIO-128-159", 128, 21), /* 149..159 not routed to pin */
+ GPIO_DATA("GPIO-160-191", 160, 32),
+ GPIO_DATA("GPIO-192-223", 192, 32),
+ GPIO_DATA("GPIO-224-255", 224, 4), /* 228..255 not routed to pin */
+};
+
+static struct resource u5500_gpio_resources[] = {
+ GPIO_RESOURCE(0),
+ GPIO_RESOURCE(1),
+ GPIO_RESOURCE(2),
+ GPIO_RESOURCE(3),
+ GPIO_RESOURCE(4),
+ GPIO_RESOURCE(5),
+ GPIO_RESOURCE(6),
+ GPIO_RESOURCE(7),
+};
+
+struct platform_device u5500_gpio_devs[] = {
+ GPIO_DEVICE(0),
+ GPIO_DEVICE(1),
+ GPIO_DEVICE(2),
+ GPIO_DEVICE(3),
+ GPIO_DEVICE(4),
+ GPIO_DEVICE(5),
+ GPIO_DEVICE(6),
+ GPIO_DEVICE(7),
};