gem5  v20.1.0.0
watchdog_sp805.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Redistribution and use in source and binary forms, with or without
15  * modification, are permitted provided that the following conditions are
16  * met: redistributions of source code must retain the above copyright
17  * notice, this list of conditions and the following disclaimer;
18  * redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions and the following disclaimer in the
20  * documentation and/or other materials provided with the distribution;
21  * neither the name of the copyright holders nor the names of its
22  * contributors may be used to endorse or promote products derived from
23  * this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  */
37 
38 #ifndef __DEV_ARM_WATCHDOG_SP805_HH__
39 #define __DEV_ARM_WATCHDOG_SP805_HH__
40 
41 #include "dev/arm/amba_device.hh"
42 
43 class Sp805Params;
44 
52 class Sp805 : public AmbaIntDevice
53 {
54  public:
55  Sp805(Sp805Params const* params);
56 
57  void serialize(CheckpointOut &cp) const override;
58  void unserialize(CheckpointIn &cp) override;
59 
60  protected:
61  Tick read(PacketPtr pkt) override;
62  Tick write(PacketPtr pkt) override;
63 
64  private:
65  enum Offset : Addr {
66  WDOGLOAD = 0x000,
67  WDOGVALUE = 0x004,
68  WDOGCONTROL = 0x008,
69  WDOGINTCLR = 0x00c,
70  WDOGRIS = 0x010,
71  WDOGMIS = 0x014,
72  // 0x018 - 0xbfc -> Reserved
73  WDOGLOCK = 0xc00,
74  // 0xc04 - 0xefc -> Reserved
75  WDOGITCR = 0xf00,
76  WDOGITOP = 0xf04,
77  // 0xf08 - 0xfdc -> Reserved
78  // 0xfe0 - 0xfff -> CoreSight / Peripheral ID (AMBA ID)
79  };
80 
82  uint32_t timeoutInterval;
83 
86 
88  uint32_t persistedValue;
89 
91  bool enabled;
92 
95 
98 
101 
104 
106  uint32_t value(void) const;
107 
109  void timeoutExpired(void);
110 
112  void restartCounter(void);
113 
115  void stopCounter(void);
116 
121  void sendInt(void);
122 
124  void clearInt(void);
125 
127  static constexpr uint32_t WDOGLOCK_MAGIC = 0x1acce551;
128 };
129 
130 #endif // __DEV_ARM_WATCHDOG_SP805_HH__
Sp805::sendInt
void sendInt(void)
Raises an interrupt.
Definition: watchdog_sp805.cc:208
Sp805::timeoutStartTick
Tick timeoutStartTick
Timeout start tick to keep track of the counter value.
Definition: watchdog_sp805.hh:85
Sp805::WDOGCONTROL
@ WDOGCONTROL
Definition: watchdog_sp805.hh:68
Sp805::WDOGITOP
@ WDOGITOP
Definition: watchdog_sp805.hh:76
amba_device.hh
Sp805::stopCounter
void stopCounter(void)
Stops the counter when watchdog becomes disabled.
Definition: watchdog_sp805.cc:200
Sp805::write
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
Definition: watchdog_sp805.cc:110
Sp805::WDOGLOCK_MAGIC
static constexpr uint32_t WDOGLOCK_MAGIC
If written into WdogLock, registers are unlocked for writes.
Definition: watchdog_sp805.hh:127
Tick
uint64_t Tick
Tick count type.
Definition: types.hh:63
Sp805::restartCounter
void restartCounter(void)
Restarts the counter to the current timeout interval.
Definition: watchdog_sp805.cc:193
Sp805::WDOGLOCK
@ WDOGLOCK
Definition: watchdog_sp805.hh:73
Sp805::resetEnabled
bool resetEnabled
Indicates if reset behaviour is enabled when counter reaches 0.
Definition: watchdog_sp805.hh:94
Sp805::WDOGITCR
@ WDOGITCR
Definition: watchdog_sp805.hh:75
Sp805::value
uint32_t value(void) const
Returns the current counter value.
Definition: watchdog_sp805.cc:177
EventFunctionWrapper
Definition: eventq.hh:1101
Sp805::read
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
Definition: watchdog_sp805.cc:59
Sp805::WDOGRIS
@ WDOGRIS
Definition: watchdog_sp805.hh:70
Sp805::timeoutExpired
void timeoutExpired(void)
Triggered when value reaches 0.
Definition: watchdog_sp805.cc:185
Sp805::Sp805
Sp805(Sp805Params const *params)
Definition: watchdog_sp805.cc:45
cp
Definition: cprintf.cc:40
Sp805::unserialize
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition: watchdog_sp805.cc:244
Sp805::timeoutEvent
EventFunctionWrapper timeoutEvent
Timeout event, triggered when the counter value reaches 0.
Definition: watchdog_sp805.hh:103
Sp805::timeoutInterval
uint32_t timeoutInterval
Timeout interval (in cycles) as specified in WdogLoad.
Definition: watchdog_sp805.hh:82
AmbaIntDevice
Definition: amba_device.hh:86
Sp805::WDOGVALUE
@ WDOGVALUE
Definition: watchdog_sp805.hh:67
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
Sp805::Offset
Offset
Definition: watchdog_sp805.hh:65
BasicPioDevice::params
const Params * params() const
Definition: io_device.hh:167
Sp805::enabled
bool enabled
Indicates if watchdog (counter and interrupt) is enabled.
Definition: watchdog_sp805.hh:91
Sp805::clearInt
void clearInt(void)
Clears any active interrupts.
Definition: watchdog_sp805.cc:221
Sp805::WDOGMIS
@ WDOGMIS
Definition: watchdog_sp805.hh:71
Sp805::serialize
void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition: watchdog_sp805.cc:227
Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:257
Sp805::integrationTestEnabled
bool integrationTestEnabled
Indicates if integration test harness is enabled.
Definition: watchdog_sp805.hh:100
Sp805
Definition: watchdog_sp805.hh:52
CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:63
Sp805::persistedValue
uint32_t persistedValue
Value as persisted when the watchdog is stopped.
Definition: watchdog_sp805.hh:88
Sp805::WDOGINTCLR
@ WDOGINTCLR
Definition: watchdog_sp805.hh:69
CheckpointIn
Definition: serialize.hh:67
Sp805::WDOGLOAD
@ WDOGLOAD
Definition: watchdog_sp805.hh:66
Sp805::writeAccessEnabled
bool writeAccessEnabled
Indicates if write access to registers is enabled.
Definition: watchdog_sp805.hh:97

Generated on Wed Sep 30 2020 14:02:10 for gem5 by doxygen 1.8.17