Jump to content

Mainline:Broadcom Kona/BCM590xx/RTC: Difference between revisions

From dissonant.dev wiki
Created page with "The RTC is located at register 0xe0 on the BCM59054/BCM59056. == Time data == The RTC stores the time in the following format: {|class="wikitable bittable" !Offset !Purpose !Value |- |0 |Second |Current second, from 0 to 59. |- |1 |Minute |Current minute of the hour, from 0 to 59. |- |2 |Hour |Current hour of the day, from 0 to 23. |- |3 |Day of month |Day of month, starting from 0. |- |4 |Month |Number of the month. Sets itself to 0 on reset; 1 to 12 represent Januar..."
(No difference)

Revision as of 16:13, 13 August 2025

The RTC is located at register 0xe0 on the BCM59054/BCM59056.

Time data

The RTC stores the time in the following format:

Offset Purpose Value
0 Second Current second, from 0 to 59.
1 Minute Current minute of the hour, from 0 to 59.
2 Hour Current hour of the day, from 0 to 23.
3 Day of month Day of month, starting from 0.
4 Month Number of the month. Sets itself to 0 on reset; 1 to 12 represent January-December. ...or does it? The downstream driver would suggest so, but it seems weird. Investigate.
5 Year Amount of years since 2000 (0 = 2000, 1 = 2001, etc.)

Calibration

There are three calibration registers: CALIB1, CALIB2 and CALIB3.

Page Template:Todo/style.css has no content.

TODO TODO: Figure out how the calibration process works, this is just my initial idea

Calibration appears to be triggered based on a CP (communications processor) event; it receives a message from the CP and uses a value from it as the "ratio". The ratio value is then compared against RTCCAL_Ratio (taken from rtccal_data.nom_ratio, 8666667); if ratio > RTCCAL_Ratio, then direction is 1, otherwise it's 0.

The clk_val value is then calculated based on the difference between the new and old ratio (diff = abs(ratio - RTCCAL_Ratio)): clk_val = RTCCAL_Ratio / diff.

TODO - what is the ratio value?

CALIB1 (0xF4)

Name Bit Description
clk_val (1) 7:0 Lower 8 bits of the calibration offset.

CALIB2 (0xF5)

Name Bit Description
clk_val (2) 7:0 Upper 8 bits of the calibration offset.

CALIB3 (0xF6)

Name Bit Description
??? 7 Set to 1 during calibration.
direction 6
Unknown/reserved 5:0 Unknown/reserved.