in ps3av.c [829:859]
int ps3av_set_video_mode(int id)
{
int size;
u32 option;
size = ARRAY_SIZE(video_mode_table);
if ((id & PS3AV_MODE_MASK) > size - 1 || id < 0) {
dev_dbg(&ps3av->dev->core, "%s: error id :%d\n", __func__, id);
return -EINVAL;
}
/* auto mode */
option = id & ~PS3AV_MODE_MASK;
if ((id & PS3AV_MODE_MASK) == PS3AV_MODE_AUTO) {
id = ps3av_auto_videomode(&ps3av->av_hw_conf);
if (id < 1) {
printk(KERN_ERR "%s: invalid id :%d\n", __func__, id);
return -EINVAL;
}
id |= option;
}
/* set videomode */
wait_for_completion(&ps3av->done);
ps3av->ps3av_mode_old = ps3av->ps3av_mode;
ps3av->ps3av_mode = id;
if (ps3av_set_videomode())
ps3av->ps3av_mode = ps3av->ps3av_mode_old;
return 0;
}