blob: 8391f387236ce4821bbffcc73153cbed1ff5349c [file] [log] [blame]
=============================
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.