gem5  v20.1.0.0
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
HDLcd Class Reference

#include <hdlcd.hh>

Inheritance diagram for HDLcd:
AmbaDmaDevice DmaDevice AmbaDevice PioDevice ClockedObject SimObject Clocked EventManager Serializable Drainable Stats::Group

Classes

class  DmaEngine
 
class  PixelPump
 

Public Member Functions

 HDLcd (const HDLcdParams *p)
 
 ~HDLcd ()
 
void regStats () override
 Callback to set stat parameters. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
void drainResume () override
 Resume execution after a successful drain. More...
 
Tick read (PacketPtr pkt) override
 Pure virtual function that the device must implement. More...
 
Tick write (PacketPtr pkt) override
 Pure virtual function that the device must implement. More...
 
AddrRangeList getAddrRanges () const override
 Every PIO device is obliged to provide an implementation that returns the address ranges the device responds to. More...
 
bool pxlNext (Pixel &p)
 
void pxlVSyncBegin ()
 
void pxlVSyncEnd ()
 
void pxlUnderrun ()
 
void pxlFrameDone ()
 
- Public Member Functions inherited from AmbaDmaDevice
 AmbaDmaDevice (const Params *p, Addr pio_size=0)
 
- Public Member Functions inherited from DmaDevice
 DmaDevice (const Params *p)
 
virtual ~DmaDevice ()
 
void dmaWrite (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0)
 
void dmaWrite (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0)
 
void dmaRead (Addr addr, int size, Event *event, uint8_t *data, uint32_t sid, uint32_t ssid, Tick delay=0)
 
void dmaRead (Addr addr, int size, Event *event, uint8_t *data, Tick delay=0)
 
bool dmaPending () const
 
void init () override
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
unsigned int cacheBlockSize () const
 
PortgetPort (const std::string &if_name, PortID idx=InvalidPortID) override
 Get a port with a given name and index. More...
 
- Public Member Functions inherited from PioDevice
 PioDevice (const Params *p)
 
virtual ~PioDevice ()
 
const Paramsparams () const
 
void init () override
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
PortgetPort (const std::string &if_name, PortID idx=InvalidPortID) override
 Get a port with a given name and index. More...
 
- Public Member Functions inherited from ClockedObject
 ClockedObject (const ClockedObjectParams *p)
 
const Paramsparams () const
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from SimObject
const Paramsparams () const
 
 SimObject (const Params *_params)
 
virtual ~SimObject ()
 
virtual const std::string name () const
 
virtual void loadState (CheckpointIn &cp)
 loadState() is called on each SimObject when restoring from a checkpoint. More...
 
virtual void initState ()
 initState() is called on each SimObject when not restoring from a checkpoint. More...
 
virtual void regProbePoints ()
 Register probe points for this object. More...
 
virtual void regProbeListeners ()
 Register probe listeners for this object. More...
 
ProbeManagergetProbeManager ()
 Get the probe manager for this object. More...
 
virtual void startup ()
 startup() is the final initialization call before simulation. More...
 
DrainState drain () override
 Provide a default implementation of the drain interface for objects that don't need draining. More...
 
virtual void memWriteback ()
 Write back dirty buffers to memory using functional writes. More...
 
virtual void memInvalidate ()
 Invalidate the contents of memory buffers. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Public Member Functions inherited from EventManager
EventQueueeventQueue () const
 
void schedule (Event &event, Tick when)
 
void deschedule (Event &event)
 
void reschedule (Event &event, Tick when, bool always=false)
 
void schedule (Event *event, Tick when)
 
void deschedule (Event *event)
 
void reschedule (Event *event, Tick when, bool always=false)
 
void wakeupEventQueue (Tick when=(Tick) -1)
 This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers. More...
 
void setCurTick (Tick newVal)
 
 EventManager (EventManager &em)
 Event manger manages events in the event queue. More...
 
 EventManager (EventManager *em)
 
 EventManager (EventQueue *eq)
 
- Public Member Functions inherited from Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 
- Public Member Functions inherited from Drainable
DrainState drainState () const
 Return the current drain state of an object. More...
 
virtual void notifyFork ()
 Notify a child process of a fork. More...
 
- Public Member Functions inherited from Stats::Group
 Group (Group *parent, const char *name=nullptr)
 Construct a new statistics group. More...
 
virtual ~Group ()
 
virtual void resetStats ()
 Callback to reset stats. More...
 
virtual void preDumpStats ()
 Callback before stats are dumped. More...
 
void addStat (Stats::Info *info)
 Register a stat with this group. More...
 
const std::map< std::string, Group * > & getStatGroups () const
 Get all child groups associated with this object. More...
 
const std::vector< Info * > & getStats () const
 Get all stats associated with this object. More...
 
void addStatGroup (const char *name, Group *block)
 Add a stat block as a child of this block. More...
 
const InforesolveStat (std::string name) const
 Resolve a stat by its name within this group. More...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 
- Public Member Functions inherited from Clocked
void updateClockPeriod ()
 Update the tick to the current tick. More...
 
Tick clockEdge (Cycles cycles=Cycles(0)) const
 Determine the tick when a cycle begins, by default the current one, but the argument also enables the caller to determine a future cycle. More...
 
Cycles curCycle () const
 Determine the current cycle, corresponding to a tick aligned to a clock edge. More...
 
Tick nextCycle () const
 Based on the clock of the object, determine the start tick of the first cycle that is at least one cycle in the future. More...
 
uint64_t frequency () const
 
Tick clockPeriod () const
 
double voltage () const
 
Cycles ticksToCycles (Tick t) const
 
Tick cyclesToTicks (Cycles c) const
 

Protected Types

enum  RegisterOffset {
  Version = 0x0000, Int_RawStat = 0x0010, Int_Clear = 0x0014, Int_Mask = 0x0018,
  Int_Status = 0x001C, Fb_Base = 0x0100, Fb_Line_Length = 0x0104, Fb_Line_Count = 0x0108,
  Fb_Line_Pitch = 0x010C, Bus_Options = 0x0110, V_Sync = 0x0200, V_Back_Porch = 0x0204,
  V_Data = 0x0208, V_Front_Porch = 0x020C, H_Sync = 0x0210, H_Back_Porch = 0x0214,
  H_Data = 0x0218, H_Front_Porch = 0x021C, Polarities = 0x0220, Command = 0x0230,
  Pixel_Format = 0x0240, Red_Select = 0x0244, Green_Select = 0x0248, Blue_Select = 0x024C
}
 ARM HDLcd register offsets. More...
 

Protected Member Functions

uint32_t readReg (Addr offset)
 
void writeReg (Addr offset, uint32_t value)
 
PixelConverter pixelConverter () const
 
DisplayTimings displayTimings () const
 
void createDmaEngine ()
 
void cmdEnable ()
 
void cmdDisable ()
 
bool enabled () const
 
void setInterrupts (uint32_t ints, uint32_t mask)
 Assign new interrupt values and update interrupt signals. More...
 
void intMask (uint32_t mask)
 Convenience function to update the interrupt mask. More...
 
void intRaise (uint32_t ints)
 Convenience function to raise a new interrupt. More...
 
void intClear (uint32_t ints)
 Convenience function to clear interrupts. More...
 
uint32_t intStatus () const
 Masked interrupt status register. More...
 
void virtRefresh ()
 Handler for fast frame refresh in KVM-mode. More...
 
- Protected Member Functions inherited from Drainable
 Drainable ()
 
virtual ~Drainable ()
 
void signalDrainDone () const
 Signal that an object is drained. More...
 
- Protected Member Functions inherited from Clocked
 Clocked (ClockDomain &clk_domain)
 Create a clocked object and set the clock domain based on the parameters. More...
 
 Clocked (Clocked &)=delete
 
Clockedoperator= (Clocked &)=delete
 
virtual ~Clocked ()
 Virtual destructor due to inheritance. More...
 
void resetClock () const
 Reset the object's clock using the current global tick value. More...
 
virtual void clockPeriodUpdated ()
 A hook subclasses can implement so they can do any extra work that's needed when the clock rate is changed. More...
 
- Protected Member Functions inherited from AmbaDevice
bool readId (PacketPtr pkt, uint64_t amba_id, Addr pio_addr)
 

Protected Attributes

VncInputvnc
 
const bool workaroundSwapRB
 
const bool workaroundDmaLineCount
 
const AddrRangeList addrRanges
 
const bool enableCapture
 
const Addr pixelBufferSize
 
const Tick virtRefreshRate
 
EventFunctionWrapper virtRefreshEvent
 
std::unique_ptr< ImgWriterimgWriter
 Helper to write out bitmaps. More...
 
Enums::ImageFormat imgFormat
 Image Format. More...
 
OutputStreampic
 Picture of what the current frame buffer looks like. More...
 
PixelConverter conv
 Cached pixel converter, set when the converter is enabled. More...
 
PixelPump pixelPump
 
std::unique_ptr< DmaEnginedmaEngine
 
struct {
   Stats::Scalar   underruns
 
stats
 
HDLCDRegisters

HDLCD register contents.

uint32_t int_rawstat
 Interrupt raw status register. More...
 
uint32_t int_mask
 Interrupt mask register. More...
 
uint32_t fb_base
 Frame buffer base address register. More...
 
uint32_t fb_line_length
 Frame buffer Line length register. More...
 
FbLineCountReg fb_line_count
 Frame buffer Line count register. More...
 
int32_t fb_line_pitch
 Frame buffer Line pitch register. More...
 
BusOptsReg bus_options
 Bus options register. More...
 
TimingReg v_sync
 Vertical sync width register. More...
 
TimingReg v_back_porch
 Vertical back porch width register. More...
 
TimingReg v_data
 Vertical data width register. More...
 
TimingReg v_front_porch
 Vertical front porch width register. More...
 
TimingReg h_sync
 Horizontal sync width register. More...
 
TimingReg h_back_porch
 Horizontal back porch width register. More...
 
TimingReg h_data
 Horizontal data width register. More...
 
TimingReg h_front_porch
 Horizontal front porch width reg. More...
 
PolaritiesReg polarities
 Polarities register. More...
 
CommandReg command
 Command register. More...
 
PixelFormatReg pixel_format
 Pixel format register. More...
 
ColorSelectReg red_select
 Red color select register. More...
 
ColorSelectReg green_select
 Green color select register. More...
 
ColorSelectReg blue_select
 Blue color select register. More...
 
- Protected Attributes inherited from AmbaDmaDevice
uint64_t ambaId
 
Addr pioAddr
 
Addr pioSize
 
Tick pioDelay
 
ArmInterruptPin *const interrupt
 
- Protected Attributes inherited from DmaDevice
DmaPort dmaPort
 
- Protected Attributes inherited from PioDevice
Systemsys
 
PioPort< PioDevicepioPort
 The pioPort that handles the requests for us and provides us requests that it sees. More...
 
- Protected Attributes inherited from SimObject
const SimObjectParams * _params
 Cached copy of the object parameters. More...
 
- Protected Attributes inherited from EventManager
EventQueueeventq
 A pointer to this object's event queue. More...
 

Static Protected Attributes

static constexpr size_t BUS_OPTIONS_RESETV = 0x408
 Reset value for Bus_Options register. More...
 
static constexpr size_t VERSION_RESETV = 0x1CDC0000
 Reset value for Version register. More...
 
static constexpr size_t AXI_PORT_WIDTH = 8
 AXI port width in bytes. More...
 
static constexpr size_t MAX_BURST_LEN = 16
 max number of beats delivered in one dma burst More...
 
static constexpr size_t MAX_PIXEL_SIZE = 4
 Maximum number of bytes per pixel. More...
 
- Static Protected Attributes inherited from AmbaDevice
static const int AMBA_PER_ID0 = 0xFE0
 
static const int AMBA_PER_ID1 = 0xFE4
 
static const int AMBA_PER_ID2 = 0xFE8
 
static const int AMBA_PER_ID3 = 0xFEC
 
static const int AMBA_CEL_ID0 = 0xFF0
 
static const int AMBA_CEL_ID1 = 0xFF4
 
static const int AMBA_CEL_ID2 = 0xFF8
 
static const int AMBA_CEL_ID3 = 0xFFC
 

RegisterFieldLayouts

Bit layout declarations for multi-field registers.

 version_minor
 
Bitfield< 15, 8 > version_major
 
Bitfield< 31, 16 > product_id
 
 fb_line_count
 
Bitfield< 31, 12 > reserved_31_12
 
 burst_len
 
Bitfield< 7, 5 > reserved_7_5
 
Bitfield< 11, 8 > max_outstanding
 
 val
 
Bitfield< 1 > hsync_polarity
 
Bitfield< 2 > dataen_polarity
 
Bitfield< 3 > data_polarity
 
Bitfield< 4 > pxlclk_polarity
 
Bitfield< 31, 5 > reserved_31_5
 
Bitfield< 31, 1 > reserved_31_1
 
 reserved_2_0
 
Bitfield< 4, 3 > bytes_per_pixel
 
Bitfield< 30, 5 > reserved_30_5
 
Bitfield< 31 > big_endian
 
 offset
 
Bitfield< 11, 8 > size
 
Bitfield< 15, 12 > reserved_15_12
 
Bitfield< 23, 16 > default_color
 
Bitfield< 31, 24 > reserved_31_24
 
static constexpr uint32_t INT_BUS_ERROR = (1UL << 1)
 
static constexpr uint32_t INT_VSYNC = (1UL << 2)
 
static constexpr uint32_t INT_UNDERRUN = (1UL << 3)
 
 BitUnion32 (VersionReg) Bitfield< 7
 
 EndBitUnion (VersionReg) static const expr uint32_t INT_DMA_END
 
 BitUnion32 (FbLineCountReg) Bitfield< 11
 
 EndBitUnion (FbLineCountReg) BitUnion32(BusOptsReg) Bitfield< 4
 
 EndBitUnion (BusOptsReg) BitUnion32(TimingReg) Bitfield< 11
 
 EndBitUnion (TimingReg) BitUnion32(PolaritiesReg) Bitfield< 0 > vsync_polarity
 
 EndBitUnion (PolaritiesReg) BitUnion32(CommandReg) Bitfield< 0 > enable
 
 EndBitUnion (CommandReg) BitUnion32(PixelFormatReg) Bitfield< 2
 
 EndBitUnion (PixelFormatReg) BitUnion32(ColorSelectReg) Bitfield< 4
 

Additional Inherited Members

- Public Types inherited from AmbaDmaDevice
typedef AmbaDmaDeviceParams Params
 
- Public Types inherited from DmaDevice
typedef DmaDeviceParams Params
 
- Public Types inherited from PioDevice
typedef PioDeviceParams Params
 
- Public Types inherited from ClockedObject
typedef ClockedObjectParams Params
 Parameters of ClockedObject. More...
 
- Public Types inherited from SimObject
typedef SimObjectParams Params
 
- Static Public Member Functions inherited from SimObject
static void serializeAll (CheckpointOut &cp)
 Serialize all SimObjects in the system. More...
 
static SimObjectfind (const char *name)
 Find the SimObject with the given name and return a pointer to it. More...
 
- Static Public Member Functions inherited from Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 Serializes all the SimObjects. More...
 
static void unserializeGlobals (CheckpointIn &cp)
 
- Public Attributes inherited from ClockedObject
PowerStatepowerState
 

Detailed Description

Definition at line 90 of file hdlcd.hh.

Member Enumeration Documentation

◆ RegisterOffset

enum HDLcd::RegisterOffset
protected

ARM HDLcd register offsets.

Enumerator
Version 
Int_RawStat 
Int_Clear 
Int_Mask 
Int_Status 
Fb_Base 
Fb_Line_Length 
Fb_Line_Count 
Fb_Line_Pitch 
Bus_Options 
V_Sync 
V_Back_Porch 
V_Data 
V_Front_Porch 
H_Sync 
H_Back_Porch 
H_Data 
H_Front_Porch 
Polarities 
Command 
Pixel_Format 
Red_Select 
Green_Select 
Blue_Select 

Definition at line 120 of file hdlcd.hh.

Constructor & Destructor Documentation

◆ HDLcd()

HDLcd::HDLcd ( const HDLcdParams *  p)

Definition at line 57 of file hdlcd.cc.

References AmbaDmaDevice::pioAddr, AmbaDmaDevice::pioSize, and RangeSize().

◆ ~HDLcd()

HDLcd::~HDLcd ( )

Definition at line 95 of file hdlcd.cc.

Member Function Documentation

◆ BitUnion32() [1/2]

HDLcd::BitUnion32 ( FbLineCountReg  )
protected

◆ BitUnion32() [2/2]

HDLcd::BitUnion32 ( VersionReg  )
protected

◆ cmdDisable()

void HDLcd::cmdDisable ( )
protected

◆ cmdEnable()

void HDLcd::cmdEnable ( )
protected

◆ createDmaEngine()

void HDLcd::createDmaEngine ( )
protected

◆ displayTimings()

DisplayTimings HDLcd::displayTimings ( ) const
protected

Definition at line 457 of file hdlcd.cc.

References h_back_porch, h_data, h_front_porch, h_sync, v_back_porch, v_data, v_front_porch, and v_sync.

Referenced by cmdEnable().

◆ drainResume()

void HDLcd::drainResume ( )
overridevirtual

Resume execution after a successful drain.

Reimplemented from Drainable.

Definition at line 202 of file hdlcd.cc.

References BasePixelPump::active(), System::bypassCaches(), cmdDisable(), cmdEnable(), Drainable::drainResume(), enabled(), pixelPump, VncInput::setDirty(), PioDevice::sys, and vnc.

◆ enabled()

bool HDLcd::enabled ( ) const
inlineprotected

Definition at line 266 of file hdlcd.hh.

References command.

Referenced by drainResume(), serialize(), and unserialize().

◆ EndBitUnion() [1/7]

HDLcd::EndBitUnion ( BusOptsReg  )
protected

◆ EndBitUnion() [2/7]

HDLcd::EndBitUnion ( CommandReg  )
protected

◆ EndBitUnion() [3/7]

HDLcd::EndBitUnion ( FbLineCountReg  )
protected

◆ EndBitUnion() [4/7]

HDLcd::EndBitUnion ( PixelFormatReg  )
protected

◆ EndBitUnion() [5/7]

HDLcd::EndBitUnion ( PolaritiesReg  )
protected

◆ EndBitUnion() [6/7]

HDLcd::EndBitUnion ( TimingReg  )
protected

◆ EndBitUnion() [7/7]

HDLcd::EndBitUnion ( VersionReg  ) const
protected

◆ getAddrRanges()

AddrRangeList HDLcd::getAddrRanges ( ) const
inlineoverridevirtual

Every PIO device is obliged to provide an implementation that returns the address ranges the device responds to.

Returns
a list of non-overlapping address ranges

Implements PioDevice.

Definition at line 107 of file hdlcd.hh.

References addrRanges.

◆ intClear()

void HDLcd::intClear ( uint32_t  ints)
inlineprotected

Convenience function to clear interrupts.

See also
setInterrupts
Parameters
intsSet of interrupts to clear

Definition at line 313 of file hdlcd.hh.

References int_mask, int_rawstat, and setInterrupts().

Referenced by writeReg().

◆ intMask()

void HDLcd::intMask ( uint32_t  mask)
inlineprotected

Convenience function to update the interrupt mask.

See also
setInterrupts
Parameters
maskNew interrupt mask

Definition at line 295 of file hdlcd.hh.

References int_rawstat, ArmISA::mask, and setInterrupts().

Referenced by writeReg().

◆ intRaise()

void HDLcd::intRaise ( uint32_t  ints)
inlineprotected

Convenience function to raise a new interrupt.

See also
setInterrupts
Parameters
intsSet of interrupts to raise

Definition at line 303 of file hdlcd.hh.

References int_mask, int_rawstat, and setInterrupts().

Referenced by pxlUnderrun(), pxlVSyncBegin(), and writeReg().

◆ intStatus()

uint32_t HDLcd::intStatus ( ) const
inlineprotected

Masked interrupt status register.

Definition at line 318 of file hdlcd.hh.

References int_mask, and int_rawstat.

Referenced by readReg(), and setInterrupts().

◆ pixelConverter()

PixelConverter HDLcd::pixelConverter ( ) const
protected

Definition at line 434 of file hdlcd.cc.

References blue_select, green_select, pixel_format, red_select, and workaroundSwapRB.

Referenced by cmdEnable(), and unserialize().

◆ pxlFrameDone()

void HDLcd::pxlFrameDone ( )

◆ pxlNext()

bool HDLcd::pxlNext ( Pixel p)

◆ pxlUnderrun()

void HDLcd::pxlUnderrun ( )

Definition at line 548 of file hdlcd.cc.

References dmaEngine, DPRINTF, INT_UNDERRUN, intRaise(), and stats.

Referenced by HDLcd::PixelPump::onUnderrun().

◆ pxlVSyncBegin()

void HDLcd::pxlVSyncBegin ( )

Definition at line 534 of file hdlcd.cc.

References DPRINTF, INT_VSYNC, and intRaise().

Referenced by HDLcd::PixelPump::onVSyncBegin().

◆ pxlVSyncEnd()

void HDLcd::pxlVSyncEnd ( )

Definition at line 541 of file hdlcd.cc.

References dmaEngine, DPRINTF, and fb_base.

Referenced by HDLcd::PixelPump::onVSyncEnd().

◆ read()

Tick HDLcd::read ( PacketPtr  pkt)
overridevirtual

Pure virtual function that the device must implement.

Called when a read command is recieved by the port.

Parameters
pktPacket describing this request
Returns
number of ticks it took to complete

Implements PioDevice.

Definition at line 235 of file hdlcd.cc.

References data, DPRINTF, Packet::getAddr(), Packet::getSize(), Packet::makeAtomicResponse(), panic_if, AmbaDmaDevice::pioAddr, AmbaDmaDevice::pioDelay, AmbaDmaDevice::pioSize, readReg(), and Packet::setLE().

◆ readReg()

uint32_t HDLcd::readReg ( Addr  offset)
protected

◆ regStats()

void HDLcd::regStats ( )
overridevirtual

Callback to set stat parameters.

This callback is typically used for complex stats (e.g., distributions) that need parameters in addition to a name and a description. Stat names and descriptions should typically be set from the constructor usingo from the constructor using the ADD_STAT macro.

Reimplemented from Stats::Group.

Definition at line 100 of file hdlcd.cc.

References SimObject::name(), Stats::nozero, Stats::Group::regStats(), and stats.

◆ serialize()

void HDLcd::serialize ( CheckpointOut cp) const
overridevirtual

Serialize an object.

Output an object's state into the current checkpoint section.

Parameters
cpCheckpoint state

Implements Serializable.

Definition at line 114 of file hdlcd.cc.

References blue_select, bus_options, command, dmaEngine, DPRINTF, enabled(), fb_base, fb_line_count, fb_line_length, fb_line_pitch, green_select, h_back_porch, h_data, h_front_porch, h_sync, int_mask, int_rawstat, pixel_format, pixelPump, polarities, red_select, SERIALIZE_OBJ, SERIALIZE_SCALAR, v_back_porch, v_data, v_front_porch, and v_sync.

◆ setInterrupts()

void HDLcd::setInterrupts ( uint32_t  ints,
uint32_t  mask 
)
protected

Assign new interrupt values and update interrupt signals.

A new interrupt is scheduled signalled if the set of unmasked interrupts goes empty to non-empty. Conversely, if the set of unmasked interrupts goes from non-empty to empty, the interrupt signal is cleared.

Parameters
intsNew raw interrupt status
maskNew interrupt mask

Definition at line 587 of file hdlcd.cc.

References ArmInterruptPin::clear(), int_mask, int_rawstat, AmbaDmaDevice::interrupt, intStatus(), ArmISA::mask, and ArmInterruptPin::raise().

Referenced by intClear(), intMask(), and intRaise().

◆ unserialize()

void HDLcd::unserialize ( CheckpointIn cp)
overridevirtual

◆ virtRefresh()

void HDLcd::virtRefresh ( )
protected

Handler for fast frame refresh in KVM-mode.

Definition at line 227 of file hdlcd.cc.

References curTick(), pixelPump, BasePixelPump::renderFrame(), EventManager::schedule(), virtRefreshEvent, and virtRefreshRate.

◆ write()

Tick HDLcd::write ( PacketPtr  pkt)
overridevirtual

Pure virtual function that the device must implement.

Called when a write command is recieved by the port.

Parameters
pktPacket describing this request
Returns
number of ticks it took to complete

Implements PioDevice.

Definition at line 255 of file hdlcd.cc.

References data, DPRINTF, Packet::getAddr(), Packet::getLE(), Packet::getSize(), Packet::makeAtomicResponse(), panic_if, AmbaDmaDevice::pioAddr, AmbaDmaDevice::pioDelay, AmbaDmaDevice::pioSize, and writeReg().

◆ writeReg()

void HDLcd::writeReg ( Addr  offset,
uint32_t  value 
)
protected

Member Data Documentation

◆ addrRanges

const AddrRangeList HDLcd::addrRanges
protected

Definition at line 113 of file hdlcd.hh.

Referenced by getAddrRanges().

◆ AXI_PORT_WIDTH

constexpr size_t HDLcd::AXI_PORT_WIDTH = 8
staticconstexprprotected

AXI port width in bytes.

Definition at line 154 of file hdlcd.hh.

Referenced by createDmaEngine().

◆ big_endian

Bitfield<31> HDLcd::big_endian
protected

Definition at line 213 of file hdlcd.hh.

◆ blue_select

ColorSelectReg HDLcd::blue_select
protected

Blue color select register.

Definition at line 252 of file hdlcd.hh.

Referenced by pixelConverter(), readReg(), serialize(), unserialize(), and writeReg().

◆ burst_len

HDLcd::burst_len
protected

Definition at line 184 of file hdlcd.hh.

Referenced by writeReg().

◆ bus_options

BusOptsReg HDLcd::bus_options
protected

Bus options register.

Definition at line 238 of file hdlcd.hh.

Referenced by createDmaEngine(), readReg(), serialize(), unserialize(), and writeReg().

◆ BUS_OPTIONS_RESETV

constexpr size_t HDLcd::BUS_OPTIONS_RESETV = 0x408
staticconstexprprotected

Reset value for Bus_Options register.

Definition at line 148 of file hdlcd.hh.

◆ bytes_per_pixel

Bitfield<4,3> HDLcd::bytes_per_pixel
protected

Definition at line 211 of file hdlcd.hh.

◆ command

CommandReg HDLcd::command
protected

Command register.

Definition at line 248 of file hdlcd.hh.

Referenced by enabled(), readReg(), serialize(), unserialize(), and writeReg().

◆ conv

PixelConverter HDLcd::conv
protected

Cached pixel converter, set when the converter is enabled.

Definition at line 359 of file hdlcd.hh.

Referenced by cmdEnable(), pxlNext(), and unserialize().

◆ data_polarity

Bitfield<3> HDLcd::data_polarity
protected

Definition at line 199 of file hdlcd.hh.

◆ dataen_polarity

Bitfield<2> HDLcd::dataen_polarity
protected

Definition at line 198 of file hdlcd.hh.

◆ default_color

Bitfield<23,16> HDLcd::default_color
protected

Definition at line 221 of file hdlcd.hh.

◆ dmaEngine

std::unique_ptr<DmaEngine> HDLcd::dmaEngine
protected

◆ enableCapture

const bool HDLcd::enableCapture
protected

Definition at line 114 of file hdlcd.hh.

Referenced by pxlFrameDone().

◆ fb_base

uint32_t HDLcd::fb_base
protected

Frame buffer base address register.

Definition at line 234 of file hdlcd.hh.

Referenced by pxlVSyncEnd(), readReg(), serialize(), HDLcd::DmaEngine::startFrame(), unserialize(), and writeReg().

◆ fb_line_count [1/2]

HDLcd::fb_line_count
protected

Definition at line 179 of file hdlcd.hh.

Referenced by createDmaEngine(), readReg(), serialize(), unserialize(), and writeReg().

◆ fb_line_count [2/2]

FbLineCountReg HDLcd::fb_line_count
protected

Frame buffer Line count register.

Definition at line 236 of file hdlcd.hh.

◆ fb_line_length

uint32_t HDLcd::fb_line_length
protected

Frame buffer Line length register.

Definition at line 235 of file hdlcd.hh.

Referenced by createDmaEngine(), readReg(), serialize(), unserialize(), and writeReg().

◆ fb_line_pitch

int32_t HDLcd::fb_line_pitch
protected

Frame buffer Line pitch register.

Definition at line 237 of file hdlcd.hh.

Referenced by createDmaEngine(), readReg(), serialize(), unserialize(), and writeReg().

◆ green_select

ColorSelectReg HDLcd::green_select
protected

Green color select register.

Definition at line 251 of file hdlcd.hh.

Referenced by pixelConverter(), readReg(), serialize(), unserialize(), and writeReg().

◆ h_back_porch

TimingReg HDLcd::h_back_porch
protected

Horizontal back porch width register.

Definition at line 244 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ h_data

TimingReg HDLcd::h_data
protected

Horizontal data width register.

Definition at line 245 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ h_front_porch

TimingReg HDLcd::h_front_porch
protected

Horizontal front porch width reg.

Definition at line 246 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ h_sync

TimingReg HDLcd::h_sync
protected

Horizontal sync width register.

Definition at line 243 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ hsync_polarity

Bitfield<1> HDLcd::hsync_polarity
protected

Definition at line 197 of file hdlcd.hh.

◆ imgFormat

Enums::ImageFormat HDLcd::imgFormat
protected

Image Format.

Definition at line 353 of file hdlcd.hh.

◆ imgWriter

std::unique_ptr<ImgWriter> HDLcd::imgWriter
protected

Helper to write out bitmaps.

Definition at line 350 of file hdlcd.hh.

Referenced by pxlFrameDone().

◆ INT_BUS_ERROR

constexpr uint32_t HDLcd::INT_BUS_ERROR = (1UL << 1)
staticconstexprprotected

Definition at line 174 of file hdlcd.hh.

◆ int_mask

uint32_t HDLcd::int_mask
protected

Interrupt mask register.

Definition at line 233 of file hdlcd.hh.

Referenced by intClear(), intRaise(), intStatus(), readReg(), serialize(), setInterrupts(), and unserialize().

◆ int_rawstat

uint32_t HDLcd::int_rawstat
protected

Interrupt raw status register.

Definition at line 232 of file hdlcd.hh.

Referenced by intClear(), intMask(), intRaise(), intStatus(), readReg(), serialize(), setInterrupts(), and unserialize().

◆ INT_UNDERRUN

constexpr uint32_t HDLcd::INT_UNDERRUN = (1UL << 3)
staticconstexprprotected

Definition at line 176 of file hdlcd.hh.

Referenced by pxlUnderrun().

◆ INT_VSYNC

constexpr uint32_t HDLcd::INT_VSYNC = (1UL << 2)
staticconstexprprotected

Definition at line 175 of file hdlcd.hh.

Referenced by pxlVSyncBegin().

◆ MAX_BURST_LEN

constexpr size_t HDLcd::MAX_BURST_LEN = 16
staticconstexprprotected

max number of beats delivered in one dma burst

Definition at line 157 of file hdlcd.hh.

Referenced by createDmaEngine().

◆ max_outstanding

Bitfield<11,8> HDLcd::max_outstanding
protected

Definition at line 186 of file hdlcd.hh.

Referenced by writeReg().

◆ MAX_PIXEL_SIZE

constexpr size_t HDLcd::MAX_PIXEL_SIZE = 4
staticconstexprprotected

Maximum number of bytes per pixel.

Definition at line 160 of file hdlcd.hh.

Referenced by pxlNext().

◆ offset

HDLcd::offset
protected

Definition at line 217 of file hdlcd.hh.

Referenced by readReg(), and writeReg().

◆ pic

OutputStream* HDLcd::pic
protected

Picture of what the current frame buffer looks like.

Definition at line 356 of file hdlcd.hh.

Referenced by pxlFrameDone().

◆ pixel_format

PixelFormatReg HDLcd::pixel_format
protected

Pixel format register.

Definition at line 249 of file hdlcd.hh.

Referenced by pixelConverter(), readReg(), serialize(), unserialize(), and writeReg().

◆ pixelBufferSize

const Addr HDLcd::pixelBufferSize
protected

Definition at line 115 of file hdlcd.hh.

Referenced by createDmaEngine().

◆ pixelPump

PixelPump HDLcd::pixelPump
protected

◆ polarities

PolaritiesReg HDLcd::polarities
protected

Polarities register.

Definition at line 247 of file hdlcd.hh.

Referenced by readReg(), serialize(), unserialize(), and writeReg().

◆ product_id

Bitfield<31,16> HDLcd::product_id
protected

Definition at line 170 of file hdlcd.hh.

◆ pxlclk_polarity

Bitfield<4> HDLcd::pxlclk_polarity
protected

Definition at line 200 of file hdlcd.hh.

◆ red_select

ColorSelectReg HDLcd::red_select
protected

Red color select register.

Definition at line 250 of file hdlcd.hh.

Referenced by pixelConverter(), readReg(), serialize(), unserialize(), and writeReg().

◆ reserved_15_12

Bitfield<15,12> HDLcd::reserved_15_12
protected

Definition at line 220 of file hdlcd.hh.

◆ reserved_2_0

HDLcd::reserved_2_0
protected

Definition at line 210 of file hdlcd.hh.

◆ reserved_30_5

Bitfield<30,5> HDLcd::reserved_30_5
protected

Definition at line 212 of file hdlcd.hh.

◆ reserved_31_1

Bitfield<31,1> HDLcd::reserved_31_1
protected

Definition at line 206 of file hdlcd.hh.

◆ reserved_31_12

Bitfield< 31, 12 > HDLcd::reserved_31_12
protected

Definition at line 180 of file hdlcd.hh.

◆ reserved_31_24

Bitfield<31,24> HDLcd::reserved_31_24
protected

Definition at line 222 of file hdlcd.hh.

◆ reserved_31_5

Bitfield<31,5> HDLcd::reserved_31_5
protected

Definition at line 201 of file hdlcd.hh.

◆ reserved_7_5

Bitfield< 7, 5 > HDLcd::reserved_7_5
protected

Definition at line 185 of file hdlcd.hh.

◆ size

Bitfield<11,8> HDLcd::size
protected

Definition at line 219 of file hdlcd.hh.

◆ stats

struct { ... } HDLcd::stats

Referenced by pxlUnderrun(), and regStats().

◆ underruns

Stats::Scalar HDLcd::underruns

Definition at line 395 of file hdlcd.hh.

◆ v_back_porch

TimingReg HDLcd::v_back_porch
protected

Vertical back porch width register.

Definition at line 240 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ v_data

TimingReg HDLcd::v_data
protected

Vertical data width register.

Definition at line 241 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ v_front_porch

TimingReg HDLcd::v_front_porch
protected

Vertical front porch width register.

Definition at line 242 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ v_sync

TimingReg HDLcd::v_sync
protected

Vertical sync width register.

Definition at line 239 of file hdlcd.hh.

Referenced by displayTimings(), readReg(), serialize(), unserialize(), and writeReg().

◆ val

HDLcd::val
protected

Definition at line 191 of file hdlcd.hh.

◆ version_major

Bitfield<15,8> HDLcd::version_major
protected

Definition at line 169 of file hdlcd.hh.

◆ version_minor

HDLcd::version_minor
protected

Definition at line 168 of file hdlcd.hh.

◆ VERSION_RESETV

constexpr size_t HDLcd::VERSION_RESETV = 0x1CDC0000
staticconstexprprotected

Reset value for Version register.

Definition at line 151 of file hdlcd.hh.

◆ virtRefreshEvent

EventFunctionWrapper HDLcd::virtRefreshEvent
protected

Definition at line 347 of file hdlcd.hh.

Referenced by cmdDisable(), cmdEnable(), and virtRefresh().

◆ virtRefreshRate

const Tick HDLcd::virtRefreshRate
protected

Definition at line 116 of file hdlcd.hh.

Referenced by virtRefresh().

◆ vnc

VncInput* HDLcd::vnc
protected

Definition at line 110 of file hdlcd.hh.

Referenced by drainResume(), and pxlFrameDone().

◆ workaroundDmaLineCount

const bool HDLcd::workaroundDmaLineCount
protected

Definition at line 112 of file hdlcd.hh.

Referenced by createDmaEngine().

◆ workaroundSwapRB

const bool HDLcd::workaroundSwapRB
protected

Definition at line 111 of file hdlcd.hh.

Referenced by pixelConverter().


The documentation for this class was generated from the following files:

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