intelfb: Use firmware EDID for mode database
PATCH 3/9 intelfb: Use firmware EDID for mode database
Use firmware EDID for the driver's private mode database. Untested.
Signed-off-by Antonino Daplas <[email protected]>
---
drivers/video/intelfb/intelfbdrv.c | 36 +++++++++++++++++++++++++++++++++--- 1 files changed, 33 insertions(+), 3 deletions(-)
drivers/video/intelfb/intelfbdrv.c +33 -3
@@ -132,6 +132,7 @@#include "intelfb.h" #include "intelfbhw.h" +#include "../edid.h" static void __devinit get_initial_mode (struct intelfb_info *dinfo); static void update_dinfo(struct intelfb_info *dinfo,
@@ -1031,13 +1032,42 @@ intelfb_init_var(struct intelfb_info *di sizeof(struct fb_var_screeninfo)); msrc =5 ; }else { +const u8 *edid_s =fb_firmware_edid (&dinfo->pdev->dev); +u8 *edid_d =NULL ; + +if (edid_s) { + edid_d =kmalloc (128 ,GFP_KERNEL ); + +if (edid_d) { +memcpy (edid_d, edid_s,128 ); +fb_edid_to_monspecs (edid_d, + &dinfo->info->monspecs); +kfree (edid_d); + } + } +if (mode) { +printk ("intelfb: Looking for mode in private " +"database\n" ); msrc =fb_find_mode (var, dinfo->info, mode, - vesa_modes,VESA_MODEDB_SIZE , + dinfo->info->monspecs.modedb, + dinfo->info->monspecs.modedb_len,NULL ,0 ); -if (msrc) - msrc |=8 ; + +if (msrc && msrc >1 ) { +printk ("intelfb: No mode in private database, " +"intelfb: looking for mode in global " +"database " ); + msrc =fb_find_mode (var, dinfo->info, mode, + vesa_modes, +VESA_MODEDB_SIZE ,NULL ,0 ); + +if (msrc) + msrc |=8 ; + } + } +if (!msrc) { msrc = fb_find_mode(var, dinfo->info, PREFERRED_MODE, vesa_modes, VESA_MODEDB_SIZE,
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642