diff options
| author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-11 05:57:21 -0500 |
|---|---|---|
| committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-17 04:01:40 -0500 |
| commit | e7c74b343091e0c6b7bb67c12f9f7fb345aa6a50 (patch) | |
| tree | 08b808dad98c3b098eaa49c6588b6b16d46d7bd8 | |
| parent | ab9cee4b2167f8bf01d85b537df5b9cbe342c780 (diff) | |
ARM: mx25: dynamically allocate imxdi_rtc devices
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
| -rw-r--r-- | arch/arm/mach-mx25/Kconfig | 2 | ||||
| -rw-r--r-- | arch/arm/mach-mx25/devices-imx25.h | 4 | ||||
| -rw-r--r-- | arch/arm/mach-mx25/devices.c | 19 | ||||
| -rw-r--r-- | arch/arm/mach-mx25/devices.h | 1 | ||||
| -rw-r--r-- | arch/arm/mach-mx25/mach-cpuimx25.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-mx25/mach-mx25_3ds.c | 2 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/devices/Kconfig | 3 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/devices/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/devices/platform-imxdi_rtc.c | 41 | ||||
| -rw-r--r-- | arch/arm/plat-mxc/include/mach/devices-common.h | 7 |
10 files changed, 60 insertions, 22 deletions
diff --git a/arch/arm/mach-mx25/Kconfig b/arch/arm/mach-mx25/Kconfig index e9d445649d4d..baa75fecf2ff 100644 --- a/arch/arm/mach-mx25/Kconfig +++ b/arch/arm/mach-mx25/Kconfig | |||
| @@ -5,6 +5,7 @@ comment "MX25 platforms:" | |||
| 5 | config MACH_MX25_3DS | 5 | config MACH_MX25_3DS |
| 6 | bool "Support MX25PDK (3DS) Platform" | 6 | bool "Support MX25PDK (3DS) Platform" |
| 7 | select IMX_HAVE_PLATFORM_ESDHC | 7 | select IMX_HAVE_PLATFORM_ESDHC |
| 8 | select IMX_HAVE_PLATFORM_IMXDI_RTC | ||
| 8 | select IMX_HAVE_PLATFORM_IMX_KEYPAD | 9 | select IMX_HAVE_PLATFORM_IMX_KEYPAD |
| 9 | select IMX_HAVE_PLATFORM_IMX_UART | 10 | select IMX_HAVE_PLATFORM_IMX_UART |
| 10 | select IMX_HAVE_PLATFORM_MXC_EHCI | 11 | select IMX_HAVE_PLATFORM_MXC_EHCI |
| @@ -15,6 +16,7 @@ config MACH_EUKREA_CPUIMX25 | |||
| 15 | select IMX_HAVE_PLATFORM_ESDHC | 16 | select IMX_HAVE_PLATFORM_ESDHC |
| 16 | select IMX_HAVE_PLATFORM_FLEXCAN | 17 | select IMX_HAVE_PLATFORM_FLEXCAN |
| 17 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | 18 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC |
| 19 | select IMX_HAVE_PLATFORM_IMXDI_RTC | ||
| 18 | select IMX_HAVE_PLATFORM_IMX_I2C | 20 | select IMX_HAVE_PLATFORM_IMX_I2C |
| 19 | select IMX_HAVE_PLATFORM_IMX_UART | 21 | select IMX_HAVE_PLATFORM_IMX_UART |
| 20 | select IMX_HAVE_PLATFORM_MXC_EHCI | 22 | select IMX_HAVE_PLATFORM_MXC_EHCI |
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h index a35123fef39f..a4980ecd3941 100644 --- a/arch/arm/mach-mx25/devices-imx25.h +++ b/arch/arm/mach-mx25/devices-imx25.h | |||
| @@ -23,6 +23,10 @@ extern const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst; | |||
| 23 | #define imx25_add_fsl_usb2_udc(pdata) \ | 23 | #define imx25_add_fsl_usb2_udc(pdata) \ |
| 24 | imx_add_fsl_usb2_udc(&imx25_fsl_usb2_udc_data, pdata) | 24 | imx_add_fsl_usb2_udc(&imx25_fsl_usb2_udc_data, pdata) |
| 25 | 25 | ||
| 26 | extern struct imx_imxdi_rtc_data imx25_imxdi_rtc_data __initconst; | ||
| 27 | #define imx25_add_imxdi_rtc(pdata) \ | ||
| 28 | imx_add_imxdi_rtc(&imx25_imxdi_rtc_data) | ||
| 29 | |||
| 26 | extern const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst; | 30 | extern const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst; |
| 27 | #define imx25_add_imx_i2c(id, pdata) \ | 31 | #define imx25_add_imx_i2c(id, pdata) \ |
| 28 | imx_add_imx_i2c(&imx25_imx_i2c_data[id], pdata) | 32 | imx_add_imx_i2c(&imx25_imx_i2c_data[id], pdata) |
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c index 052adbbb3de6..12743969222d 100644 --- a/arch/arm/mach-mx25/devices.c +++ b/arch/arm/mach-mx25/devices.c | |||
| @@ -22,25 +22,6 @@ | |||
| 22 | #include <mach/mx25.h> | 22 | #include <mach/mx25.h> |
| 23 | #include <mach/irqs.h> | 23 | #include <mach/irqs.h> |
| 24 | 24 | ||
| 25 | static struct resource mx25_rtc_resources[] = { | ||
| 26 | { | ||
| 27 | .start = MX25_DRYICE_BASE_ADDR, | ||
| 28 | .end = MX25_DRYICE_BASE_ADDR + 0x40, | ||
| 29 | .flags = IORESOURCE_MEM, | ||
| 30 | }, | ||
| 31 | { | ||
| 32 | .start = MX25_INT_DRYICE, | ||
| 33 | .flags = IORESOURCE_IRQ | ||
| 34 | }, | ||
| 35 | }; | ||
| 36 | |||
| 37 | struct platform_device mx25_rtc_device = { | ||
| 38 | .name = "imxdi_rtc", | ||
| 39 | .id = 0, | ||
| 40 | .num_resources = ARRAY_SIZE(mx25_rtc_resources), | ||
| 41 | .resource = mx25_rtc_resources, | ||
| 42 | }; | ||
| 43 | |||
| 44 | static struct resource mx25_fb_resources[] = { | 25 | static struct resource mx25_fb_resources[] = { |
| 45 | { | 26 | { |
| 46 | .start = MX25_LCDC_BASE_ADDR, | 27 | .start = MX25_LCDC_BASE_ADDR, |
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h index dd1fdeddb83b..f37f9a2d8ee0 100644 --- a/arch/arm/mach-mx25/devices.h +++ b/arch/arm/mach-mx25/devices.h | |||
| @@ -1,4 +1,3 @@ | |||
| 1 | extern struct platform_device mx25_rtc_device; | ||
| 2 | extern struct platform_device mx25_fb_device; | 1 | extern struct platform_device mx25_fb_device; |
| 3 | extern struct platform_device mxc_wdt; | 2 | extern struct platform_device mxc_wdt; |
| 4 | extern struct platform_device mx25_csi_device; | 3 | extern struct platform_device mx25_csi_device; |
diff --git a/arch/arm/mach-mx25/mach-cpuimx25.c b/arch/arm/mach-mx25/mach-cpuimx25.c index 2094bddb3e47..d1a04bafb432 100644 --- a/arch/arm/mach-mx25/mach-cpuimx25.c +++ b/arch/arm/mach-mx25/mach-cpuimx25.c | |||
| @@ -124,7 +124,7 @@ static void __init eukrea_cpuimx25_init(void) | |||
| 124 | 124 | ||
| 125 | imx25_add_imx_uart0(&uart_pdata); | 125 | imx25_add_imx_uart0(&uart_pdata); |
| 126 | imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); | 126 | imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); |
| 127 | mxc_register_device(&mx25_rtc_device, NULL); | 127 | imx25_add_imxdi_rtc(NULL); |
| 128 | imx25_add_fec(&mx25_fec_pdata); | 128 | imx25_add_fec(&mx25_fec_pdata); |
| 129 | 129 | ||
| 130 | i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, | 130 | i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, |
diff --git a/arch/arm/mach-mx25/mach-mx25_3ds.c b/arch/arm/mach-mx25/mach-mx25_3ds.c index 1d07cfbd8ff6..0566d3cb10cd 100644 --- a/arch/arm/mach-mx25/mach-mx25_3ds.c +++ b/arch/arm/mach-mx25/mach-mx25_3ds.c | |||
| @@ -194,7 +194,7 @@ static void __init mx25pdk_init(void) | |||
| 194 | imx25_add_imx_uart0(&uart_pdata); | 194 | imx25_add_imx_uart0(&uart_pdata); |
| 195 | imx25_add_mxc_ehci_hs(NULL); | 195 | imx25_add_mxc_ehci_hs(NULL); |
| 196 | imx25_add_mxc_nand(&mx25pdk_nand_board_info); | 196 | imx25_add_mxc_nand(&mx25pdk_nand_board_info); |
| 197 | mxc_register_device(&mx25_rtc_device, NULL); | 197 | imx25_add_imxdi_rtc(NULL); |
| 198 | mxc_register_device(&mx25_fb_device, &mx25pdk_fb_pdata); | 198 | mxc_register_device(&mx25_fb_device, &mx25pdk_fb_pdata); |
| 199 | mxc_register_device(&mxc_wdt, NULL); | 199 | mxc_register_device(&mxc_wdt, NULL); |
| 200 | 200 | ||
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig index a0be2df71a08..81d7a5456920 100644 --- a/arch/arm/plat-mxc/devices/Kconfig +++ b/arch/arm/plat-mxc/devices/Kconfig | |||
| @@ -22,6 +22,9 @@ config IMX_HAVE_PLATFORM_IMX21_HCD | |||
| 22 | config IMX_HAVE_PLATFORM_IMX2_WDT | 22 | config IMX_HAVE_PLATFORM_IMX2_WDT |
| 23 | bool | 23 | bool |
| 24 | 24 | ||
| 25 | config IMX_HAVE_PLATFORM_IMXDI_RTC | ||
| 26 | bool | ||
| 27 | |||
| 25 | config IMX_HAVE_PLATFORM_IMX_FB | 28 | config IMX_HAVE_PLATFORM_IMX_FB |
| 26 | bool | 29 | bool |
| 27 | 30 | ||
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile index 14b228e9d58a..f1c3767d29d1 100644 --- a/arch/arm/plat-mxc/devices/Makefile +++ b/arch/arm/plat-mxc/devices/Makefile | |||
| @@ -5,6 +5,7 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o | |||
| 5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS) += platform-gpio_keys.o | 5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS) += platform-gpio_keys.o |
| 6 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o | 6 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o |
| 7 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o | 7 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o |
| 8 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMXDI_RTC) += platform-imxdi_rtc.o | ||
| 8 | obj-y += platform-imx-dma.o | 9 | obj-y += platform-imx-dma.o |
| 9 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o | 10 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o |
| 10 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o | 11 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o |
diff --git a/arch/arm/plat-mxc/devices/platform-imxdi_rtc.c b/arch/arm/plat-mxc/devices/platform-imxdi_rtc.c new file mode 100644 index 000000000000..387f65032c1d --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imxdi_rtc.c | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2010 Pengutronix | ||
| 3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify it under | ||
| 6 | * the terms of the GNU General Public License version 2 as published by the | ||
| 7 | * Free Software Foundation. | ||
| 8 | */ | ||
| 9 | #include <asm/sizes.h> | ||
| 10 | #include <mach/hardware.h> | ||
| 11 | #include <mach/devices-common.h> | ||
| 12 | |||
| 13 | #define imx_imxdi_rtc_data_entry_single(soc) \ | ||
| 14 | { \ | ||
| 15 | .iobase = soc ## _DRYICE_BASE_ADDR, \ | ||
| 16 | .irq = soc ## _INT_DRYICE, \ | ||
| 17 | } | ||
| 18 | |||
| 19 | #ifdef CONFIG_ARCH_MX25 | ||
| 20 | const struct imx_imxdi_rtc_data imx25_imxdi_rtc_data __initconst = | ||
| 21 | imx_imxdi_rtc_data_entry_single(MX25); | ||
| 22 | #endif /* ifdef CONFIG_ARCH_MX25 */ | ||
| 23 | |||
| 24 | struct platform_device *__init imx_add_imxdi_rtc( | ||
| 25 | const struct imx_imxdi_rtc_data *data) | ||
| 26 | { | ||
| 27 | struct resource res[] = { | ||
| 28 | { | ||
| 29 | .start = data->iobase, | ||
| 30 | .end = data->iobase + SZ_16K, | ||
| 31 | .flags = IORESOURCE_MEM, | ||
| 32 | }, { | ||
| 33 | .start = data->irq, | ||
| 34 | .end = data->irq, | ||
| 35 | .flags = IORESOURCE_IRQ, | ||
| 36 | }, | ||
| 37 | }; | ||
| 38 | |||
| 39 | return imx_add_platform_device("imxdi_rtc", 0, | ||
| 40 | res, ARRAY_SIZE(res), NULL, 0); | ||
| 41 | } | ||
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h index 8482613e9727..4d4b28b54955 100644 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/plat-mxc/include/mach/devices-common.h | |||
| @@ -72,6 +72,13 @@ struct imx_imx2_wdt_data { | |||
| 72 | struct platform_device *__init imx_add_imx2_wdt( | 72 | struct platform_device *__init imx_add_imx2_wdt( |
| 73 | const struct imx_imx2_wdt_data *data); | 73 | const struct imx_imx2_wdt_data *data); |
| 74 | 74 | ||
| 75 | struct imx_imxdi_rtc_data { | ||
| 76 | resource_size_t iobase; | ||
| 77 | resource_size_t irq; | ||
| 78 | }; | ||
| 79 | struct platform_device *__init imx_add_imxdi_rtc( | ||
| 80 | const struct imx_imxdi_rtc_data *data); | ||
| 81 | |||
| 75 | #include <mach/imxfb.h> | 82 | #include <mach/imxfb.h> |
| 76 | struct imx_imx_fb_data { | 83 | struct imx_imx_fb_data { |
| 77 | resource_size_t iobase; | 84 | resource_size_t iobase; |
