Mainline:Broadcom Kona/BCM590xx/RTC: Difference between revisions
No edit summary |
|||
(12 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
The | {{hatnote|Downstream driver: {{downstream|baffinlite|drivers/rtc/rtc-bcmpmu59xxx.c}}}} | ||
The BCM590XX PMUs provide a real-time clock. | |||
== Time data == | == Time data == | ||
Line 8: | Line 10: | ||
!Offset | !Offset | ||
!Purpose | !Purpose | ||
!Mask | |||
!Value | !Value | ||
|- | |- | ||
|0 | |0 | ||
|Second | |Second (<code>SC</code>) | ||
|0x3F | |||
|Current second, from 0 to 59. | |Current second, from 0 to 59. | ||
|- | |- | ||
|1 | |1 | ||
|Minute | |Minute (<code>MN</code>) | ||
|0x3F | |||
|Current minute of the hour, from 0 to 59. | |Current minute of the hour, from 0 to 59. | ||
|- | |- | ||
|2 | |2 | ||
|Hour | |Hour (<code>HR</code>) | ||
|0x1F | |||
|Current hour of the day, from 0 to 23. | |Current hour of the day, from 0 to 23. | ||
|- | |- | ||
|3 | |3 | ||
|Day of | |Weekday (<code>WD</code>) | ||
| | |0x07 | ||
|Day of week, from 0 to 6. Appears to roll over whenever the day changes; {{speculation|the hardware does not enforce a specific start.}} Sets itself to 0 on reset. '''Not used in downstream.'''<br>{{speculation|The day of month sets itself to 0 on reset, which should be an invalid value, but would suggest that the range is 0 -> Sunday, 6 -> Monday, but there is no downstream code to confirm this.}} | |||
|- | |- | ||
|4 | |4 | ||
| | |Day of month (<code>DT</code>) | ||
| | |0x1F | ||
|Day of month, starting from 1. Sets itself to 0 on reset. | |||
|- | |- | ||
|5 | |5 | ||
|Year | |Month (<code>MT_WD</code>) | ||
|0x0F | |||
|Number of the month. 1 to 12 represent January-December. | |||
|- | |||
|6 | |||
|Year (<code>YR</code>) | |||
|0xFF | |||
|Amount of years since 2000 (0 = 2000, 1 = 2001, etc.) | |Amount of years since 2000 (0 = 2000, 1 = 2001, etc.) | ||
|} | |} | ||
This exact format is used for both the time and alarm registers. The masks are enforced by hardware - any bit written outside of the mask gets ignored. | |||
== Getting the time == | |||
On the BCM59054 and BCM59056, time registers start at 0xE0 and follow the format outlined above. | |||
There are interrupts for updates of each of the time values. | |||
The default reset value is <code>0 0 0 0 0 1 7</code> (2007-01-00 00:00:00, weekday 0). Notably, the day of month is invalid (0). | |||
If the date overflows (1 second after 2255-12-31 23:59:59), the clock returns to 2255-12-01 00:00:00. | |||
=== Adjustment IRQ === | |||
There is an RTCADJ IRQ that is supposed to fire when the RTC value is invalid (at least according to the comments of the downstream driver, and the downstream BCM59055 RTC driver). However, I haven't been able to get it to fire in my testing. | |||
== Alarm == | |||
On the BCM59054 and BCM59056, the alarm registers start at 0xE7. | |||
There is an interrupt that is triggered when the alarm is triggered. | |||
== Calibration == | == Calibration == |