[media] solo6x10: fix broken PAL support
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 13 Jan 2014 09:58:12 +0000 (06:58 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Mon, 13 Jan 2014 13:21:56 +0000 (11:21 -0200)
The video_type was never set correctly for PAL: it's not a bool, instead
it is a register value.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
Reported-by: tomdev@freenet.de
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/staging/media/solo6x10/solo6x10-v4l2-enc.c
drivers/staging/media/solo6x10/solo6x10-v4l2.c
drivers/staging/media/solo6x10/solo6x10.h

index d582c5b84c14cc2c8821d9a982ba47746187cf76..ce9e5aaf7fd49f65104200befe0d19c2f89d743b 100644 (file)
@@ -964,7 +964,7 @@ static int solo_enc_s_std(struct file *file, void *priv, v4l2_std_id std)
 {
        struct solo_enc_dev *solo_enc = video_drvdata(file);
 
-       return solo_set_video_type(solo_enc->solo_dev, std & V4L2_STD_PAL);
+       return solo_set_video_type(solo_enc->solo_dev, std & V4L2_STD_625_50);
 }
 
 static int solo_enum_framesizes(struct file *file, void *priv,
index 7b26de3488da16d3f70bb99079ccc3d5a80af98f..47e72dac9b13652c6eb6a1d063f69e7da0aa0ead 100644 (file)
@@ -527,7 +527,7 @@ static int solo_g_std(struct file *file, void *priv, v4l2_std_id *i)
        return 0;
 }
 
-int solo_set_video_type(struct solo_dev *solo_dev, bool type)
+int solo_set_video_type(struct solo_dev *solo_dev, bool is_50hz)
 {
        int i;
 
@@ -537,7 +537,8 @@ int solo_set_video_type(struct solo_dev *solo_dev, bool type)
        for (i = 0; i < solo_dev->nr_chans; i++)
                if (vb2_is_busy(&solo_dev->v4l2_enc[i]->vidq))
                        return -EBUSY;
-       solo_dev->video_type = type;
+       solo_dev->video_type = is_50hz ? SOLO_VO_FMT_TYPE_PAL :
+                                        SOLO_VO_FMT_TYPE_NTSC;
        /* Reconfigure for the new standard */
        solo_disp_init(solo_dev);
        solo_enc_init(solo_dev);
@@ -551,7 +552,7 @@ static int solo_s_std(struct file *file, void *priv, v4l2_std_id std)
 {
        struct solo_dev *solo_dev = video_drvdata(file);
 
-       return solo_set_video_type(solo_dev, std & V4L2_STD_PAL);
+       return solo_set_video_type(solo_dev, std & V4L2_STD_625_50);
 }
 
 static int solo_s_ctrl(struct v4l2_ctrl *ctrl)
index f1bbb8cb74e69db4fcc2d327c745d7e261f685f6..8964f8be158e95dfcb0d60a075e4325371c977e5 100644 (file)
@@ -398,7 +398,7 @@ int solo_p2m_dma_desc(struct solo_dev *solo_dev,
                      int desc_cnt);
 
 /* Global s_std ioctl */
-int solo_set_video_type(struct solo_dev *solo_dev, bool type);
+int solo_set_video_type(struct solo_dev *solo_dev, bool is_50hz);
 void solo_update_mode(struct solo_enc_dev *solo_enc);
 
 /* Set the threshold for motion detection */