| ============================= |
| 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. |