Commit 7ba01f9728a9f1cd1a3e1e2d5206f76061182675

Authored by Lennert Buytenhek
Committed by Russell King
1 parent 41658132e6

[ARM] 3451/1: ep93xx: use the m48t86 rtc driver on the ts72xx platform

Patch from Lennert Buytenhek

Instantiate the recently merged m48t86 rtc driver in the ts72xx code.

Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

Showing 2 changed files with 50 additions and 0 deletions Side-by-side Diff

arch/arm/mach-ep93xx/ts72xx.c
... ... @@ -17,6 +17,8 @@
17 17 #include <linux/sched.h>
18 18 #include <linux/interrupt.h>
19 19 #include <linux/mtd/physmap.h>
  20 +#include <linux/platform_device.h>
  21 +#include <linux/m48t86.h>
20 22 #include <asm/io.h>
21 23 #include <asm/hardware.h>
22 24 #include <asm/mach-types.h>
... ... @@ -39,6 +41,16 @@
39 41 .pfn = __phys_to_pfn(TS72XX_OPTIONS2_PHYS_BASE),
40 42 .length = TS72XX_OPTIONS2_SIZE,
41 43 .type = MT_DEVICE,
  44 + }, {
  45 + .virtual = TS72XX_RTC_INDEX_VIRT_BASE,
  46 + .pfn = __phys_to_pfn(TS72XX_RTC_INDEX_PHYS_BASE),
  47 + .length = TS72XX_RTC_INDEX_SIZE,
  48 + .type = MT_DEVICE,
  49 + }, {
  50 + .virtual = TS72XX_RTC_DATA_VIRT_BASE,
  51 + .pfn = __phys_to_pfn(TS72XX_RTC_DATA_PHYS_BASE),
  52 + .length = TS72XX_RTC_DATA_SIZE,
  53 + .type = MT_DEVICE,
42 54 }
43 55 };
44 56  
45 57  
... ... @@ -99,11 +111,38 @@
99 111 }
100 112 }
101 113  
  114 +static unsigned char ts72xx_rtc_readb(unsigned long addr)
  115 +{
  116 + __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE);
  117 + return __raw_readb(TS72XX_RTC_DATA_VIRT_BASE);
  118 +}
  119 +
  120 +static void ts72xx_rtc_writeb(unsigned char value, unsigned long addr)
  121 +{
  122 + __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE);
  123 + __raw_writeb(value, TS72XX_RTC_DATA_VIRT_BASE);
  124 +}
  125 +
  126 +static struct m48t86_ops ts72xx_rtc_ops = {
  127 + .readb = ts72xx_rtc_readb,
  128 + .writeb = ts72xx_rtc_writeb,
  129 +};
  130 +
  131 +static struct platform_device ts72xx_rtc_device = {
  132 + .name = "rtc-m48t86",
  133 + .id = -1,
  134 + .dev = {
  135 + .platform_data = &ts72xx_rtc_ops,
  136 + },
  137 + .num_resources = 0,
  138 +};
  139 +
102 140 static void __init ts72xx_init_machine(void)
103 141 {
104 142 ep93xx_init_devices();
105 143 if (board_is_ts7200())
106 144 physmap_configure(TS72XX_NOR_PHYS_BASE, 0x01000000, 1, NULL);
  145 + platform_device_register(&ts72xx_rtc_device);
107 146 }
108 147  
109 148 MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
include/asm-arm/arch-ep93xx/ts72xx.h
... ... @@ -12,6 +12,8 @@
12 12 * febfc000 [67]0000000 4K NAND data register
13 13 * febfb000 [67]0400000 4K NAND control register
14 14 * febfa000 [67]0800000 4K NAND busy register
  15 + * febf9000 10800000 4K TS-5620 RTC index register
  16 + * febf8000 11700000 4K TS-5620 RTC data register
15 17 */
16 18  
17 19 #define TS72XX_MODEL_PHYS_BASE 0x22000000
... ... @@ -56,6 +58,15 @@
56 58 #define TS72XX_NAND2_BUSY_PHYS_BASE 0x70800000
57 59 #define TS72XX_NAND_BUSY_VIRT_BASE 0xfebfa000
58 60 #define TS72XX_NAND_BUSY_SIZE 0x00001000
  61 +
  62 +
  63 +#define TS72XX_RTC_INDEX_VIRT_BASE 0xfebf9000
  64 +#define TS72XX_RTC_INDEX_PHYS_BASE 0x10800000
  65 +#define TS72XX_RTC_INDEX_SIZE 0x00001000
  66 +
  67 +#define TS72XX_RTC_DATA_VIRT_BASE 0xfebf8000
  68 +#define TS72XX_RTC_DATA_PHYS_BASE 0x11700000
  69 +#define TS72XX_RTC_DATA_SIZE 0x00001000
59 70  
60 71  
61 72 #ifndef __ASSEMBLY__