73#ifndef __DEV_ARM_HDLCD_HH__
74#define __DEV_ARM_HDLCD_HH__
97 HDLcd(
const HDLcdParams &
p);
175 static constexpr uint32_t INT_DMA_END = (1UL << 0);
198 Bitfield<0> vsync_polarity;
346 size_t line_length)
override
391 unsigned request_size,
unsigned max_pending,
392 size_t line_size, ssize_t line_pitch,
unsigned num_lines);
This is a base class for AMBA devices that have to respond to Device and Implementer ID calls.
Timing generator for a pixel-based display.
The ClockDomain provides clock to group of clocked objects bundled under the same clock domain.
Buffered DMA engine helper class.
size_t size() const
Get the amount of data stored in the FIFO.
void startFrame(Addr fb_base)
DmaEngine(HDLcd &_parent, size_t size, unsigned request_size, unsigned max_pending, size_t line_size, ssize_t line_pitch, unsigned num_lines)
void onIdle() override
Last response received callback.
void onEndOfBlock() override
End of block callback.
void unserialize(CheckpointIn &cp) override
Unserialize an object.
void serialize(CheckpointOut &cp) const override
Serialize an object.
PixelPump(HDLcd &p, ClockDomain &pxl_clk, unsigned pixel_chunk)
size_t nextLine(std::vector< Pixel >::iterator pixel_it, size_t line_length) override
Get the next line of pixels directly from memory.
bool nextPixel(Pixel &p) override
Get the next pixel from the scan line buffer.
void onVSyncBegin() override
First pixel clock of the first VSync line.
void onVSyncEnd() override
Callback on the first pixel of the line after the end VSync region (typically the first pixel of the ...
void onUnderrun(unsigned x, unsigned y) override
Buffer underrun occurred on a frame.
void onFrameDone() override
Finished displaying the visible region of a frame.
static constexpr size_t VERSION_RESETV
Reset value for Version register.
EventFunctionWrapper virtRefreshEvent
PolaritiesReg polarities
Polarities register.
Bitfield< 30, 5 > reserved_30_5
std::unique_ptr< ImgWriter > imgWriter
Helper to write out bitmaps.
void drainResume() override
Resume execution after a successful drain.
TimingReg v_sync
Vertical sync width register.
TimingReg v_data
Vertical data width register.
BusOptsReg bus_options
Bus options register.
Bitfield< 31, 12 > reserved_31_12
void writeReg(Addr offset, uint32_t value)
OutputStream * pic
Picture of what the current frame buffer looks like.
std::unique_ptr< DmaEngine > dmaEngine
uint32_t int_rawstat
Interrupt raw status register.
ColorSelectReg blue_select
Blue color select register.
static constexpr size_t BUS_OPTIONS_RESETV
Reset value for Bus_Options register.
Bitfield< 2 > dataen_polarity
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
const Addr pixelBufferSize
static constexpr size_t MAX_PIXEL_SIZE
Maximum number of bytes per pixel.
Bitfield< 31, 24 > reserved_31_24
void unserialize(CheckpointIn &cp) override
Unserialize an object.
gem5::HDLcd::HDLcdStats stats
const AddrRangeList addrRanges
std::vector< uint8_t > lineBuffer
void intMask(uint32_t mask)
Convenience function to update the interrupt mask.
Tick write(PacketPtr pkt) override
Pure virtual function that the device must implement.
Bitfield< 15, 8 > version_major
TimingReg v_back_porch
Vertical back porch width register.
uint32_t fb_line_length
Frame buffer Line length register.
Bitfield< 31, 5 > reserved_31_5
Bitfield< 31, 16 > product_id
const bool workaroundSwapRB
BitUnion32(VersionReg) Bitfield< 7
CommandReg command
Command register.
ColorSelectReg red_select
Red color select register.
void serialize(CheckpointOut &cp) const override
Serialize an object.
enums::ImageFormat imgFormat
Image Format.
Bitfield< 23, 16 > default_color
TimingReg h_data
Horizontal data width register.
Bitfield< 15, 12 > reserved_15_12
Bitfield< 7, 5 > reserved_7_5
Tick read(PacketPtr pkt) override
Pure virtual function that the device must implement.
void intRaise(uint32_t ints)
Convenience function to raise a new interrupt.
Bitfield< 4 > pxlclk_polarity
TimingReg h_sync
Horizontal sync width register.
size_t lineNext(std::vector< Pixel >::iterator pixel_it, size_t line_length)
PixelConverter conv
Cached pixel converter, set when the converter is enabled.
DisplayTimings displayTimings() const
TimingReg v_front_porch
Vertical front porch width register.
uint32_t fb_base
Frame buffer base address register.
Bitfield< 11, 8 > max_outstanding
TimingReg h_front_porch
Horizontal front porch width reg.
TimingReg h_back_porch
Horizontal back porch width reg.
const bool workaroundDmaLineCount
Bitfield< 1 > hsync_polarity
Bitfield< 3 > data_polarity
void virtRefresh()
Handler for fast frame refresh in KVM-mode.
int32_t fb_line_pitch
Frame buffer Line pitch register.
uint32_t readReg(Addr offset)
Bitfield< 31 > big_endian
uint32_t intStatus() const
Masked interrupt status register.
void setInterrupts(uint32_t ints, uint32_t mask)
Assign new interrupt values and update interrupt signals.
static constexpr size_t AXI_PORT_WIDTH
AXI port width in bytes.
static constexpr uint32_t INT_VSYNC
static constexpr size_t MAX_BURST_LEN
max number of beats delivered in one dma burst
const Tick virtRefreshRate
uint32_t int_mask
Interrupt mask register.
PixelConverter pixelConverter() const
RegisterOffset
ARM HDLcd register offsets.
void intClear(uint32_t ints)
Convenience function to clear interrupts.
PixelFormatReg pixel_format
Pixel format register.
Bitfield< 31, 1 > reserved_31_1
Bitfield< 4, 3 > bytes_per_pixel
ColorSelectReg green_select
Green color select register.
static constexpr uint32_t INT_UNDERRUN
static constexpr uint32_t INT_BUS_ERROR
HDLcd(const HDLcdParams &p)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Configurable RGB pixel converter.
static const PixelConverter rgba8888_le
Predefined 32-bit RGB (red in least significant bits, 8 bits/channel, little endian) conversion helpe...
This is a simple scalar statistic, like a counter.
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::ostream CheckpointOut
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
Overload hash function for BasicBlockRange type.
HDLcdStats(statistics::Group *parent)
statistics::Scalar underruns
Internal gem5 representation of a Pixel.