ARM: pl111/LCD framebuffer checkpointing fix

Fixed check pointing of the framebuffer.  Previously, the pixel size was not
considered in determining the size of the buffer to checkpoint.  This patch
checkpoints the entire framebuffer instead of the first quarter.
This commit is contained in:
Chander Sudanthi 2013-01-07 13:05:39 -05:00
parent c3551e82f7
commit 694a81e994
2 changed files with 4 additions and 3 deletions

View file

@ -76,7 +76,6 @@ Pl111::Pl111(const Params *p)
pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true); pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true);
const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
dmaBuffer = new uint8_t[buffer_size]; dmaBuffer = new uint8_t[buffer_size];
memset(lcdPalette, 0, sizeof(lcdPalette)); memset(lcdPalette, 0, sizeof(lcdPalette));
@ -581,7 +580,7 @@ Pl111::serialize(std::ostream &os)
SERIALIZE_SCALAR(width); SERIALIZE_SCALAR(width);
SERIALIZE_SCALAR(bytesPerPixel); SERIALIZE_SCALAR(bytesPerPixel);
SERIALIZE_ARRAY(dmaBuffer, height * width); SERIALIZE_ARRAY(dmaBuffer, buffer_size);
SERIALIZE_SCALAR(startTime); SERIALIZE_SCALAR(startTime);
SERIALIZE_SCALAR(startAddr); SERIALIZE_SCALAR(startAddr);
SERIALIZE_SCALAR(maxAddr); SERIALIZE_SCALAR(maxAddr);
@ -683,7 +682,7 @@ Pl111::unserialize(Checkpoint *cp, const std::string &section)
UNSERIALIZE_SCALAR(width); UNSERIALIZE_SCALAR(width);
UNSERIALIZE_SCALAR(bytesPerPixel); UNSERIALIZE_SCALAR(bytesPerPixel);
UNSERIALIZE_ARRAY(dmaBuffer, height * width); UNSERIALIZE_ARRAY(dmaBuffer, buffer_size);
UNSERIALIZE_SCALAR(startTime); UNSERIALIZE_SCALAR(startTime);
UNSERIALIZE_SCALAR(startAddr); UNSERIALIZE_SCALAR(startAddr);
UNSERIALIZE_SCALAR(maxAddr); UNSERIALIZE_SCALAR(maxAddr);

View file

@ -96,6 +96,8 @@ class Pl111: public AmbaDmaDevice
static const int dmaSize = 8; // 64 bits static const int dmaSize = 8; // 64 bits
static const int maxOutstandingDma = 16; // 16 deep FIFO of 64 bits static const int maxOutstandingDma = 16; // 16 deep FIFO of 64 bits
static const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
enum LcdMode { enum LcdMode {
bpp1 = 0, bpp1 = 0,
bpp2, bpp2,