=============================
RTC device subsystem analysis
=============================

Tomas Hlavacek <tmshlvck@gmail.com>
2012-03-10

I) Overview
-----------

U-Boot currently implements one common API for RTC devices. The interface
is defined in include/rtc.h and comprises of functions and structures:

    struct rtc_time {
        int tm_sec;
        int tm_min;
        int tm_hour;
        int tm_mday;
        int tm_mon;
        int tm_year;
        int tm_wday;
        int tm_yday;
        int tm_isdst;
    };

    int rtc_get (struct rtc_time *);
    int rtc_set (struct rtc_time *);
    void rtc_reset (void);

The functions are implemented by a proper device driver in drivers/rtc
directory and the driver to be compiled in is selected in a Makefile.
Drivers are mutually exclusive.

Drivers depends on date code in drivers/rtc/date.c and naturally on board
specific data.

II) Approach
------------

  1) New API
  ----------
  In the UDM each rtc driver would register itself by a function

    int rtc_device_register(struct instance *i,
                            struct rtc_device_ops *o);

  The structure being defined as follows:

    struct rtc_device_ops {
        int  (*get_time)(struct instance *i, struct rtc_time *t);
        int  (*set_time)(struct instance *i, struct rtc_time *t);
        int  (*reset)(struct instance *i);
    };


  2) Conversion thougths
  ----------------------
  U-Boot RTC drivers exports the same functions and therefore the conversion
  of the drivers is straight-forward. There is no initialization needed.


III) Analysis of in-tree drivers
--------------------------------

  1) drivers/rtc/rv3029.c
  -----------------------
  The driver is standard rtc. Simple conversion is possible.


  2) drivers/rtc/s3c24x0_rtc.c
  ----------------------------
  The driver is standard rtc. Simple conversion is possible.


  3) drivers/rtc/pt7c4338.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  4) drivers/rtc/mvrtc.c
  ----------------------
  The driver is standard rtc. Simple conversion is possible.


  5) drivers/rtc/ftrtc010.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  6) drivers/rtc/mpc5xxx.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  7) drivers/rtc/ds164x.c
  -----------------------
  The driver is standard rtc. Simple conversion is possible.


  8) drivers/rtc/rs5c372.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  9) drivers/rtc/m41t94.c
  -----------------------
  The driver is standard rtc. Simple conversion is possible.


  10) drivers/rtc/mc13xxx-rtc.c
  -----------------------------
  The driver is standard rtc. Simple conversion is possible.


  11) drivers/rtc/mcfrtc.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  12) drivers/rtc/davinci.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  13) drivers/rtc/rx8025.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  14) drivers/rtc/bfin_rtc.c
  --------------------------
  The driver is standard rtc. Simple conversion is possible.


  15) drivers/rtc/m41t62.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  16) drivers/rtc/ds1306.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  17) drivers/rtc/mpc8xx.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  18) drivers/rtc/ds3231.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  19) drivers/rtc/ds12887.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  20) drivers/rtc/ds1302.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  21) drivers/rtc/ds1374.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  22) drivers/rtc/ds174x.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  23) drivers/rtc/m41t60.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  24) drivers/rtc/m48t35ax.c
  --------------------------
  The driver is standard rtc. Simple conversion is possible.


  25) drivers/rtc/pl031.c
  -----------------------
  The driver is standard rtc. Simple conversion is possible.


  26) drivers/rtc/x1205.c
  -----------------------
  The driver is standard rtc. Simple conversion is possible.


  27) drivers/rtc/m41t11.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  28) drivers/rtc/pcf8563.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  29) drivers/rtc/mk48t59.c
  -------------------------
  Macros needs cleanup. Besides that the driver is standard rtc.
  Simple conversion is possible.


  30) drivers/rtc/mxsrtc.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  31) drivers/rtc/ds1307.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  32) drivers/rtc/ds1556.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  33) drivers/rtc/rtc4543.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  34) drivers/rtc/s3c44b0_rtc.c
  -----------------------------
  The driver is standard rtc. Simple conversion is possible.


  35) drivers/rtc/ds1337.c
  ------------------------
  The driver is standard rtc. Simple conversion is possible.


  36) drivers/rtc/isl1208.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  37) drivers/rtc/max6900.c
  -------------------------
  The driver is standard rtc. Simple conversion is possible.


  38) drivers/rtc/mc146818.c
  --------------------------
  The driver is standard rtc. Simple conversion is possible.


  39) drivers/rtc/at91sam9_rtt.c
  ------------------------------
  The driver is standard rtc. Simple conversion is possible.
