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

60 lines
1.7 KiB
Plaintext

/*
* Copyright (c) 2009, 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, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
*/
/*
* arm_icp_pit.dev
*
* DESCRIPTION: Timers for for integrator/cp
*
* This is derived from:
*
* This is derived from the Intel IXP2400/IXP2800 Network Processor
* Programmer's Reference Manual (November 2003), p. 352ff
*
*/
device ixp2800_icp_pit msbfirst ( addr base ) "IXP2800 Integrator timer"
{
// p.352, section 5.6.5.1
constants scale "Timer scaling factors" {
none = 0b00 "Use clock to trigger counter";
div16 = 0b01 "Use clock devided by 16 to trigger counter";
div256 = 0b10 "Use clock devided by 256 to trigger counter";
gpio = 0b11 "Use GPIO pins";
};
register CONTROL addr(base, 0x00) "Control register" {
_ 24 ro "Reserved";
ACT 1 rw "Activate timer";
_ 3 ro "Reserved";
PSS 2 rw type(scale) "Select the pre-scalar";
_ 2 ro "Reserved";
};
register LOADING addr(base, 0x10) "Load value for timer" {
CLV 32 rw "Counter initial value";
};
register STATUS addr(base, 0x20) "Current value for timer" {
CSV 32 rw "Current counter value";
};
register CLEAR addr(base, 0x30) "Interrupt clear" {
_ 31 ro "Reserved";
ICL 1 rw "Write one to clear interrupt";
};
register WATCHDOG addr(base, 0x40) "Enable timer 4 to be a watchdog timer" {
_ 31 ro "Reserved";
WDE 1 rw "Write one to enable watchdog";
};
};