diff options
Diffstat (limited to 'vbe.c')
-rw-r--r-- | vbe.c | 17 |
1 files changed, 9 insertions, 8 deletions
@@ -136,7 +136,7 @@ static int vbe_check_vbe_info(hd_data_t *hd_data) } /* Get EDID info. */ -int vbe_get_edid_info(hd_data_t *hd_data, char *edid) +int vbe_get_edid_info(hd_data_t *hd_data, char *edid, int port) { int i; int ax, bx, cx; @@ -144,7 +144,7 @@ int vbe_get_edid_info(hd_data_t *hd_data, char *edid) /* Setup registers for the interrupt call */ ax = 0x4f15; bx = 1; - cx = 0; + cx = port; /* Get EDID block */ i = CallInt10(&ax, &bx, &cx, edid, 256, hd_data->flags.cpuemu) & 0xffff; @@ -211,7 +211,7 @@ static int vbe_check_vbe_info__old(void) return 1; } -static int vbe_get_edid_info__old(char *edid) +static int vbe_get_edid_info__old(char *edid, int port) { int i; unsigned char *mem; @@ -236,6 +236,7 @@ static int vbe_get_edid_info__old(char *edid) memset(®s, 0, sizeof(regs)); regs.eax = 0x4f15; regs.ebx = 0x0001; + regs.ecx = port; regs.es = ((u_int32_t)mem) >> 4; regs.edi = ((u_int32_t)mem) & 0x0f; @@ -261,7 +262,7 @@ static int vbe_get_edid_info__old(char *edid) return 1; } -int get_edid__old(char *edid) +int get_edid__old(char *edid, int port) { int ok; /* try with older lrmi interface, we can assume a failure for @@ -269,12 +270,12 @@ int get_edid__old(char *edid) log_err("Retrying with old LRMI interface\n"); ok = (box_is_xbox() || vbe_check_vbe_info__old()) && - vbe_get_edid_info__old(edid); + vbe_get_edid_info__old(edid, port); return ok; } #endif -int get_edid(hd_data_t *hd_data, char *edid) +int get_edid(hd_data_t *hd_data, char *edid, int port) { int ok = 0; @@ -286,14 +287,14 @@ int get_edid(hd_data_t *hd_data, char *edid) if (!box_is_xbox()) { if (InitInt10(hd_data) == 0) { ok = vbe_check_vbe_info(hd_data) - && vbe_get_edid_info(hd_data, edid); + && vbe_get_edid_info(hd_data, edid, port); FreeInt10(); } } #ifdef LRMI if (!ok) - ok = get_edid__old(edid); + ok = get_edid__old(edid, port); #endif return ok ? 128 : 0; |