From: Son Hyunjun Date: Fri, 9 Mar 2012 03:13:50 +0000 (+0900) Subject: modify overlay,brightness X-Git-Tag: TizenStudio_2.0_p2.3~1778 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c8550b5a44635c5bf9208ff65a11e1600bc4e517;p=sdk%2Femulator%2Fqemu.git modify overlay,brightness --- diff --git a/tizen/src/hw/maru_brightness.c b/tizen/src/hw/maru_brightness.c index 1cb95c1..8805c81 100644 --- a/tizen/src/hw/maru_brightness.c +++ b/tizen/src/hw/maru_brightness.c @@ -56,26 +56,29 @@ MULTI_DEBUG_CHANNEL(qemu, maru_brightness); typedef struct BrightnessState { PCIDevice dev; ram_addr_t vram_offset; - uint8_t* vram_ptr; - MemoryRegion mem_addr; MemoryRegion mmio_addr; } BrightnessState; enum { - BRIGHTNESS_LEVEL = 0x00, - BRIGHTNESS_OFF = 0x04, + BRIGHTNESS_LEVEL = 0x00, + BRIGHTNESS_OFF = 0x04, }; uint32_t brightness_level = 24; uint32_t brightness_off = 0; +uint8_t brightness_tbl[] = {20, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, + 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240}; + static uint64_t brightness_reg_read(void *opaque, target_phys_addr_t addr, unsigned size) { switch (addr & 0xFF) { case BRIGHTNESS_LEVEL: INFO("brightness_reg_read: brightness_level = %d\n", brightness_level); return brightness_level; - + case BRIGHTNESS_OFF: + INFO("brightness_reg_read: brightness_off = %d\n", brightness_off); + return brightness_off; default: ERR("wrong brightness register read - addr : %d\n", (int)addr); break; @@ -86,8 +89,6 @@ static uint64_t brightness_reg_read(void *opaque, target_phys_addr_t addr, unsig static void brightness_reg_write(void *opaque, target_phys_addr_t addr, uint64_t val, unsigned size) { - INFO("brightness_reg_write: addr = %d, val = %d\n", (int)addr, val); - #if BRIGHTNESS_MIN > 0 if (val < BRIGHTNESS_MIN || val > BRIGHTNESS_MAX) { #else @@ -99,9 +100,10 @@ static void brightness_reg_write(void *opaque, target_phys_addr_t addr, uint64_t switch (addr & 0xFF) { case BRIGHTNESS_LEVEL: brightness_level = val; + INFO("brightness_level : %lld\n", val); return; case BRIGHTNESS_OFF: - INFO("Brightness off : %d\n", val); + INFO("brightness_off : %lld\n", val); brightness_off = val; return; default: @@ -125,14 +127,7 @@ static int brightness_initfn(PCIDevice *dev) pci_config_set_device_id(pci_conf, PCI_DEVICE_ID_VIRTUAL_BRIGHTNESS); pci_config_set_class(pci_conf, PCI_CLASS_DISPLAY_OTHER); - memory_region_init_ram(&s->mem_addr, NULL, "brightness.ram", BRIGHTNESS_MEM_SIZE); memory_region_init_io (&s->mmio_addr, &brightness_mmio_ops, s, "brightness-mmio", BRIGHTNESS_REG_SIZE); - s->vram_ptr = memory_region_get_ram_ptr(&s->mem_addr); - - /* setup memory space */ - /* memory #0 device memory (overlay surface) */ - /* memory #1 memory-mapped I/O */ - pci_register_bar(&s->dev, 0, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->mem_addr); pci_register_bar(&s->dev, 1, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->mmio_addr); return 0; diff --git a/tizen/src/hw/maru_brightness.h b/tizen/src/hw/maru_brightness.h index 969d3a8..8ea9dd8 100644 --- a/tizen/src/hw/maru_brightness.h +++ b/tizen/src/hw/maru_brightness.h @@ -1,5 +1,5 @@ /* - * + * Maru brightness device for VGA * * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved. * @@ -33,6 +33,10 @@ #include "qemu-common.h" +extern uint32_t brightness_level; +extern uint32_t brightness_off; +extern uint8_t brightness_tbl[]; + int pci_get_brightness(void); int pci_maru_brightness_init(PCIBus *bus); diff --git a/tizen/src/hw/maru_overlay.c b/tizen/src/hw/maru_overlay.c index dd4d92c..5a79de1 100644 --- a/tizen/src/hw/maru_overlay.c +++ b/tizen/src/hw/maru_overlay.c @@ -39,6 +39,9 @@ #include "pci.h" #include "maru_pci_ids.h" #include "maru_overlay.h" +#include "debug_ch.h" + +MULTI_DEBUG_CHANNEL(qemu, maru_overlay); #define OVERLAY_MEM_SIZE (8192 * 1024) // 4MB(overlay0) + 4MB(overlay1) #define OVERLAY_REG_SIZE 256 @@ -51,6 +54,8 @@ enum { OVERLAY_SIZE = 0x08, // width and height }; +uint8_t* overlay_ptr; + uint8_t overlay0_power; uint16_t overlay0_left; uint16_t overlay0_top; @@ -65,15 +70,12 @@ uint16_t overlay1_height; typedef struct OverlayState { PCIDevice dev; - - ram_addr_t vram_offset; MemoryRegion mem_addr; MemoryRegion mmio_addr; } OverlayState; -uint8_t* overlay_ptr; static uint64_t overlay_reg_read(void *opaque, target_phys_addr_t addr, unsigned size) { @@ -97,7 +99,7 @@ static uint64_t overlay_reg_read(void *opaque, target_phys_addr_t addr, unsigned return overlay1_width | overlay1_height << 16; break; default: - fprintf(stderr, "wrong overlay register read - addr : %d\n", (int)addr); + ERR("wrong overlay register read - addr : %d\n", (int)addr); break; } @@ -138,7 +140,7 @@ static void overlay_reg_write(void *opaque, target_phys_addr_t addr, uint64_t va overlay1_height = val >> 16; break; default: - fprintf(stderr, "wrong overlay register write - addr : %d\n", (int)addr); + ERR("wrong overlay register write - addr : %d\n", (int)addr); break; } } @@ -166,8 +168,8 @@ static int overlay_initfn(PCIDevice *dev) /* setup memory space */ /* memory #0 device memory (overlay surface) */ /* memory #1 memory-mapped I/O */ - pci_register_bar(&s->dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->mem_addr); - pci_register_bar(&s->dev, 1, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->mmio_addr); + pci_register_bar(&s->dev, 0, PCI_BASE_ADDRESS_MEM_PREFETCH, &s->mem_addr); + pci_register_bar(&s->dev, 1, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->mmio_addr); return 0; } diff --git a/tizen/src/hw/maru_overlay.h b/tizen/src/hw/maru_overlay.h index e15bab3..8d75bc3 100644 --- a/tizen/src/hw/maru_overlay.h +++ b/tizen/src/hw/maru_overlay.h @@ -41,6 +41,19 @@ #include "qemu-common.h" +extern uint8_t* overlay_ptr; +extern uint8_t overlay0_power; +extern uint16_t overlay0_left; +extern uint16_t overlay0_top; +extern uint16_t overlay0_width; +extern uint16_t overlay0_height; + +extern uint8_t overlay1_power; +extern uint16_t overlay1_left; +extern uint16_t overlay1_top; +extern uint16_t overlay1_width; +extern uint16_t overlay1_height; + int pci_maru_overlay_init( PCIBus *bus ); #endif /* MARU_OVERLAY_H_ */ diff --git a/tizen/src/hw/maru_vga.c b/tizen/src/hw/maru_vga.c index f953040..5c8d1a1 100644 --- a/tizen/src/hw/maru_vga.c +++ b/tizen/src/hw/maru_vga.c @@ -36,6 +36,8 @@ #include "pixel_ops.h" #include "qemu-timer.h" #include "maru_vga_int.h" +#include "maru_brightness.h" +#include "maru_overlay.h" //#define DEBUG_VGA //#define DEBUG_VGA_MEM @@ -879,28 +881,6 @@ static void vga_sync_dirty_bitmap(VGACommonState *s) /* * graphic modes */ -#if defined (TARGET_I386) -extern uint8_t overlay0_power; -extern uint16_t overlay0_left; -extern uint16_t overlay0_top; -extern uint16_t overlay0_width; -extern uint16_t overlay0_height; - -extern uint8_t overlay1_power; -extern uint16_t overlay1_left; -extern uint16_t overlay1_top; -extern uint16_t overlay1_width; -extern uint16_t overlay1_height; - -extern uint8_t* overlay_ptr; // pointer in qemu space - -/* brightness level : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 */ -//static const uint8_t brightness_tbl[] = {20, 100, 120, 140, 160, 180, 200, 220, 230, 240}; -static const uint8_t brightness_tbl[] = {20, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, - 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240}; -extern uint32_t brightness_level; -extern uint32_t brightness_off; -#endif static void vga_draw_graphic(VGACommonState *s, int full_update) { int y1, y, update, linesize, y_start, double_scan, mask, depth; @@ -1092,7 +1072,7 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) int i; uint8_t *fb_sub; uint8_t *over_sub; - uint8_t *dst_sub; +// uint8_t *dst_sub; uint8_t alpha, c_alpha; uint32_t *dst; uint16_t overlay_bottom; @@ -1139,22 +1119,23 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) } } - if( brightness_off ) { - alpha = 0x00; - }else if (brightness_level < 24) { - alpha = brightness_tbl[brightness_level]; - } - - if ( brightness_off || brightness_level < 24 ) { - dst_sub = s->ds->surface->data + addr; - dst = (uint32_t*)(s->ds->surface->data + addr); - - for (i=0; i < disp_width; i++, dst_sub += 4, dst++) { - *dst = ((alpha * dst_sub[0]) >> 8) | - ((alpha * dst_sub[1]) & 0xFF00) | - (((alpha * dst_sub[2]) & 0xFF00) << 8); - } - } + //FIXME +// if( brightness_off ) { +// alpha = 0x00; +// }else if (brightness_level < 24) { +// alpha = brightness_tbl[brightness_level]; +// } +// +// if ( brightness_level < 24 ) { +// dst_sub = s->ds->surface->data + addr; +// dst = (uint32_t*)(s->ds->surface->data + addr); +// +// for (i=0; i < disp_width; i++, dst_sub += 4, dst++) { +// *dst = ((alpha * dst_sub[0]) >> 8) | +// ((alpha * dst_sub[1]) & 0xFF00) | +// (((alpha * dst_sub[2]) & 0xFF00) << 8); +// } +// } #endif /* TARGET_I386 */ } else {