From: Jean Guyader Date: Fri, 11 Dec 2009 12:07:12 +0000 (+0000) Subject: vga-edid: Add new vga value to advertise the resolution to the vgabios. X-Git-Url: http://xenbits.xen.org/gitweb?a=commitdiff_plain;h=8b17885934ddf62e849b92378699860547d03dad;p=xenclient%2Fioemu-pq.git vga-edid: Add new vga value to advertise the resolution to the vgabios. --- diff --git a/master/series b/master/series index 78dabca..9b12de0 100644 --- a/master/series +++ b/master/series @@ -31,3 +31,4 @@ pv_driver_throttling_disabled dont-carp-about-a-missing-battery vga-clear-hw-fb-on-resize hide-msi-capability-for-igfx +vga-edid diff --git a/master/vga-edid b/master/vga-edid new file mode 100644 index 0000000..4bd1255 --- /dev/null +++ b/master/vga-edid @@ -0,0 +1,66 @@ +diff --git a/hw/vga.c b/hw/vga.c +index cd0ce41..41771d1 100644 +--- a/hw/vga.c ++++ b/hw/vga.c +@@ -543,6 +543,31 @@ static uint32_t vbe_ioport_read_index(void *opaque, uint32_t addr) + return val; + } + ++static void vbe_get_host_res(int *h, int *v) ++{ ++ char *tmp = xenstore_read("/xc_tools/display/display1"); ++ char *b, *p; ++ int val[8], i; ++ ++ *h = 1024; ++ *v = 768; ++ ++ if (!tmp) ++ return; ++ for (i = 0, b = tmp; *b && i < 7; i++) ++ { ++ val[i] = strtol(b, &p, 10); ++ if (*p) ++ b = p + 1; ++ } ++ if (i == 7) ++ { ++ *h = val[3]; ++ *v = val[4]; ++ } ++ free(tmp); ++} ++ + static uint32_t vbe_ioport_read_data(void *opaque, uint32_t addr) + { + VGAState *s = opaque; +@@ -568,6 +593,16 @@ static uint32_t vbe_ioport_read_data(void *opaque, uint32_t addr) + } else { + val = s->vbe_regs[s->vbe_index]; + } ++ } else if (s->vbe_index == VBE_DISPI_INDEX_EDID_XRES) { ++ int h, v; ++ vbe_get_host_res(&h, &v); ++ fprintf(logfile, "EDID, request Hres %d\n", h); ++ return h; ++ } else if (s->vbe_index == VBE_DISPI_INDEX_EDID_YRES) { ++ int h, v; ++ vbe_get_host_res(&h, &v); ++ fprintf(logfile, "EDID, request vres %d\n", v); ++ return v; + } else { + val = 0; + } +diff --git a/hw/vga_int.h b/hw/vga_int.h +index 96465ac..e28e16a 100644 +--- a/hw/vga_int.h ++++ b/hw/vga_int.h +@@ -48,6 +48,8 @@ + #define VBE_DISPI_INDEX_LFB_ADDRESS_H 0xb + #define VBE_DISPI_INDEX_LFB_ADDRESS_L 0xc + #define VBE_DISPI_INDEX_NB 0xd ++#define VBE_DISPI_INDEX_EDID_XRES 0xe ++#define VBE_DISPI_INDEX_EDID_YRES 0xf + + #define VBE_DISPI_ID0 0xB0C0 + #define VBE_DISPI_ID1 0xB0C1