123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- =============================
- 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/ds1337.c
- ------------------------
- The driver is standard rtc. Simple conversion is possible.
- 35) drivers/rtc/isl1208.c
- -------------------------
- The driver is standard rtc. Simple conversion is possible.
- 36) drivers/rtc/max6900.c
- -------------------------
- The driver is standard rtc. Simple conversion is possible.
- 37) drivers/rtc/mc146818.c
- --------------------------
- The driver is standard rtc. Simple conversion is possible.
- 38) drivers/rtc/at91sam9_rtt.c
- ------------------------------
- The driver is standard rtc. Simple conversion is possible.
|