118 lines
5.2 KiB
Plaintext
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";
|
|
};
|
|
|
|
};
|