DaVinci: DM365: Enable DaVinci RTC support for DM365 EVM
authorMiguel Aguilar <miguel.aguilar@ridgerun.com>
Thu, 5 Nov 2009 14:52:05 +0000 (08:52 -0600)
committerKevin Hilman <khilman@deeprootsystems.com>
Wed, 25 Nov 2009 18:21:38 +0000 (10:21 -0800)
The general structures are defined at DM365 SoC file and the specific
platform data structure for the EVM is defined at board file.

Signed-off-by: Miguel Aguilar <miguel.aguilar@ridgerun.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
arch/arm/mach-davinci/board-dm365-evm.c
arch/arm/mach-davinci/dm365.c
arch/arm/mach-davinci/include/mach/dm365.h
arch/arm/mach-davinci/include/mach/irqs.h

index 19678dc..289fe1b 100644 (file)
@@ -510,6 +510,7 @@ static __init void dm365_evm_init(void)
        evm_init_cpld();
 
        dm365_init_asp(&dm365_evm_snd_data);
+       dm365_init_rtc();
 
 #ifdef CONFIG_KEYBOARD_DAVINCI
        dm365_init_ks(&dm365evm_ks_data);
index c12bb00..2ec619e 100644 (file)
@@ -699,6 +699,7 @@ static u8 dm365_default_priorities[DAVINCI_N_AINTC_IRQ] = {
        [IRQ_I2C]                       = 3,
        [IRQ_UARTINT0]                  = 3,
        [IRQ_UARTINT1]                  = 3,
+       [IRQ_DM365_RTCINT]              = 3,
        [IRQ_DM365_SPIINT0_0]           = 3,
        [IRQ_DM365_SPIINT3_0]           = 3,
        [IRQ_DM365_GPIO0]               = 3,
@@ -834,6 +835,25 @@ static struct platform_device dm365_asp_device = {
        .resource       = dm365_asp_resources,
 };
 
+static struct resource dm365_rtc_resources[] = {
+       {
+               .start = DM365_RTC_BASE,
+               .end = DM365_RTC_BASE + SZ_1K - 1,
+               .flags = IORESOURCE_MEM,
+       },
+       {
+               .start = IRQ_DM365_RTCINT,
+               .flags = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device dm365_rtc_device = {
+       .name = "rtc_davinci",
+       .id = 0,
+       .num_resources = ARRAY_SIZE(dm365_rtc_resources),
+       .resource = dm365_rtc_resources,
+};
+
 static struct map_desc dm365_io_desc[] = {
        {
                .virtual        = IO_VIRT,
@@ -978,6 +998,12 @@ void __init dm365_init_ks(struct davinci_ks_platform_data *pdata)
        platform_device_register(&dm365_ks_device);
 }
 
+void __init dm365_init_rtc(void)
+{
+       davinci_cfg_reg(DM365_INT_PRTCSS);
+       platform_device_register(&dm365_rtc_device);
+}
+
 void __init dm365_init(void)
 {
        davinci_common_init(&davinci_soc_info_dm365);
index d8d988a..f1710a3 100644 (file)
 /* Base of key scan register bank */
 #define DM365_KEYSCAN_BASE             (0x01C69400)
 
+#define DM365_RTC_BASE                 (0x01C69000)
+
 void __init dm365_init(void);
 void __init dm365_init_asp(struct snd_platform_data *pdata);
 void __init dm365_init_ks(struct davinci_ks_platform_data *pdata);
+void __init dm365_init_rtc(void);
 
 #endif /* __ASM_ARCH_DM365_H */
index 3c918a7..354af71 100644 (file)
 #define IRQ_DM365_SDIOINT0     23
 #define IRQ_DM365_MMCINT1      27
 #define IRQ_DM365_PWMINT3      28
+#define IRQ_DM365_RTCINT       29
 #define IRQ_DM365_SDIOINT1     31
 #define IRQ_DM365_SPIINT0_0    42
 #define IRQ_DM365_SPIINT3_0    43