diff options
| author | Tomas Hlavacek <tmshlvck@gmail.com> | 2012-08-08 01:42:29 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2012-09-02 18:00:02 +0200 | 
| commit | 0d9e59948a6694ac5f5bb08fd9537732b76bceb3 (patch) | |
| tree | 8138509769c55ef716a9526d90c3c816d098b1a2 | |
| parent | cbcc33e951fc3c16b167f0313823a2fdc295caf6 (diff) | |
| download | olio-uboot-2014.01-0d9e59948a6694ac5f5bb08fd9537732b76bceb3.tar.xz olio-uboot-2014.01-0d9e59948a6694ac5f5bb08fd9537732b76bceb3.zip | |
dm: RTC subsystem analysis added.
Signed-off-by: Tomas Hlavacek <tmshlvck@gmail.com>
| -rw-r--r-- | doc/driver-model/UDM-rtc.txt | 258 | 
1 files changed, 258 insertions, 0 deletions
| diff --git a/doc/driver-model/UDM-rtc.txt b/doc/driver-model/UDM-rtc.txt new file mode 100644 index 000000000..5d9fb333b --- /dev/null +++ b/doc/driver-model/UDM-rtc.txt @@ -0,0 +1,258 @@ +============================= +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. |