Lines Matching +full:- +full:- +full:-

4  * Copyright (C) 2006-2007 Andrzej Zaborowski  <balrog@zabor.org>
55 if (s->frame_done && (s->interrupts & 1)) { in omap_lcd_interrupts()
56 qemu_irq_raise(s->irq); in omap_lcd_interrupts()
60 if (s->palette_done && (s->interrupts & 2)) { in omap_lcd_interrupts()
61 qemu_irq_raise(s->irq); in omap_lcd_interrupts()
65 if (s->sync_error) { in omap_lcd_interrupts()
66 qemu_irq_raise(s->irq); in omap_lcd_interrupts()
70 qemu_irq_lower(s->irq); in omap_lcd_interrupts()
74 * 2-bit colour
108 width -= 4; in draw_line2_32()
113 * 4-bit colour
135 width -= 2; in draw_line4_32()
140 * 8-bit colour
156 } while (-- width != 0); in draw_line8_32()
160 * 12-bit colour
176 } while (-- width != 0); in draw_line12_32()
180 * 16-bit colour
196 } while (-- width != 0); in draw_line16_32()
208 if (!omap_lcd || omap_lcd->plm == 1 || !omap_lcd->enable) { in omap_update_display()
212 surface = qemu_console_surface(omap_lcd->con); in omap_update_display()
218 if (omap_lcd->plm != 2) { in omap_update_display()
220 omap_lcd->dma->phys_framebuffer[omap_lcd->dma->current_frame], in omap_update_display()
221 omap_lcd->palette, 0x200); in omap_update_display()
222 switch (omap_lcd->palette[0] >> 12 & 7) { in omap_update_display()
232 switch ((omap_lcd->palette[0] >> 12) & 7) { in omap_update_display()
249 if (!omap_lcd->tft) in omap_update_display()
262 width = omap_lcd->width; in omap_update_display()
264 omap_lcd->height != surface_height(surface)) { in omap_update_display()
265 qemu_console_resize(omap_lcd->con, in omap_update_display()
266 omap_lcd->width, omap_lcd->height); in omap_update_display()
267 surface = qemu_console_surface(omap_lcd->con); in omap_update_display()
268 omap_lcd->invalidate = 1; in omap_update_display()
271 if (omap_lcd->dma->current_frame == 0) in omap_update_display()
272 size = omap_lcd->dma->src_f1_bottom - omap_lcd->dma->src_f1_top; in omap_update_display()
274 size = omap_lcd->dma->src_f2_bottom - omap_lcd->dma->src_f2_top; in omap_update_display()
276 if (frame_offset + ((width * omap_lcd->height * bpp) >> 3) > size + 2) { in omap_update_display()
277 omap_lcd->sync_error = 1; in omap_update_display()
279 omap_lcd->enable = 0; in omap_update_display()
284 frame_base = omap_lcd->dma->phys_framebuffer[ in omap_update_display()
285 omap_lcd->dma->current_frame] + frame_offset; in omap_update_display()
286 omap_lcd->dma->condition |= 1 << omap_lcd->dma->current_frame; in omap_update_display()
287 if (omap_lcd->dma->interrupts & 1) in omap_update_display()
288 qemu_irq_raise(omap_lcd->dma->irq); in omap_update_display()
289 if (omap_lcd->dma->dual) in omap_update_display()
290 omap_lcd->dma->current_frame ^= 1; in omap_update_display()
297 height = omap_lcd->height; in omap_update_display()
298 if (omap_lcd->subpanel & (1 << 31)) { in omap_update_display()
299 if (omap_lcd->subpanel & (1 << 29)) in omap_update_display()
300 first = (omap_lcd->subpanel >> 16) & 0x3ff; in omap_update_display()
302 height = (omap_lcd->subpanel >> 16) & 0x3ff; in omap_update_display()
308 if (omap_lcd->invalidate) { in omap_update_display()
309 framebuffer_update_memory_section(&omap_lcd->fbsection, in omap_update_display()
310 omap_lcd->sysmem, frame_base, in omap_update_display()
314 framebuffer_update_display(surface, &omap_lcd->fbsection, in omap_update_display()
317 omap_lcd->invalidate, in omap_update_display()
318 draw_line, omap_lcd->palette, in omap_update_display()
322 dpy_gfx_update(omap_lcd->con, 0, first, width, last - first + 1); in omap_update_display()
324 omap_lcd->invalidate = 0; in omap_update_display()
329 omap_lcd->invalidate = 1; in omap_invalidate_display()
333 if (!s->enable) { in omap_lcd_update()
334 s->dma->current_frame = -1; in omap_lcd_update()
335 s->sync_error = 0; in omap_lcd_update()
336 if (s->plm != 1) in omap_lcd_update()
337 s->frame_done = 1; in omap_lcd_update()
342 if (s->dma->current_frame == -1) { in omap_lcd_update()
343 s->frame_done = 0; in omap_lcd_update()
344 s->palette_done = 0; in omap_lcd_update()
345 s->dma->current_frame = 0; in omap_lcd_update()
348 if (!s->dma->mpu->port[s->dma->src].addr_valid(s->dma->mpu, in omap_lcd_update()
349 s->dma->src_f1_top) || in omap_lcd_update()
350 !s->dma->mpu->port[ in omap_lcd_update()
351 s->dma->src].addr_valid(s->dma->mpu, in omap_lcd_update()
352 s->dma->src_f1_bottom) || in omap_lcd_update()
353 (s->dma->dual && in omap_lcd_update()
354 (!s->dma->mpu->port[ in omap_lcd_update()
355 s->dma->src].addr_valid(s->dma->mpu, in omap_lcd_update()
356 s->dma->src_f2_top) || in omap_lcd_update()
357 !s->dma->mpu->port[ in omap_lcd_update()
358 s->dma->src].addr_valid(s->dma->mpu, in omap_lcd_update()
359 s->dma->src_f2_bottom)))) { in omap_lcd_update()
360 s->dma->condition |= 1 << 2; in omap_lcd_update()
361 if (s->dma->interrupts & (1 << 1)) in omap_lcd_update()
362 qemu_irq_raise(s->dma->irq); in omap_lcd_update()
363 s->enable = 0; in omap_lcd_update()
367 s->dma->phys_framebuffer[0] = s->dma->src_f1_top; in omap_lcd_update()
368 s->dma->phys_framebuffer[1] = s->dma->src_f2_top; in omap_lcd_update()
370 if (s->plm != 2 && !s->palette_done) { in omap_lcd_update()
372 s->dma->phys_framebuffer[s->dma->current_frame], in omap_lcd_update()
373 s->palette, 0x200); in omap_lcd_update()
374 s->palette_done = 1; in omap_lcd_update()
385 return (s->tft << 23) | (s->plm << 20) | in omap_lcdc_read()
386 (s->tft << 7) | (s->interrupts << 3) | in omap_lcdc_read()
387 (s->mono << 1) | s->enable | s->ctrl | 0xfe000c34; in omap_lcdc_read()
390 return (s->timing[0] << 10) | (s->width - 1) | 0x0000000f; in omap_lcdc_read()
393 return (s->timing[1] << 10) | (s->height - 1); in omap_lcdc_read()
396 return s->timing[2] | 0xfc000000; in omap_lcdc_read()
399 return (s->palette_done << 6) | (s->sync_error << 2) | s->frame_done; in omap_lcdc_read()
402 return s->subpanel; in omap_lcdc_read()
418 s->plm = (value >> 20) & 3; in omap_lcdc_write()
419 s->tft = (value >> 7) & 1; in omap_lcdc_write()
420 s->interrupts = (value >> 3) & 3; in omap_lcdc_write()
421 s->mono = (value >> 1) & 1; in omap_lcdc_write()
422 s->ctrl = value & 0x01cff300; in omap_lcdc_write()
423 if (s->enable != (value & 1)) { in omap_lcdc_write()
424 s->enable = value & 1; in omap_lcdc_write()
430 s->timing[0] = value >> 10; in omap_lcdc_write()
431 s->width = (value & 0x3ff) + 1; in omap_lcdc_write()
435 s->timing[1] = value >> 10; in omap_lcdc_write()
436 s->height = (value & 0x3ff) + 1; in omap_lcdc_write()
440 s->timing[2] = value; in omap_lcdc_write()
447 s->subpanel = value & 0xa1ffffff; in omap_lcdc_write()
463 s->dma->current_frame = -1; in omap_lcdc_reset()
464 s->plm = 0; in omap_lcdc_reset()
465 s->tft = 0; in omap_lcdc_reset()
466 s->mono = 0; in omap_lcdc_reset()
467 s->enable = 0; in omap_lcdc_reset()
468 s->width = 0; in omap_lcdc_reset()
469 s->height = 0; in omap_lcdc_reset()
470 s->interrupts = 0; in omap_lcdc_reset()
471 s->timing[0] = 0; in omap_lcdc_reset()
472 s->timing[1] = 0; in omap_lcdc_reset()
473 s->timing[2] = 0; in omap_lcdc_reset()
474 s->subpanel = 0; in omap_lcdc_reset()
475 s->palette_done = 0; in omap_lcdc_reset()
476 s->frame_done = 0; in omap_lcdc_reset()
477 s->sync_error = 0; in omap_lcdc_reset()
478 s->invalidate = 1; in omap_lcdc_reset()
479 s->subpanel = 0; in omap_lcdc_reset()
480 s->ctrl = 0; in omap_lcdc_reset()
496 s->irq = irq; in omap_lcdc_init()
497 s->dma = dma; in omap_lcdc_init()
498 s->sysmem = sysmem; in omap_lcdc_init()
501 memory_region_init_io(&s->iomem, NULL, &omap_lcdc_ops, s, "omap.lcdc", 0x100); in omap_lcdc_init()
502 memory_region_add_subregion(sysmem, base, &s->iomem); in omap_lcdc_init()
504 s->con = graphic_console_init(NULL, 0, &omap_ops, s); in omap_lcdc_init()