Hi,
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
ps3av: eliminate PS3AV_DEBUG
- Move ps3av_cmd_av_monitor_info_dump from ps3av_cmd.c to ps3av.c, as it's
used there only
- Integrate ps3av_cmd_av_hw_conf_dump() into its sole user
- Use pr_debug() for printing debug info
Signed-off-by: Geert Uytterhoeven <redacted>
---
drivers/ps3/ps3av.c | 72 ++++++++++++++++++++++++++++++++++++++++----
drivers/ps3/ps3av_cmd.c | 66 ----------------------------------------
include/asm-powerpc/ps3av.h | 7 ----
3 files changed, 67 insertions(+), 78 deletions(-)
@@ -656,6 +656,64 @@ static int ps3av_hdmi_get_vid(struct ps3returnvid;}+staticvoidps3av_monitor_info_dump(conststructps3av_pkt_av_get_monitor_info*monitor_info)+{+conststructps3av_info_monitor*info=&monitor_info->info;+conststructps3av_info_audio*audio=info->audio;+charid[sizeof(info->monitor_id)*3+1];+inti;++pr_debug("Monitor Info: size %u\n",monitor_info->send_hdr.size);++pr_debug("avport: %02x\n",info->avport);+for(i=0;i<sizeof(info->monitor_id);i++)+sprintf(&id[i*3]," %02x",info->monitor_id[i]);+pr_debug("monitor_id: %s\n",id);+pr_debug("monitor_type: %02x\n",info->monitor_type);+pr_debug("monitor_name: %.*s\n",(int)sizeof(info->monitor_name),+info->monitor_name);++/* resolution */+pr_debug("resolution_60: bits: %08x native: %08x\n",+info->res_60.res_bits,info->res_60.native);+pr_debug("resolution_50: bits: %08x native: %08x\n",+info->res_50.res_bits,info->res_50.native);+pr_debug("resolution_other: bits: %08x native: %08x\n",+info->res_other.res_bits,info->res_other.native);+pr_debug("resolution_vesa: bits: %08x native: %08x\n",+info->res_vesa.res_bits,info->res_vesa.native);++/* color space */+pr_debug("color space rgb: %02x\n",info->cs.rgb);+pr_debug("color space yuv444: %02x\n",info->cs.yuv444);+pr_debug("color space yuv422: %02x\n",info->cs.yuv422);++/* color info */+pr_debug("color info red: X %04x Y %04x\n",info->color.red_x,+info->color.red_y);+pr_debug("color info green: X %04x Y %04x\n",info->color.green_x,+info->color.green_y);+pr_debug("color info blue: X %04x Y %04x\n",info->color.blue_x,+info->color.blue_y);+pr_debug("color info white: X %04x Y %04x\n",info->color.white_x,+info->color.white_y);+pr_debug("color info gamma: %08x\n",info->color.gamma);++/* other info */+pr_debug("supported_AI: %02x\n",info->supported_ai);+pr_debug("speaker_info: %02x\n",info->speaker_info);+pr_debug("num of audio: %02x\n",info->num_of_audio_block);++/* audio block */+for(i=0;i<info->num_of_audio_block;i++){+pr_debug("audio[%d] type: %02x max_ch: %02x fs: %02x sbit: "+"%02x\n",+i,audio->type,audio->max_num_of_ch,audio->fs,+audio->sbit);+audio++;+}+}+staticintps3av_auto_videomode(structps3av_pkt_av_get_hw_conf*av_hw_conf,intboot){
@@ -671,7 +729,7 @@ static int ps3av_auto_videomode(struct pif(res<0)return-1;-ps3av_cmd_av_monitor_info_dump(&monitor_info);+ps3av_monitor_info_dump(&monitor_info);info=&monitor_info.info;/* check DVI */if(info->monitor_type==PS3AV_MONITOR_TYPE_DVI){
@@ -727,23 +785,27 @@ static int ps3av_auto_videomode(struct pstaticintps3av_get_hw_conf(structps3av*ps3av){inti,j,k,res;+conststructps3av_pkt_av_get_hw_conf*hw_conf;/* get av_hw_conf */res=ps3av_cmd_av_get_hw_conf(&ps3av->av_hw_conf);if(res<0)return-1;-ps3av_cmd_av_hw_conf_dump(&ps3av->av_hw_conf);+hw_conf=&ps3av->av_hw_conf;+pr_debug("av_h_conf: num of hdmi: %u\n",hw_conf->num_of_hdmi);+pr_debug("av_h_conf: num of avmulti: %u\n",hw_conf->num_of_avmulti);+pr_debug("av_h_conf: num of spdif: %u\n",hw_conf->num_of_spdif);for(i=0;i<PS3AV_HEAD_MAX;i++)ps3av->head[i]=PS3AV_CMD_VIDEO_HEAD_A+i;for(i=0;i<PS3AV_OPT_PORT_MAX;i++)ps3av->opt_port[i]=PS3AV_CMD_AVPORT_SPDIF_0+i;-for(i=0;i<ps3av->av_hw_conf.num_of_hdmi;i++)+for(i=0;i<hw_conf->num_of_hdmi;i++)ps3av->av_port[i]=PS3AV_CMD_AVPORT_HDMI_0+i;-for(j=0;j<ps3av->av_hw_conf.num_of_avmulti;j++)+for(j=0;j<hw_conf->num_of_avmulti;j++)ps3av->av_port[i+j]=PS3AV_CMD_AVPORT_AVMULTI_0+j;-for(k=0;k<ps3av->av_hw_conf.num_of_spdif;k++)+for(k=0;k<hw_conf->num_of_spdif;k++)ps3av->av_port[i+j+k]=PS3AV_CMD_AVPORT_SPDIF_0+k;/* set all audio port */---a/drivers/ps3/ps3av_cmd.c+++b/drivers/ps3/ps3av_cmd.c
@@ -922,72 +922,6 @@ int ps3av_cmd_video_get_monitor_info(strreturnres;}-#ifdef PS3AV_DEBUG-voidps3av_cmd_av_hw_conf_dump(conststructps3av_pkt_av_get_hw_conf*hw_conf)-{-printk("av_h_conf:num of hdmi:%d\n",hw_conf->num_of_hdmi);-printk("av_h_conf:num of avmulti:%d\n",hw_conf->num_of_avmulti);-printk("av_h_conf:num of spdif:%d\n",hw_conf->num_of_spdif);-}--voidps3av_cmd_av_monitor_info_dump(conststructps3av_pkt_av_get_monitor_info*monitor_info)-{-conststructps3av_info_monitor*info=&monitor_info->info;-conststructps3av_info_audio*audio=info->audio;-inti;--printk("Monitor Info: size%d\n",monitor_info->send_hdr.size);--printk("avport:%02x\n",info->avport);-printk("monitor_id:");-for(i=0;i<10;i++)-printk("%02x ",info->monitor_id[i]);-printk("\nmonitor_type:%02x\n",info->monitor_type);-printk("monitor_name:");-for(i=0;i<16;i++)-printk("%c",info->monitor_name[i]);--/* resolution */-printk("\nresolution_60: bits:%08x native:%08x\n",-info->res_60.res_bits,info->res_60.native);-printk("resolution_50: bits:%08x native:%08x\n",-info->res_50.res_bits,info->res_50.native);-printk("resolution_other: bits:%08x native:%08x\n",-info->res_other.res_bits,info->res_other.native);-printk("resolution_vesa: bits:%08x native:%08x\n",-info->res_vesa.res_bits,info->res_vesa.native);--/* color space */-printk("color space rgb:%02x\n",info->cs.rgb);-printk("color space yuv444:%02x\n",info->cs.yuv444);-printk("color space yuv422:%02x\n",info->cs.yuv422);--/* color info */-printk("color info red:X %04x Y %04x\n",-info->color.red_x,info->color.red_y);-printk("color info green:X %04x Y %04x\n",-info->color.green_x,info->color.green_y);-printk("color info blue:X %04x Y %04x\n",-info->color.blue_x,info->color.blue_y);-printk("color info white:X %04x Y %04x\n",-info->color.white_x,info->color.white_y);-printk("color info gamma: %08x\n",info->color.gamma);--/* other info */-printk("supported_AI:%02x\n",info->supported_ai);-printk("speaker_info:%02x\n",info->speaker_info);-printk("num of audio:%02x\n",info->num_of_audio_block);--/* audio block */-for(i=0;i<info->num_of_audio_block;i++){-printk("audio[%d] type:%02x max_ch:%02x fs:%02x sbit:%02x\n",-i,audio->type,audio->max_num_of_ch,audio->fs,-audio->sbit);-audio++;-}-}-#endif /* PS3AV_DEBUG */-#define PS3AV_AV_LAYOUT_0 (PS3AV_CMD_AV_LAYOUT_32 \|PS3AV_CMD_AV_LAYOUT_44\|PS3AV_CMD_AV_LAYOUT_48)---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
@@ -697,13 +697,6 @@ extern int ps3av_cmd_audio_mute(int, u32externintps3av_cmd_audio_active(int,u32);externintps3av_cmd_avb_param(structps3av_pkt_avb_param*,u32);externintps3av_cmd_av_get_hw_conf(structps3av_pkt_av_get_hw_conf*);-#ifdef PS3AV_DEBUG-externvoidps3av_cmd_av_hw_conf_dump(conststructps3av_pkt_av_get_hw_conf*);-externvoidps3av_cmd_av_monitor_info_dump(conststructps3av_pkt_av_get_monitor_info*);-#else-staticinlinevoidps3av_cmd_av_hw_conf_dump(conststructps3av_pkt_av_get_hw_conf*hw_conf){}-staticinlinevoidps3av_cmd_av_monitor_info_dump(conststructps3av_pkt_av_get_monitor_info*monitor_info){}-#endifexternintps3av_cmd_video_get_monitor_info(structps3av_pkt_av_get_monitor_info*,u32);
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
ps3av: use PS3 video mode ids in autodetect code
It doesn't make much sense to use the PS3AV_CMD_VIDEO_VID_* values in the
autodetection code, just to convert them to PS3 video mode ids afterwards.
Signed-off-by: Geert Uytterhoeven <redacted>
---
drivers/ps3/ps3av.c | 90 +++++++++++++++++++-------------------------
include/asm-powerpc/ps3av.h | 11 ++---
2 files changed, 46 insertions(+), 55 deletions(-)
@@ -585,75 +585,65 @@ static void ps3avd(struct work_struct *wcomplete(&ps3av->done);}-staticintps3av_vid2table_id(intvid)+staticintps3av_resbit2id(u32res_50,u32res_60){-inti;--for(i=1;i<ARRAY_SIZE(video_mode_table);i++)-if(video_mode_table[i].vid==vid)-returni;-return-1;-}--staticintps3av_resbit2vid(u32res_50,u32res_60)-{-intvid=-1;+intid=0;if(res_50>res_60){/* if res_50 == res_60, res_60 will be used */if(res_50&PS3AV_RESBIT_1920x1080P)-vid=PS3AV_CMD_VIDEO_VID_1080P_50HZ;+id=10;elseif(res_50&PS3AV_RESBIT_1920x1080I)-vid=PS3AV_CMD_VIDEO_VID_1080I_50HZ;+id=9;elseif(res_50&PS3AV_RESBIT_1280x720P)-vid=PS3AV_CMD_VIDEO_VID_720P_50HZ;+id=8;elseif(res_50&PS3AV_RESBIT_720x576P)-vid=PS3AV_CMD_VIDEO_VID_576P;+id=7;else-vid=-1;+id=0;}else{if(res_60&PS3AV_RESBIT_1920x1080P)-vid=PS3AV_CMD_VIDEO_VID_1080P_60HZ;+id=5;elseif(res_60&PS3AV_RESBIT_1920x1080I)-vid=PS3AV_CMD_VIDEO_VID_1080I_60HZ;+id=4;elseif(res_60&PS3AV_RESBIT_1280x720P)-vid=PS3AV_CMD_VIDEO_VID_720P_60HZ;+id=3;elseif(res_60&PS3AV_RESBIT_720x480P)-vid=PS3AV_CMD_VIDEO_VID_480P;+id=2;else-vid=-1;+id=0;}-returnvid;+returnid;}-staticintps3av_hdmi_get_vid(structps3av_info_monitor*info)+staticintps3av_hdmi_get_id(structps3av_info_monitor*info){u32res_50,res_60;-intvid=-1;+intid;if(info->monitor_type!=PS3AV_MONITOR_TYPE_HDMI)-return-1;+return0;/* check native resolution */res_50=info->res_50.native&PS3AV_RES_MASK_50;res_60=info->res_60.native&PS3AV_RES_MASK_60;if(res_50||res_60){-vid=ps3av_resbit2vid(res_50,res_60);-returnvid;+id=ps3av_resbit2id(res_50,res_60);+returnid;}/* check resolution */res_50=info->res_50.res_bits&PS3AV_RES_MASK_50;res_60=info->res_60.res_bits&PS3AV_RES_MASK_60;if(res_50||res_60){-vid=ps3av_resbit2vid(res_50,res_60);-returnvid;+id=ps3av_resbit2id(res_50,res_60);+returnid;}if(ps3av->region&PS3AV_REGION_60)-vid=PS3AV_DEFAULT_HDMI_VID_REG_60;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;else-vid=PS3AV_DEFAULT_HDMI_VID_REG_50;-returnvid;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;+returnid;}staticvoidps3av_monitor_info_dump(conststructps3av_pkt_av_get_monitor_info*monitor_info)
@@ -717,11 +707,11 @@ static void ps3av_monitor_info_dump(consstaticintps3av_auto_videomode(structps3av_pkt_av_get_hw_conf*av_hw_conf,intboot){-inti,res,vid=-1,dvi=0,rgb=0;+inti,res,id=0,dvi=0,rgb=0;structps3av_pkt_av_get_monitor_infomonitor_info;structps3av_info_monitor*info;-/* get vid for hdmi */+/* get mode id for hdmi */for(i=0;i<av_hw_conf->num_of_hdmi;i++){res=ps3av_cmd_video_get_monitor_info(&monitor_info,PS3AV_CMD_AVPORT_HDMI_0+
@@ -737,49 +727,49 @@ static int ps3av_auto_videomode(struct pbreak;}/* check HDMI */-vid=ps3av_hdmi_get_vid(info);-if(vid!=-1){-/* got valid vid */+id=ps3av_hdmi_get_id(info);+if(id){+/* got valid mode id */break;}}if(dvi){/* DVI mode */-vid=PS3AV_DEFAULT_DVI_VID;-}elseif(vid==-1){+id=PS3AV_DEFAULT_DVI_MODE_ID;+}elseif(!id){/* no HDMI interface or HDMI is off */if(ps3av->region&PS3AV_REGION_60)-vid=PS3AV_DEFAULT_AVMULTI_VID_REG_60;+id=PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60;else-vid=PS3AV_DEFAULT_AVMULTI_VID_REG_50;+id=PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50;if(ps3av->region&PS3AV_REGION_RGB)rgb=PS3AV_MODE_RGB;}elseif(boot){-/* HDMI: using DEFAULT HDMI_VID while booting up */+/* HDMI: using DEFAULT HDMI_MODE_ID while booting up */info=&monitor_info.info;if(ps3av->region&PS3AV_REGION_60){if(info->res_60.res_bits&PS3AV_RESBIT_720x480P)-vid=PS3AV_DEFAULT_HDMI_VID_REG_60;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;elseif(info->res_50.res_bits&PS3AV_RESBIT_720x576P)-vid=PS3AV_DEFAULT_HDMI_VID_REG_50;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;else{/* default */-vid=PS3AV_DEFAULT_HDMI_VID_REG_60;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;}}else{if(info->res_50.res_bits&PS3AV_RESBIT_720x576P)-vid=PS3AV_DEFAULT_HDMI_VID_REG_50;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;elseif(info->res_60.res_bits&PS3AV_RESBIT_720x480P)-vid=PS3AV_DEFAULT_HDMI_VID_REG_60;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;else{/* default */-vid=PS3AV_DEFAULT_HDMI_VID_REG_50;+id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;}}}-return(ps3av_vid2table_id(vid)|dvi|rgb);+returnid|dvi|rgb;}staticintps3av_get_hw_conf(structps3av*ps3av)---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
@@ -712,7 +709,7 @@ static int ps3av_auto_videomode(struct pstructps3av_info_monitor*info;/* get mode id for hdmi */-for(i=0;i<av_hw_conf->num_of_hdmi;i++){+for(i=0;i<av_hw_conf->num_of_hdmi&&!id;i++){res=ps3av_cmd_video_get_monitor_info(&monitor_info,PS3AV_CMD_AVPORT_HDMI_0+i);
@@ -720,24 +717,19 @@ static int ps3av_auto_videomode(struct preturn-1;ps3av_monitor_info_dump(&monitor_info);+info=&monitor_info.info;-/* check DVI */-if(info->monitor_type==PS3AV_MONITOR_TYPE_DVI){+switch(info->monitor_type){+casePS3AV_MONITOR_TYPE_DVI:dvi=PS3AV_MODE_DVI;-break;-}-/* check HDMI */-id=ps3av_hdmi_get_id(info);-if(id){-/* got valid mode id */+/* fall through */+casePS3AV_MONITOR_TYPE_HDMI:+id=ps3av_hdmi_get_id(info);break;}}-if(dvi){-/* DVI mode */-id=PS3AV_DEFAULT_DVI_MODE_ID;-}elseif(!id){+if(!id){/* no HDMI interface or HDMI is off */if(ps3av->region&PS3AV_REGION_60)id=PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_60;---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
@@ -585,54 +585,73 @@ static void ps3avd(struct work_struct *wcomplete(&ps3av->done);}-staticintps3av_resbit2id(u32res_50,u32res_60)+#define SHIFT_50 0+#define SHIFT_60 4+#define SHIFT_VESA 8++staticconststruct{+unsignedmask:19;+unsignedid:4;+}ps3av_preferred_modes[]={+{.mask=PS3AV_RESBIT_WUXGA<<SHIFT_VESA,.id=13},+{.mask=PS3AV_RESBIT_1920x1080P<<SHIFT_60,.id=5},+{.mask=PS3AV_RESBIT_1920x1080P<<SHIFT_50,.id=10},+{.mask=PS3AV_RESBIT_1920x1080I<<SHIFT_60,.id=4},+{.mask=PS3AV_RESBIT_1920x1080I<<SHIFT_50,.id=9},+{.mask=PS3AV_RESBIT_SXGA<<SHIFT_VESA,.id=12},+{.mask=PS3AV_RESBIT_WXGA<<SHIFT_VESA,.id=11},+{.mask=PS3AV_RESBIT_1280x720P<<SHIFT_60,.id=3},+{.mask=PS3AV_RESBIT_1280x720P<<SHIFT_50,.id=8},+{.mask=PS3AV_RESBIT_720x480P<<SHIFT_60,.id=2},+{.mask=PS3AV_RESBIT_720x576P<<SHIFT_50,.id=7},+};++staticintps3av_resbit2id(u32res_50,u32res_60,u32res_vesa){-intid=0;+unsignedinti;+u32res_all;-if(res_50>res_60){/* if res_50 == res_60, res_60 will be used */-if(res_50&PS3AV_RESBIT_1920x1080P)-id=10;-elseif(res_50&PS3AV_RESBIT_1920x1080I)-id=9;-elseif(res_50&PS3AV_RESBIT_1280x720P)-id=8;-elseif(res_50&PS3AV_RESBIT_720x576P)-id=7;-else-id=0;-}else{-if(res_60&PS3AV_RESBIT_1920x1080P)-id=5;-elseif(res_60&PS3AV_RESBIT_1920x1080I)-id=4;-elseif(res_60&PS3AV_RESBIT_1280x720P)-id=3;-elseif(res_60&PS3AV_RESBIT_720x480P)-id=2;-else-id=0;-}-returnid;+/*+*Wemaskofftheresolutionbitswecareaboutandcombinethe+*resultsinonebitfield,somakesurethere'snooverlap+*/+BUILD_BUG_ON(PS3AV_RES_MASK_50<<SHIFT_50&+PS3AV_RES_MASK_60<<SHIFT_60);+BUILD_BUG_ON(PS3AV_RES_MASK_50<<SHIFT_50&+PS3AV_RES_MASK_VESA<<SHIFT_VESA);+BUILD_BUG_ON(PS3AV_RES_MASK_60<<SHIFT_60&+PS3AV_RES_MASK_VESA<<SHIFT_VESA);+res_all=(res_50&PS3AV_RES_MASK_50)<<SHIFT_50|+(res_60&PS3AV_RES_MASK_60)<<SHIFT_60|+(res_vesa&PS3AV_RES_MASK_VESA)<<SHIFT_VESA;++if(!res_all)+return0;++for(i=0;i<ARRAY_SIZE(ps3av_preferred_modes);i++)+if(res_all&ps3av_preferred_modes[i].mask)+returnps3av_preferred_modes[i].id;++return0;}staticintps3av_hdmi_get_id(structps3av_info_monitor*info){-u32res_50,res_60;intid;/* check native resolution */-res_50=info->res_50.native&PS3AV_RES_MASK_50;-res_60=info->res_60.native&PS3AV_RES_MASK_60;-if(res_50||res_60){-id=ps3av_resbit2id(res_50,res_60);+id=ps3av_resbit2id(info->res_50.native,info->res_60.native,+info->res_vesa.native);+if(id){+pr_debug("%s: Using native mode %d\n",__func__,id);returnid;}-/* check resolution */-res_50=info->res_50.res_bits&PS3AV_RES_MASK_50;-res_60=info->res_60.res_bits&PS3AV_RES_MASK_60;-if(res_50||res_60){-id=ps3av_resbit2id(res_50,res_60);+/* check supported resolutions */+id=ps3av_resbit2id(info->res_50.res_bits,info->res_60.res_bits,+info->res_vesa.res_bits);+if(id){+pr_debug("%s: Using supported mode %d\n",__func__,id);returnid;}
@@ -640,6 +659,7 @@ static int ps3av_hdmi_get_id(struct ps3aid=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;elseid=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;+pr_debug("%s: Using default mode %d\n",__func__,id);returnid;}
@@ -737,6 +757,7 @@ static int ps3av_auto_videomode(struct pid=PS3AV_DEFAULT_AVMULTI_MODE_ID_REG_50;if(ps3av->region&PS3AV_REGION_RGB)rgb=PS3AV_MODE_RGB;+pr_debug("%s: Using avmulti mode %d\n",__func__,id);}elseif(boot){/* HDMI: using DEFAULT HDMI_MODE_ID while booting up */info=&monitor_info.info;---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
@@ -298,6 +298,15 @@|PS3AV_RESBIT_1920x1080I\|PS3AV_RESBIT_1920x1080P)+/* for VESA automode */+#define PS3AV_RESBIT_VGA 0x0001+#define PS3AV_RESBIT_WXGA 0x0002+#define PS3AV_RESBIT_SXGA 0x0004+#define PS3AV_RESBIT_WUXGA 0x0008+#define PS3AV_RES_MASK_VESA (PS3AV_RESBIT_WXGA |\+PS3AV_RESBIT_SXGA|\+PS3AV_RESBIT_WUXGA)+#define PS3AV_MONITOR_TYPE_HDMI 1 /* HDMI */#define PS3AV_MONITOR_TYPE_DVI 2 /* DVI */
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
ps3av: add a quirk database for broken monitors where the `best' advertised
video mode doesn't work
Signed-off-by: Geert Uytterhoeven <redacted>
---
drivers/ps3/ps3av.c | 41 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 41 insertions(+)
@@ -739,6 +778,8 @@ static int ps3av_auto_videomode(struct pps3av_monitor_info_dump(&monitor_info);info=&monitor_info.info;+ps3av_fixup_monitor_info(info);+switch(info->monitor_type){casePS3AV_MONITOR_TYPE_DVI:dvi=PS3AV_MODE_DVI;
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
@@ -903,27 +903,6 @@ int ps3av_get_auto_mode(int boot)EXPORT_SYMBOL_GPL(ps3av_get_auto_mode);-intps3av_set_mode(u32id,intboot)-{-intres;--res=ps3av_set_video_mode(id,boot);-if(res)-returnres;--res=ps3av_set_audio_mode(PS3AV_CMD_AUDIO_NUM_OF_CH_2,-PS3AV_CMD_AUDIO_FS_48K,-PS3AV_CMD_AUDIO_WORD_BITS_16,-PS3AV_CMD_AUDIO_FORMAT_PCM,-PS3AV_CMD_AUDIO_SOURCE_SERIAL);-if(res)-returnres;--return0;-}--EXPORT_SYMBOL_GPL(ps3av_set_mode);-intps3av_get_mode(void){returnps3av?ps3av->ps3av_mode:0;---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
@@ -712,7 +712,6 @@ extern int ps3av_cmd_video_get_monitor_iexternintps3av_set_video_mode(u32,int);externintps3av_set_audio_mode(u32,u32,u32,u32,u32);externintps3av_get_auto_mode(int);-externintps3av_set_mode(u32,int);externintps3av_get_mode(void);externintps3av_get_scanmode(int);externintps3av_get_refresh_rate(int);
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
@@ -799,28 +798,6 @@ static int ps3av_auto_videomode(struct pif(ps3av->region&PS3AV_REGION_RGB)rgb=PS3AV_MODE_RGB;pr_debug("%s: Using avmulti mode %d\n",__func__,id);-}elseif(boot){-/* HDMI: using DEFAULT HDMI_MODE_ID while booting up */-info=&monitor_info.info;-if(ps3av->region&PS3AV_REGION_60){-if(info->res_60.res_bits&PS3AV_RESBIT_720x480P)-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;-elseif(info->res_50.res_bits&PS3AV_RESBIT_720x576P)-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;-else{-/* default */-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;-}-}else{-if(info->res_50.res_bits&PS3AV_RESBIT_720x576P)-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;-elseif(info->res_60.res_bits&PS3AV_RESBIT_720x480P)-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_60;-else{-/* default */-id=PS3AV_DEFAULT_HDMI_MODE_ID_REG_50;-}-}}returnid|dvi|rgb;
@@ -862,7 +839,7 @@ static int ps3av_get_hw_conf(struct ps3a}/* set mode using id */-intps3av_set_video_mode(u32id,intboot)+intps3av_set_video_mode(u32id){intsize;u32option;
@@ -876,7 +853,7 @@ int ps3av_set_video_mode(u32 id, int boo/* auto mode */option=id&~PS3AV_MODE_MASK;if((id&PS3AV_MODE_MASK)==0){-id=ps3av_auto_videomode(&ps3av->av_hw_conf,boot);+id=ps3av_auto_videomode(&ps3av->av_hw_conf);if(id<1){printk(KERN_ERR"%s: invalid id :%d\n",__func__,id);return-EINVAL;
@@ -896,9 +873,9 @@ int ps3av_set_video_mode(u32 id, int booEXPORT_SYMBOL_GPL(ps3av_set_video_mode);-intps3av_get_auto_mode(intboot)+intps3av_get_auto_mode(void){-returnps3av_auto_videomode(&ps3av->av_hw_conf,boot);+returnps3av_auto_videomode(&ps3av->av_hw_conf);}EXPORT_SYMBOL_GPL(ps3av_get_auto_mode);
@@ -1044,7 +1021,7 @@ static int ps3av_probe(struct ps3_systemres);ps3av_get_hw_conf(ps3av);-id=ps3av_auto_videomode(&ps3av->av_hw_conf,1);+id=ps3av_auto_videomode(&ps3av->av_hw_conf);mutex_lock(&ps3av->mutex);ps3av->ps3av_mode=id;mutex_unlock(&ps3av->mutex);---a/drivers/video/ps3fb.c+++b/drivers/video/ps3fb.c
@@ -572,10 +571,9 @@ static int ps3fb_set_par(struct fb_info /* Keep the special bits we cannot set using fb_var_screeninfo */ps3fb_mode=(ps3fb_mode&~PS3AV_MODE_MASK)|mode;-if(ps3av_set_video_mode(ps3fb_mode,first))+if(ps3av_set_video_mode(ps3fb_mode))return-EINVAL;-first=0;return0;}
@@ -737,7 +735,7 @@ static int ps3fb_ioctl(struct fb_info *ibreak;if(!(val&PS3AV_MODE_MASK)){-u32id=ps3av_get_auto_mode(0);+u32id=ps3av_get_auto_mode();if(id>0)val=(val&~PS3AV_MODE_MASK)|id;}---a/include/asm-powerpc/ps3av.h+++b/include/asm-powerpc/ps3av.h
@@ -709,9 +709,9 @@ extern int ps3av_cmd_av_get_hw_conf(struexternintps3av_cmd_video_get_monitor_info(structps3av_pkt_av_get_monitor_info*,u32);-externintps3av_set_video_mode(u32,int);+externintps3av_set_video_mode(u32);externintps3av_set_audio_mode(u32,u32,u32,u32,u32);-externintps3av_get_auto_mode(int);+externintps3av_get_auto_mode(void);externintps3av_get_mode(void);externintps3av_get_scanmode(int);externintps3av_get_refresh_rate(int);
--
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village ������������������ Da Vincilaan 7-D1 ������������������ B-1935 Zaventem ������������������ Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 ������������������ B-1840 Londerzeel ������������������ Belgium
VAT BE 0413.825.160 ������������������ RPR Brussels
Fortis Bank Zaventem ������������������ Swift GEBABEBB08A ������������������ IBAN BE39001382358619
From: Michael Ellerman <hidden> Date: 2007-09-27 02:31:25
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
Hi,
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
cheers
--
Michael Ellerman
OzLabs, IBM Australia Development Lab
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)
We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
Well, this code has been in Geoff's git tree for a while, and it's been several
weeks ago I got complaints (which have been adressed by adding displays to the
quirk database). The new kboot (from Distro Kit 1.4.1) also uses it.
The only 100% (sic) mode is 480p (actual usable resolution is 576x384), which
is quite limited due to the very low resolution. This is what the current
mainline kernel uses by default, causing complaints from people who don't like
their shiny expensive full-HD displays being driven by 480p by default.
Furthermore Geoff is working on a way to configure the video mode for
otheros.bld (cfr. the tool to change the default kernel command line on an
ia32 kernel image ages ago), and petitboot (which is intended to replace the
current kboot boot loader environment) allows to change the video mode using
a simple key press if you get a blank screen.
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Hi,
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
It is not that bad. If a bootloader is configued to use autodetection
so that it is shown at best video mode, then it should have advertised
key sequences to default to known video modes, with at least a 480p 'safe'
mode.
Second stage kerenls can be booted with a videomode appended on the
command line, and all kboot.conf's should have a 480p 'safe' mode
entry.
-Geoff
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
From: Michael Ellerman <hidden> Date: 2007-09-28 08:40:33
On Thu, 2007-09-27 at 10:23 -0700, Geoff Levand wrote:
Michael Ellerman wrote:
quoted
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Hi,
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
It is not that bad. If a bootloader is configued to use autodetection
so that it is shown at best video mode, then it should have advertised
key sequences to default to known video modes, with at least a 480p 'safe'
mode.
Oh OK, that is a good idea. What's the "safe mode" key sequence for the
otheros.bld you provide on kernel.org?
cheers
--
Michael Ellerman
OzLabs, IBM Australia Development Lab
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)
We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
From: Michael Ellerman <hidden> Date: 2007-09-28 08:44:16
On Thu, 2007-09-27 at 13:53 +0200, Geert Uytterhoeven wrote:
On Thu, 27 Sep 2007, Michael Ellerman wrote:
quoted
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Here are some new patches for the PS3 AV Settings Driver (ps3av), which is
used in close collaboration with the PS3 Virtual Frame Buffer Device Driver
(ps3fb):
[1] ps3av: eliminate unneeded temporary variables
[2] ps3av: eliminate PS3AV_DEBUG
[3] ps3av: use PS3 video mode ids in autodetect code
[4] ps3av: treat DVI-D like HDMI in autodetect
[5] ps3av: add autodetection for VESA modes
[6] ps3av: add quirk database for broken monitors
[7] ps3av: remove unused ps3av_set_mode()
[8] ps3av: don't distinguish between `boot' and `non-boot' autodetection
Please review, and queue for 2.6.24 if they're ok. Thanks!
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
Well, this code has been in Geoff's git tree for a while, and it's been several
weeks ago I got complaints (which have been adressed by adding displays to the
quirk database). The new kboot (from Distro Kit 1.4.1) also uses it.
Well yeah. Your instructions for diagnosing a quirk are to add #define
DEBUG to ps3av.c and then send the _output from the kernel log_ ... ?
Not to mention that for every quirk reported there's probably 50 users
who just figured Linux on PS3 was broken and gave up.
The only 100% (sic) mode is 480p (actual usable resolution is 576x384), which
is quite limited due to the very low resolution. This is what the current
mainline kernel uses by default, causing complaints from people who don't like
their shiny expensive full-HD displays being driven by 480p by default.
Sure that's annoying, but not quite as annoying as getting a completely
black screen that you can do nothing about - short of hacking the kernel
and building your own otheros.bld.
cheers
--
Michael Ellerman
OzLabs, IBM Australia Development Lab
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)
We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
On Thu, 2007-09-27 at 10:23 -0700, Geoff Levand wrote:
quoted
Michael Ellerman wrote:
quoted
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
It is not that bad. If a bootloader is configued to use autodetection
so that it is shown at best video mode, then it should have advertised
key sequences to default to known video modes, with at least a 480p 'safe'
mode.
Oh OK, that is a good idea. What's the "safe mode" key sequence for the
otheros.bld you provide on kernel.org?
I don't maintain that, and have no idea how it sets its video mode. Did you
have trouble with it? I know in the past it used a fixed 480p mode.
-Geoff
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
On Thu, 2007-09-27 at 10:23 -0700, Geoff Levand wrote:
quoted
Michael Ellerman wrote:
quoted
On Wed, 2007-09-26 at 18:33 +0200, Geert Uytterhoeven wrote:
quoted
Question: As several DVI-D displays advertise they support 1080i modes while
they actually don't (cfr. the quirk database), perhaps I should drop 1080i
modes completely from the ps3av_preferred_modes[] table? Usually 720p looks
better than 1080i anyway. What do you think?
Definitely. If the autodetection fails Linux is basically unusable on
PS3 unless you hack the kernel sources and build your own kboot and
otheros.bld - not entirely trivial for novice users. So it's pretty
important that it works 100%.
It is not that bad. If a bootloader is configued to use autodetection
so that it is shown at best video mode, then it should have advertised
key sequences to default to known video modes, with at least a 480p 'safe'
mode.
Oh OK, that is a good idea. What's the "safe mode" key sequence for the
otheros.bld you provide on kernel.org?
I don't maintain that, and have no idea how it sets its video mode. Did you
have trouble with it? I know in the past it used a fixed 480p mode.
It uses the autodetect mode. In the past, the kernel defaulted to 480p for
DVI-D/HDMI displays, 480i for other displays.
So far no one complained about the new otheros.bld (AFAIK). Which doesn't mean
that (a) the problem doesn't happen and (b) it wouldn't be nice to have a `safe
mode' key sequence...
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven@sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619