Revision fefe54e3
b/hw/cirrus_vga.c | ||
---|---|---|
3183 | 3183 |
/* 4MB 64 bit memory config, always PCI */ |
3184 | 3184 |
s->sr[0x1F] = 0x2d; // MemClock |
3185 | 3185 |
s->gr[0x18] = 0x0f; // fastest memory configuration |
3186 |
#if 1 |
|
3187 | 3186 |
s->sr[0x0f] = 0x98; |
3188 | 3187 |
s->sr[0x17] = 0x20; |
3189 | 3188 |
s->sr[0x15] = 0x04; /* memory size, 3=2MB, 4=4MB */ |
3190 |
s->real_vram_size = 4096 * 1024; |
|
3191 |
#else |
|
3192 |
s->sr[0x0f] = 0x18; |
|
3193 |
s->sr[0x17] = 0x20; |
|
3194 |
s->sr[0x15] = 0x03; /* memory size, 3=2MB, 4=4MB */ |
|
3195 |
s->real_vram_size = 2048 * 1024; |
|
3196 |
#endif |
|
3197 | 3189 |
} else { |
3198 | 3190 |
s->sr[0x1F] = 0x22; // MemClock |
3199 | 3191 |
s->sr[0x0F] = CIRRUS_MEMSIZE_2M; |
3200 | 3192 |
s->sr[0x17] = s->bustype; |
3201 |
s->real_vram_size = 2048 * 1024; |
|
3202 | 3193 |
s->sr[0x15] = 0x03; /* memory size, 3=2MB, 4=4MB */ |
3203 | 3194 |
} |
3204 | 3195 |
s->cr[0x27] = s->device_id; |
... | ... | |
3209 | 3200 |
|
3210 | 3201 |
s->cirrus_hidden_dac_lockindex = 5; |
3211 | 3202 |
s->cirrus_hidden_dac_data = 0; |
3212 |
|
|
3213 |
/* I/O handler for LFB */ |
|
3214 |
s->cirrus_linear_io_addr = |
|
3215 |
cpu_register_io_memory(0, cirrus_linear_read, cirrus_linear_write, |
|
3216 |
s); |
|
3217 |
s->cirrus_linear_write = cpu_get_io_memory_write(s->cirrus_linear_io_addr); |
|
3218 |
|
|
3219 |
/* I/O handler for LFB */ |
|
3220 |
s->cirrus_linear_bitblt_io_addr = |
|
3221 |
cpu_register_io_memory(0, cirrus_linear_bitblt_read, cirrus_linear_bitblt_write, |
|
3222 |
s); |
|
3223 |
|
|
3224 |
/* I/O handler for memory-mapped I/O */ |
|
3225 |
s->cirrus_mmio_io_addr = |
|
3226 |
cpu_register_io_memory(0, cirrus_mmio_read, cirrus_mmio_write, s); |
|
3227 |
|
|
3228 |
/* XXX: s->vram_size must be a power of two */ |
|
3229 |
s->cirrus_addr_mask = s->real_vram_size - 1; |
|
3230 |
s->linear_mmio_mask = s->real_vram_size - 256; |
|
3231 |
|
|
3232 |
s->get_bpp = cirrus_get_bpp; |
|
3233 |
s->get_offsets = cirrus_get_offsets; |
|
3234 |
s->get_resolution = cirrus_get_resolution; |
|
3235 |
s->cursor_invalidate = cirrus_cursor_invalidate; |
|
3236 |
s->cursor_draw_line = cirrus_cursor_draw_line; |
|
3237 | 3203 |
} |
3238 | 3204 |
|
3239 | 3205 |
static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) |
... | ... | |
3288 | 3254 |
s->vga_io_memory); |
3289 | 3255 |
qemu_register_coalesced_mmio(isa_mem_base + 0x000a0000, 0x20000); |
3290 | 3256 |
|
3257 |
/* I/O handler for LFB */ |
|
3258 |
s->cirrus_linear_io_addr = |
|
3259 |
cpu_register_io_memory(0, cirrus_linear_read, cirrus_linear_write, s); |
|
3260 |
s->cirrus_linear_write = cpu_get_io_memory_write(s->cirrus_linear_io_addr); |
|
3261 |
|
|
3262 |
/* I/O handler for LFB */ |
|
3263 |
s->cirrus_linear_bitblt_io_addr = |
|
3264 |
cpu_register_io_memory(0, cirrus_linear_bitblt_read, |
|
3265 |
cirrus_linear_bitblt_write, s); |
|
3266 |
|
|
3267 |
/* I/O handler for memory-mapped I/O */ |
|
3268 |
s->cirrus_mmio_io_addr = |
|
3269 |
cpu_register_io_memory(0, cirrus_mmio_read, cirrus_mmio_write, s); |
|
3270 |
|
|
3271 |
s->real_vram_size = |
|
3272 |
(s->device_id == CIRRUS_ID_CLGD5446) ? 4096 * 1024 : 2048 * 1024; |
|
3273 |
|
|
3274 |
/* XXX: s->vram_size must be a power of two */ |
|
3275 |
s->cirrus_addr_mask = s->real_vram_size - 1; |
|
3276 |
s->linear_mmio_mask = s->real_vram_size - 256; |
|
3277 |
|
|
3278 |
s->get_bpp = cirrus_get_bpp; |
|
3279 |
s->get_offsets = cirrus_get_offsets; |
|
3280 |
s->get_resolution = cirrus_get_resolution; |
|
3281 |
s->cursor_invalidate = cirrus_cursor_invalidate; |
|
3282 |
s->cursor_draw_line = cirrus_cursor_draw_line; |
|
3283 |
|
|
3291 | 3284 |
qemu_register_reset(cirrus_reset, s); |
3292 | 3285 |
cirrus_reset(s); |
3293 | 3286 |
register_savevm("cirrus_vga", 0, 2, cirrus_vga_save, cirrus_vga_load, s); |
Also available in: Unified diff