OSDN Git Service

ARM: ep93xx: ts72xx: allow rtc-m48t86 to manage its own resources
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 15 Feb 2017 16:35:26 +0000 (09:35 -0700)
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>
Tue, 21 Feb 2017 17:18:52 +0000 (18:18 +0100)
The rtc-m48t86 driver can now handle its own resources and do the
read/write operations internally.

Pass the necessary resources to the driver and remove the m48t86_ops
platform data.

Remove the, then unnecessary, static remapping for the registers.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
arch/arm/mach-ep93xx/ts72xx.c
arch/arm/mach-ep93xx/ts72xx.h

index 3b39ea3..8a5b6f0 100644 (file)
@@ -16,7 +16,6 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
-#include <linux/platform_data/rtc-m48t86.h>
 #include <linux/mtd/nand.h>
 #include <linux/mtd/partitions.h>
 
@@ -45,16 +44,6 @@ static struct map_desc ts72xx_io_desc[] __initdata = {
                .pfn            = __phys_to_pfn(TS72XX_OPTIONS2_PHYS_BASE),
                .length         = TS72XX_OPTIONS2_SIZE,
                .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)TS72XX_RTC_INDEX_VIRT_BASE,
-               .pfn            = __phys_to_pfn(TS72XX_RTC_INDEX_PHYS_BASE),
-               .length         = TS72XX_RTC_INDEX_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = (unsigned long)TS72XX_RTC_DATA_VIRT_BASE,
-               .pfn            = __phys_to_pfn(TS72XX_RTC_DATA_PHYS_BASE),
-               .length         = TS72XX_RTC_DATA_SIZE,
-               .type           = MT_DEVICE,
        }
 };
 
@@ -179,31 +168,22 @@ static void __init ts72xx_register_flash(void)
        }
 }
 
+/*************************************************************************
+ * RTC M48T86
+ *************************************************************************/
+#define TS72XX_RTC_INDEX_PHYS_BASE     (EP93XX_CS1_PHYS_BASE + 0x00800000)
+#define TS72XX_RTC_DATA_PHYS_BASE      (EP93XX_CS1_PHYS_BASE + 0x01700000)
 
-static unsigned char ts72xx_rtc_readbyte(unsigned long addr)
-{
-       __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE);
-       return __raw_readb(TS72XX_RTC_DATA_VIRT_BASE);
-}
-
-static void ts72xx_rtc_writebyte(unsigned char value, unsigned long addr)
-{
-       __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE);
-       __raw_writeb(value, TS72XX_RTC_DATA_VIRT_BASE);
-}
-
-static struct m48t86_ops ts72xx_rtc_ops = {
-       .readbyte       = ts72xx_rtc_readbyte,
-       .writebyte      = ts72xx_rtc_writebyte,
+static struct resource ts72xx_rtc_resources[] = {
+       DEFINE_RES_MEM(TS72XX_RTC_INDEX_PHYS_BASE, 0x01),
+       DEFINE_RES_MEM(TS72XX_RTC_DATA_PHYS_BASE, 0x01),
 };
 
 static struct platform_device ts72xx_rtc_device = {
        .name           = "rtc-m48t86",
        .id             = -1,
-       .dev            = {
-               .platform_data  = &ts72xx_rtc_ops,
-       },
-       .num_resources  = 0,
+       .resource       = ts72xx_rtc_resources,
+       .num_resources  = ARRAY_SIZE(ts72xx_rtc_resources),
 };
 
 static struct resource ts72xx_wdt_resources[] = {
index 071feaa..2255ba2 100644 (file)
@@ -9,8 +9,6 @@
  * febff000    22000000        4K      model number register (bits 0-2)
  * febfe000    22400000        4K      options register
  * febfd000    22800000        4K      options register #2
- * febf9000    10800000        4K      TS-5620 RTC index register
- * febf8000    11700000        4K      TS-5620 RTC data register
  */
 
 #define TS72XX_MODEL_PHYS_BASE         0x22000000
 #define TS72XX_OPTIONS2_TS9420         0x04
 #define TS72XX_OPTIONS2_TS9420_BOOT    0x02
 
-
-#define TS72XX_RTC_INDEX_VIRT_BASE     IOMEM(0xfebf9000)
-#define TS72XX_RTC_INDEX_PHYS_BASE     0x10800000
-#define TS72XX_RTC_INDEX_SIZE          0x00001000
-
-#define TS72XX_RTC_DATA_VIRT_BASE      IOMEM(0xfebf8000)
-#define TS72XX_RTC_DATA_PHYS_BASE      0x11700000
-#define TS72XX_RTC_DATA_SIZE           0x00001000
-
 #define TS72XX_WDT_CONTROL_PHYS_BASE   0x23800000
 #define TS72XX_WDT_FEED_PHYS_BASE      0x23c00000