aos/devices/omap/omap44xx_spinlock.dev
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

118 lines
5.2 KiB
Plaintext

/*
* Copyright (c) 2013 ETH Zurich. All rights reserved.
*
* This file is distributed under the terms in the attached LICENSE file.
* If you do not find this file, copies can be found by writing to:
* ETH Zurich D-INFK, CAB F.78, Universitaetstrasse 6, CH-8092 Zurich,
* Attn: Systems Group.
*/
/*
* omap44xx_spinlock.dev
*
* DESCRIPTION:
*
* NOTE: This file has been automatically generated based on the
* XML files extracted from the TI RDT v1.0.0.4p Tool.
* Download from here: http://www.ti.com/product/omap4460
* This means that the file might not be optimal in terms of naming
* conventions for constants and registers (duplicated
* namespaces in register and device name etc.).
* Also, because of the underlying structure from the original XML
* it's possible that some constants appear multiple times (if they
* have slightly different descriptions for example).
*
* You want to clean that up before using the files for the first time!
*/
device omap44xx_spinlock msbfirst ( addr base ) "" {
register revision ro addr(base, 0x0) "This register contains the IP revision code" type(uint32);
constants clockactivity_status width(1) "" {
CLOCKACTIVITY_0_r = 0 "Interface clock is not required by the module during IDLE mode and may be switched off.";
CLOCKACTIVITY_1_r = 1 "Interface clock is required by the module, even during idle mode.";
};
constants sidlemode_status width(2) "" {
SIDLEMODE_0_r = 0 "Force-idle. IDLE request is acknowledged unconditionally and immediately.";
SIDLEMODE_1_r = 1 "No-idle. IDLE request is never acknowledged.";
SIDLEMODE_2_r = 2 "Smart-idle. IDLE request acknowledgement is based on the internal module activity.";
SIDLEMODE_3_r = 3 "Reserved. Do not use.";
};
constants enwakeup_status width(1) "" {
ENWAKEUP_0_r = 0 "Wakeup generation is disabled.";
ENWAKEUP_1_r = 1 "Wakeup generation is enabled.";
};
constants softreset_status width(1) "" {
SOFTRESET_0_w = 0 "No action";
SOFTRESET_1_w = 1 "Start soft reset sequence";
};
constants autogating_status width(1) "" {
AUTOGATING_0_r = 0 "Interface clock is not gated when the L4-CFG interface is idle.";
AUTOGATING_1_r = 1 "Automatic internal interface clock gating strategy is applied, based on the L4-CFG interface activity.";
};
register sysconfig addr(base, 0x10) "This register controls the various parameters of the L4-CFG interface. Note that most fields are read-only." {
_ 23 mbz;
clockactivity 1 ro type(clockactivity_status) "Indicates whether the module requires the interface clock when in IDLE mode.";
_ 3 mbz;
sidlemode 2 ro type(sidlemode_status) "Slave interface power management (IDLE request/acknowledgement control).";
enwakeup 1 ro type(enwakeup_status) "Asynchronous wakeup gereration.";
softreset 1 wo type(softreset_status) "Module software reset.";
autogating 1 ro type(autogating_status) "Internal interface clock gating strategy.";
};
constants numlocks_status width(8) "" {
NUMLOCKS_1_r = 1 "This instance has 32 lock registers.";
NUMLOCKS_2_r = 2 "This instance has 64 lock registers.";
NUMLOCKS_4_r = 4 "This instance has 128 lock registers.";
NUMLOCKS_8_r = 8 "This instance has 256 lock registers.";
};
constants iu0_status width(1) "" {
IU0_0_r = 0 "All lock registers 0 31 are in the Not Taken state.";
IU0_1_r = 1 "At least one of the lock registers 0 31 is in the Taken state.";
};
constants resetdone_status width(1) "" {
RESETDONE_0_r = 0 "Reset in progress.";
RESETDONE_1_r = 1 "Reset is completed.";
};
register systatus addr(base, 0x14) "This register provides status information about this instance of the Spinlock module." {
numlocks 8 ro type(numlocks_status) "Number of lock registers implemeted.";
_ 8 mbz;
iu7 1 ro "In-Use flag 7. Reads always return 0.";
iu6 1 ro "In-Use flag 6. Reads always return 0.";
iu5 1 ro "In-Use flag 5. Reads always return 0.";
iu4 1 ro "In-Use flag 4. Reads always return 0.";
iu3 1 ro "In-Use flag 3. Reads always return 0.";
iu2 1 ro "In-Use flag 2. Reads always return 0.";
iu1 1 ro "In-Use flag 1. Reads always return 0.";
iu0 1 ro type(iu0_status) "In-Use flag 0, covering lock registers 0 - 31.";
_ 7 mbz;
resetdone 1 ro type(resetdone_status) "Reset done status.";
};
//XXX:commented out repeated values, since the compiler would complain about duplicate case values
constants taken_status width(1) "" {
TAKEN_0_r = 0 "Lock was previously Not Taken (free). The requester is granted the lock.";
// TAKEN_0_w = 0 "Set the lock to Not Taken (free).";
TAKEN_1_r = 1 "Lock was previously Taken. The requester is not granted the lock and must retry.";
// TAKEN_1_w = 1 "No update to the lock value.";
};
//changed individual register definitions to a regarray
regarray lock_reg_i addr(base, 0x800)[32] "This register contains the state of one lock."{
_ 31 mbz;
taken 1 rw type(taken_status) "Lock State";
};
};