# SPDX-License-Identifier: GPL-2.0-or-later

set RTTC_RTMR [expr {$AT91C_BASE_RTTC + 0x00}]
set RTTC_RTAR [expr {$AT91C_BASE_RTTC + 0x04}]
set RTTC_RTVR [expr {$AT91C_BASE_RTTC + 0x08}]
set RTTC_RTSR [expr {$AT91C_BASE_RTTC + 0x0c}]
global RTTC_RTMR
global RTTC_RTAR
global RTTC_RTVR
global RTTC_RTSR

proc show_RTTC_RTMR_helper { NAME ADDR VAL } {
    set rtpres [expr {$VAL & 0x0ffff}]
    global BIT16 BIT17
    if { $rtpres == 0 } {
	set rtpres 65536;
    }
    global AT91C_SLOWOSC_FREQ
    # Nasty hack, make this a float by tacking a .0 on the end
    # otherwise, jim makes the value an integer
    set f [expr "$AT91C_SLOWOSC_FREQ.0 / $rtpres.0"]
    echo [format "\tPrescale value: 0x%04x (%5d) => %f Hz" $rtpres $rtpres $f]
    if { $VAL & $BIT16 } {
	echo "\tBit16 -> Alarm IRQ Enabled"
    } else {
	echo "\tBit16 -> Alarm IRQ Disabled"
    }
    if { $VAL & $BIT17 } {
	echo "\tBit17 -> RTC Inc IRQ Enabled"
    } else {
	echo "\tBit17 -> RTC Inc IRQ Disabled"
    }
    # Bit 18 is write only.
}

proc show_RTTC_RTSR_helper { NAME ADDR VAL } {
    global BIT0 BIT1
    if { $VAL & $BIT0 } {
	echo "\tBit0 -> ALARM PENDING"
    } else {
	echo "\tBit0 -> alarm not pending"
    }
    if { $VAL & $BIT1 } {
	echo "\tBit0 -> RTINC PENDING"
    } else {
	echo "\tBit0 -> rtinc not pending"
    }
}

proc show_RTTC { } {

    show_mmr32_reg RTTC_RTMR
    show_mmr32_reg RTTC_RTAR
    show_mmr32_reg RTTC_RTVR
    show_mmr32_reg RTTC_RTSR
}
