Line 47... |
Line 47... |
{
|
{
|
fb_addr = addr;
|
fb_addr = addr;
|
}
|
}
|
|
|
/* Write a register */
|
/* Write a register */
|
void fb_write32 (oraddr_t addr, uint32_t value)
|
void fb_write32 (oraddr_t addr, uint32_t value, void *dat)
|
{
|
{
|
int a = (addr - config.fb.baseaddr);
|
int a = (addr - config.fb.baseaddr);
|
switch (a) {
|
switch (a) {
|
case FB_CTRL: fb_ctrl = value; break;
|
case FB_CTRL: fb_ctrl = value; break;
|
case FB_BUFADDR: change_buf_addr (value); break;
|
case FB_BUFADDR: change_buf_addr (value); break;
|
Line 70... |
Line 70... |
break;
|
break;
|
}
|
}
|
}
|
}
|
|
|
/* Read a register */
|
/* Read a register */
|
oraddr_t fb_read32 (oraddr_t addr)
|
oraddr_t fb_read32 (oraddr_t addr, void *dat)
|
{
|
{
|
int a = (addr - config.fb.baseaddr);
|
int a = (addr - config.fb.baseaddr);
|
switch (a) {
|
switch (a) {
|
case FB_CTRL:
|
case FB_CTRL:
|
return fb_ctrl & ~0xff000000| (fb_in_refresh ? 0x80000000 : 0) | ((unsigned long)(fb_refresh_count & 0x7f) << 24);
|
return fb_ctrl & ~0xff000000| (fb_in_refresh ? 0x80000000 : 0) | ((unsigned long)(fb_refresh_count & 0x7f) << 24);
|
Line 288... |
Line 288... |
|
|
for (i = 0; i < 256; i++)
|
for (i = 0; i < 256; i++)
|
pal[i] = (i << 16) | (i << 8) | (i << 0);
|
pal[i] = (i << 16) | (i << 8) | (i << 0);
|
|
|
if (config.fb.baseaddr)
|
if (config.fb.baseaddr)
|
register_memoryarea(config.fb.baseaddr, FB_PAL + 256*4, 4, 0, fb_read32, fb_write32);
|
register_memoryarea(config.fb.baseaddr, FB_PAL + 256*4, 4, 0, fb_read32, fb_write32, NULL);
|
SCHED_ADD(fb_job, 0, runtime.sim.cycles + config.fb.refresh_rate);
|
SCHED_ADD(fb_job, 0, runtime.sim.cycles + config.fb.refresh_rate);
|
}
|
}
|
}
|
}
|
|
|
/*-----------------------------------------------------[ FB configuration ]---*/
|
/*-----------------------------------------------------[ FB configuration ]---*/
|