mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
V4L/DVB (5836): dvb-ttpci: re-initialize aspect ratio and pan scan after arm crash
Re-initialize aspect ratio and pan scan after arm crash. Signed-off-by: Oliver Endriss <o.endriss@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
804b445894
commit
defd574ec0
@ -137,6 +137,15 @@ static void init_av7110_av(struct av7110 *av7110)
|
||||
if (ret < 0)
|
||||
printk("dvb-ttpci:cannot set internal volume to maximum:%d\n",ret);
|
||||
|
||||
ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetMonitorType,
|
||||
1, (u16) av7110->display_ar);
|
||||
if (ret < 0)
|
||||
printk("dvb-ttpci: unable to set aspect ratio\n");
|
||||
ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetPanScanType,
|
||||
1, av7110->display_panscan);
|
||||
if (ret < 0)
|
||||
printk("dvb-ttpci: unable to set pan scan\n");
|
||||
|
||||
ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetWSSConfig, 2, 2, wss_cfg_4_3);
|
||||
if (ret < 0)
|
||||
printk("dvb-ttpci: unable to configure 4:3 wss\n");
|
||||
@ -2639,12 +2648,12 @@ static int __devinit av7110_attach(struct saa7146_dev* dev,
|
||||
av7110->mixer.volume_left = volume;
|
||||
av7110->mixer.volume_right = volume;
|
||||
|
||||
init_av7110_av(av7110);
|
||||
|
||||
ret = av7110_register(av7110);
|
||||
if (ret < 0)
|
||||
goto err_arm_thread_stop_10;
|
||||
|
||||
init_av7110_av(av7110);
|
||||
|
||||
/* special case DVB-C: these cards have an analog tuner
|
||||
plus need some special handling, so we have separate
|
||||
saa7146_ext_vv data for these... */
|
||||
|
@ -194,6 +194,7 @@ struct av7110 {
|
||||
|
||||
int video_blank;
|
||||
struct video_status videostate;
|
||||
u16 display_panscan;
|
||||
int display_ar;
|
||||
int trickmode;
|
||||
#define TRICK_NONE 0
|
||||
|
@ -1082,19 +1082,18 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
|
||||
case VIDEO_SET_DISPLAY_FORMAT:
|
||||
{
|
||||
video_displayformat_t format = (video_displayformat_t) arg;
|
||||
u16 val = 0;
|
||||
|
||||
switch (format) {
|
||||
case VIDEO_PAN_SCAN:
|
||||
val = VID_PAN_SCAN_PREF;
|
||||
av7110->display_panscan = VID_PAN_SCAN_PREF;
|
||||
break;
|
||||
|
||||
case VIDEO_LETTER_BOX:
|
||||
val = VID_VC_AND_PS_PREF;
|
||||
av7110->display_panscan = VID_VC_AND_PS_PREF;
|
||||
break;
|
||||
|
||||
case VIDEO_CENTER_CUT_OUT:
|
||||
val = VID_CENTRE_CUT_PREF;
|
||||
av7110->display_panscan = VID_CENTRE_CUT_PREF;
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1104,7 +1103,7 @@ static int dvb_video_ioctl(struct inode *inode, struct file *file,
|
||||
break;
|
||||
av7110->videostate.display_format = format;
|
||||
ret = av7110_fw_cmd(av7110, COMTYPE_ENCODER, SetPanScanType,
|
||||
1, (u16) val);
|
||||
1, av7110->display_panscan);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1466,8 +1465,9 @@ int av7110_av_register(struct av7110 *av7110)
|
||||
av7110->videostate.play_state = VIDEO_STOPPED;
|
||||
av7110->videostate.stream_source = VIDEO_SOURCE_DEMUX;
|
||||
av7110->videostate.video_format = VIDEO_FORMAT_4_3;
|
||||
av7110->videostate.display_format = VIDEO_CENTER_CUT_OUT;
|
||||
av7110->videostate.display_format = VIDEO_LETTER_BOX;
|
||||
av7110->display_ar = VIDEO_FORMAT_4_3;
|
||||
av7110->display_panscan = VID_VC_AND_PS_PREF;
|
||||
|
||||
init_waitqueue_head(&av7110->video_events.wait_queue);
|
||||
spin_lock_init(&av7110->video_events.lock);
|
||||
|
Loading…
Reference in New Issue
Block a user