in ps3av.c [528:566]
static void ps3av_set_videomode_cont(u32 id, u32 old_id)
{
static int vesa;
int res;
/* video signal off */
ps3av_set_video_disable_sig();
/*
* AV backend needs non-VESA mode setting at least one time
* when VESA mode is used.
*/
if (vesa == 0 && (id & PS3AV_MODE_MASK) >= PS3AV_MODE_WXGA) {
/* vesa mode */
ps3av_set_videomode_packet(PS3AV_MODE_480P);
}
vesa = 1;
/* Retail PS3 product doesn't support this */
if (id & PS3AV_MODE_HDCP_OFF) {
res = ps3av_cmd_av_hdmi_mode(PS3AV_CMD_AV_HDMI_HDCP_OFF);
if (res == PS3AV_STATUS_UNSUPPORTED_HDMI_MODE)
dev_dbg(&ps3av->dev->core, "Not supported\n");
else if (res)
dev_dbg(&ps3av->dev->core,
"ps3av_cmd_av_hdmi_mode failed\n");
} else if (old_id & PS3AV_MODE_HDCP_OFF) {
res = ps3av_cmd_av_hdmi_mode(PS3AV_CMD_AV_HDMI_MODE_NORMAL);
if (res < 0 && res != PS3AV_STATUS_UNSUPPORTED_HDMI_MODE)
dev_dbg(&ps3av->dev->core,
"ps3av_cmd_av_hdmi_mode failed\n");
}
ps3av_set_videomode_packet(id);
msleep(1500);
/* av video mute */
ps3av_set_av_video_mute(PS3AV_CMD_MUTE_OFF);
}