mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-23 14:07:42 +00:00
dm: vdisplay: Remove modes filter in EDID generation
All the modes that vdisplay supported should be reported to driver, then driver should select the modes which report to OS. Tracked-On: #7507 Signed-off-by: Sun Peng <peng.p.sun@linux.intel.com> Acked-by: Wang, Yu1 <yu1.wang@intel.com>
This commit is contained in:
parent
84550004dd
commit
f24f10b4b9
@ -142,8 +142,6 @@ typedef struct frame_param{
|
|||||||
typedef struct base_param{
|
typedef struct base_param{
|
||||||
uint32_t h_pixel; // pixels
|
uint32_t h_pixel; // pixels
|
||||||
uint32_t v_pixel; // lines
|
uint32_t v_pixel; // lines
|
||||||
uint32_t h_pixelmax;
|
|
||||||
uint32_t v_pixelmax;
|
|
||||||
uint32_t rate; // Hz
|
uint32_t rate; // Hz
|
||||||
uint32_t width; // mm
|
uint32_t width; // mm
|
||||||
uint32_t height; // mm
|
uint32_t height; // mm
|
||||||
@ -161,8 +159,6 @@ vdpy_edid_set_baseparam(base_param *b_param, uint32_t width, uint32_t height)
|
|||||||
{
|
{
|
||||||
b_param->h_pixel = width;
|
b_param->h_pixel = width;
|
||||||
b_param->v_pixel = height;
|
b_param->v_pixel = height;
|
||||||
b_param->h_pixelmax = 0;
|
|
||||||
b_param->v_pixelmax = 0;
|
|
||||||
b_param->rate = 60;
|
b_param->rate = 60;
|
||||||
b_param->width = width;
|
b_param->width = width;
|
||||||
b_param->height = height;
|
b_param->height = height;
|
||||||
@ -233,7 +229,7 @@ vdpy_edid_set_color(uint8_t *edid, float red_x, float red_y,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vdpy_edid_set_timing(uint8_t *addr, const base_param *b_param, TIMING_MODE mode)
|
vdpy_edid_set_timing(uint8_t *addr, TIMING_MODE mode)
|
||||||
{
|
{
|
||||||
static uint16_t idx;
|
static uint16_t idx;
|
||||||
static uint16_t size;
|
static uint16_t size;
|
||||||
@ -252,24 +248,21 @@ vdpy_edid_set_timing(uint8_t *addr, const base_param *b_param, TIMING_MODE mode)
|
|||||||
size = sizeof(timings) / sizeof(timings[0]);
|
size = sizeof(timings) / sizeof(timings[0]);
|
||||||
for(; idx < size; idx++){
|
for(; idx < size; idx++){
|
||||||
timing = timings + idx;
|
timing = timings + idx;
|
||||||
if ((b_param->h_pixelmax && b_param->h_pixelmax < timing->hpixel) ||
|
|
||||||
(b_param->v_pixelmax && b_param->v_pixelmax < timing->vpixel)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
switch(mode){
|
switch(mode){
|
||||||
case ESTT: // Established Timings I & II
|
case ESTT: // Established Timings I & II
|
||||||
if(timing->byte) {
|
if(timing->byte) {
|
||||||
addr[timing->byte] |= (1 << timing->bit);
|
addr[timing->byte] |= (1 << timing->bit);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
case ESTT3: // Established Timings III
|
case ESTT3: // Established Timings III
|
||||||
if(timing->byte_t3){
|
if(timing->byte_t3){
|
||||||
addr[timing->byte_t3] |= (1 << timing->bit);
|
addr[timing->byte_t3] |= (1 << timing->bit);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
case STDT: // Standard Timings
|
case STDT: // Standard Timings
|
||||||
if(stdcnt < 8 && timing->is_std) {
|
if(stdcnt < 8 && timing->is_std) {
|
||||||
@ -311,7 +304,7 @@ vdpy_edid_set_timing(uint8_t *addr, const base_param *b_param, TIMING_MODE mode)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while(mode == STDT && stdcnt < 8){
|
while(mode == STDT && stdcnt < 8){
|
||||||
@ -375,7 +368,7 @@ vdpy_edid_set_descripter(uint8_t *desc, uint8_t is_dtd,
|
|||||||
// Established Timings III Descriptor (tag #F7h)
|
// Established Timings III Descriptor (tag #F7h)
|
||||||
case 0xf7:
|
case 0xf7:
|
||||||
desc[5] = 0x0a; // Revision Number
|
desc[5] = 0x0a; // Revision Number
|
||||||
vdpy_edid_set_timing(desc, b_param, ESTT3);
|
vdpy_edid_set_timing(desc, ESTT3);
|
||||||
break;
|
break;
|
||||||
// Display Range Limits & Additional Timing Descriptor (tag #FDh)
|
// Display Range Limits & Additional Timing Descriptor (tag #FDh)
|
||||||
case 0xfd:
|
case 0xfd:
|
||||||
@ -487,10 +480,10 @@ vdpy_edid_generate(uint8_t *edid, size_t size, struct edid_info *info)
|
|||||||
0.3127, 0.3290);
|
0.3127, 0.3290);
|
||||||
|
|
||||||
/* edid[37:35], Established Timings */
|
/* edid[37:35], Established Timings */
|
||||||
vdpy_edid_set_timing(edid, &b_param, ESTT);
|
vdpy_edid_set_timing(edid, ESTT);
|
||||||
|
|
||||||
/* edid[53:38], Standard Timings: Identification 1 -> 8 */
|
/* edid[53:38], Standard Timings: Identification 1 -> 8 */
|
||||||
vdpy_edid_set_timing(edid, &b_param, STDT);
|
vdpy_edid_set_timing(edid, STDT);
|
||||||
|
|
||||||
/* edid[125:54], Detailed Timing Descriptor - 18 bytes x 4 */
|
/* edid[125:54], Detailed Timing Descriptor - 18 bytes x 4 */
|
||||||
// Detailed Timing Descriptor 1
|
// Detailed Timing Descriptor 1
|
||||||
|
Loading…
Reference in New Issue
Block a user