Commit df20d69e authored by Ross Cohen's avatar Ross Cohen Committed by Greg Kroah-Hartman

Staging: go7007 v4l fixes

Fix up some of the v4l issues that were recently changed to make the
go7007 driver a bit cleaner.


From: Ross Cohen <rcohen@snurgle.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d63d692a
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#include <linux/semaphore.h> #include <linux/semaphore.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <asm/system.h> #include <asm/system.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <media/tuner.h> #include <media/tuner.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
......
...@@ -26,8 +26,7 @@ ...@@ -26,8 +26,7 @@
#include <linux/time.h> #include <linux/time.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h> #include <media/v4l2-ioctl.h>
#include <linux/i2c.h> #include <linux/i2c.h>
...@@ -835,7 +834,6 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file, ...@@ -835,7 +834,6 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file,
case VIDIOC_S_STD: case VIDIOC_S_STD:
{ {
v4l2_std_id *std = arg; v4l2_std_id *std = arg;
int norm;
if (go->streaming) if (go->streaming)
return -EBUSY; return -EBUSY;
...@@ -856,20 +854,17 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file, ...@@ -856,20 +854,17 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file,
if (*std & V4L2_STD_NTSC) { if (*std & V4L2_STD_NTSC) {
go->standard = GO7007_STD_NTSC; go->standard = GO7007_STD_NTSC;
go->sensor_framerate = 30000; go->sensor_framerate = 30000;
norm = VIDEO_MODE_NTSC;
} else if (*std & V4L2_STD_PAL) { } else if (*std & V4L2_STD_PAL) {
go->standard = GO7007_STD_PAL; go->standard = GO7007_STD_PAL;
go->sensor_framerate = 25025; go->sensor_framerate = 25025;
norm = VIDEO_MODE_PAL;
} else if (*std & V4L2_STD_SECAM) { } else if (*std & V4L2_STD_SECAM) {
go->standard = GO7007_STD_PAL; go->standard = GO7007_STD_PAL;
go->sensor_framerate = 25025; go->sensor_framerate = 25025;
norm = VIDEO_MODE_SECAM;
} else } else
return -EINVAL; return -EINVAL;
if (go->i2c_adapter_online) if (go->i2c_adapter_online)
i2c_clients_command(&go->i2c_adapter, i2c_clients_command(&go->i2c_adapter,
DECODER_SET_NORM, &norm); VIDIOC_S_STD, std);
set_capture_size(go, NULL, 0); set_capture_size(go, NULL, 0);
return 0; return 0;
} }
...@@ -933,7 +928,7 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file, ...@@ -933,7 +928,7 @@ static int go7007_do_ioctl(struct inode *inode, struct file *file,
return -EBUSY; return -EBUSY;
go->input = *input; go->input = *input;
if (go->i2c_adapter_online) { if (go->i2c_adapter_online) {
i2c_clients_command(&go->i2c_adapter, DECODER_SET_INPUT, i2c_clients_command(&go->i2c_adapter, VIDIOC_S_INPUT,
&go->board_info->inputs[*input].video_input); &go->board_info->inputs[*input].video_input);
i2c_clients_command(&go->i2c_adapter, VIDIOC_S_AUDIO, i2c_clients_command(&go->i2c_adapter, VIDIOC_S_AUDIO,
&go->board_info->inputs[*input].audio_input); &go->board_info->inputs[*input].audio_input);
...@@ -1459,6 +1454,7 @@ static struct file_operations go7007_fops = { ...@@ -1459,6 +1454,7 @@ static struct file_operations go7007_fops = {
static struct video_device go7007_template = { static struct video_device go7007_template = {
.name = "go7007", .name = "go7007",
.vfl_type = VID_TYPE_CAPTURE,
.fops = &go7007_fops, .fops = &go7007_fops,
.minor = -1, .minor = -1,
.release = go7007_vfl_release, .release = go7007_vfl_release,
......
...@@ -44,8 +44,8 @@ module_param_array(index, int, NULL, 0444); ...@@ -44,8 +44,8 @@ module_param_array(index, int, NULL, 0444);
module_param_array(id, charp, NULL, 0444); module_param_array(id, charp, NULL, 0444);
module_param_array(enable, bool, NULL, 0444); module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(index, "Index value for the go7007 audio driver"); MODULE_PARM_DESC(index, "Index value for the go7007 audio driver");
MODULE_PARM_DESC(index, "ID string for the go7007 audio driver"); MODULE_PARM_DESC(id, "ID string for the go7007 audio driver");
MODULE_PARM_DESC(index, "Enable for the go7007 audio driver"); MODULE_PARM_DESC(enable, "Enable for the go7007 audio driver");
struct go7007_snd { struct go7007_snd {
struct snd_card *card; struct snd_card *card;
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include "wis-i2c.h" #include "wis-i2c.h"
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include "wis-i2c.h" #include "wis-i2c.h"
...@@ -124,7 +123,7 @@ static int wis_saa7113_command(struct i2c_client *client, ...@@ -124,7 +123,7 @@ static int wis_saa7113_command(struct i2c_client *client,
struct wis_saa7113 *dec = i2c_get_clientdata(client); struct wis_saa7113 *dec = i2c_get_clientdata(client);
switch (cmd) { switch (cmd) {
case DECODER_SET_INPUT: case VIDIOC_S_INPUT:
{ {
int *input = arg; int *input = arg;
...@@ -133,23 +132,19 @@ static int wis_saa7113_command(struct i2c_client *client, ...@@ -133,23 +132,19 @@ static int wis_saa7113_command(struct i2c_client *client,
*input < 6 ? 0x40 : 0x80); *input < 6 ? 0x40 : 0x80);
break; break;
} }
case DECODER_SET_NORM: case VIDIOC_S_STD:
{ {
int *input = arg; v4l2_std_id *input = arg;
dec->norm = *input; dec->norm = *input;
switch (dec->norm) { if (dec->norm & V4L2_STD_NTSC) {
case VIDEO_MODE_PAL:
write_reg(client, 0x0e, 0x01);
write_reg(client, 0x10, 0x48);
break;
case VIDEO_MODE_NTSC:
write_reg(client, 0x0e, 0x01); write_reg(client, 0x0e, 0x01);
write_reg(client, 0x10, 0x40); write_reg(client, 0x10, 0x40);
break; } else if (dec->norm & V4L2_STD_PAL) {
case VIDEO_MODE_SECAM: write_reg(client, 0x0e, 0x01);
write_reg(client, 0x10, 0x48);
} else if (dec->norm * V4L2_STD_SECAM) {
write_reg(client, 0x0e, 0x50); write_reg(client, 0x0e, 0x50);
write_reg(client, 0x10, 0x48); write_reg(client, 0x10, 0x48);
break;
} }
break; break;
} }
...@@ -295,7 +290,7 @@ static int wis_saa7113_detect(struct i2c_adapter *adapter, int addr, int kind) ...@@ -295,7 +290,7 @@ static int wis_saa7113_detect(struct i2c_adapter *adapter, int addr, int kind)
kfree(client); kfree(client);
return -ENOMEM; return -ENOMEM;
} }
dec->norm = VIDEO_MODE_NTSC; dec->norm = V4L2_STD_NTSC;
dec->brightness = 128; dec->brightness = 128;
dec->contrast = 71; dec->contrast = 71;
dec->saturation = 64; dec->saturation = 64;
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include "wis-i2c.h" #include "wis-i2c.h"
...@@ -204,7 +203,7 @@ static int wis_saa7115_command(struct i2c_client *client, ...@@ -204,7 +203,7 @@ static int wis_saa7115_command(struct i2c_client *client,
struct wis_saa7115 *dec = i2c_get_clientdata(client); struct wis_saa7115 *dec = i2c_get_clientdata(client);
switch (cmd) { switch (cmd) {
case DECODER_SET_INPUT: case VIDIOC_S_INPUT:
{ {
int *input = arg; int *input = arg;
...@@ -222,7 +221,7 @@ static int wis_saa7115_command(struct i2c_client *client, ...@@ -222,7 +221,7 @@ static int wis_saa7115_command(struct i2c_client *client,
int h_scaling_increment = (704 / h_integer_scaler) * int h_scaling_increment = (704 / h_integer_scaler) *
1024 / res->width; 1024 / res->width;
/* Fine-grained scaler only */ /* Fine-grained scaler only */
int v_scaling_increment = (dec->norm == VIDEO_MODE_NTSC ? int v_scaling_increment = (dec->norm & V4L2_STD_NTSC ?
240 : 288) * 1024 / res->height; 240 : 288) * 1024 / res->height;
u8 regs[] = { u8 regs[] = {
0x88, 0xc0, 0x88, 0xc0,
...@@ -262,20 +261,20 @@ static int wis_saa7115_command(struct i2c_client *client, ...@@ -262,20 +261,20 @@ static int wis_saa7115_command(struct i2c_client *client,
write_regs(client, regs); write_regs(client, regs);
break; break;
} }
case DECODER_SET_NORM: case VIDIOC_S_STD:
{ {
int *input = arg; v4l2_std_id *input = arg;
u8 regs[] = { u8 regs[] = {
0x88, 0xc0, 0x88, 0xc0,
0x98, *input == VIDEO_MODE_NTSC ? 0x12 : 0x16, 0x98, *input & V4L2_STD_NTSC ? 0x12 : 0x16,
0x9a, *input == VIDEO_MODE_NTSC ? 0xf2 : 0x20, 0x9a, *input & V4L2_STD_NTSC ? 0xf2 : 0x20,
0x9b, *input == VIDEO_MODE_NTSC ? 0x00 : 0x01, 0x9b, *input & V4L2_STD_NTSC ? 0x00 : 0x01,
0xc8, *input == VIDEO_MODE_NTSC ? 0x12 : 0x16, 0xc8, *input & V4L2_STD_NTSC ? 0x12 : 0x16,
0xca, *input == VIDEO_MODE_NTSC ? 0xf2 : 0x20, 0xca, *input & V4L2_STD_NTSC ? 0xf2 : 0x20,
0xcb, *input == VIDEO_MODE_NTSC ? 0x00 : 0x01, 0xcb, *input & V4L2_STD_NTSC ? 0x00 : 0x01,
0x88, 0xf0, 0x88, 0xf0,
0x30, *input == VIDEO_MODE_NTSC ? 0x66 : 0x00, 0x30, *input & V4L2_STD_NTSC ? 0x66 : 0x00,
0x31, *input == VIDEO_MODE_NTSC ? 0x90 : 0xe0, 0x31, *input & V4L2_STD_NTSC ? 0x90 : 0xe0,
0, 0, 0, 0,
}; };
write_regs(client, regs); write_regs(client, regs);
...@@ -424,7 +423,7 @@ static int wis_saa7115_detect(struct i2c_adapter *adapter, int addr, int kind) ...@@ -424,7 +423,7 @@ static int wis_saa7115_detect(struct i2c_adapter *adapter, int addr, int kind)
kfree(client); kfree(client);
return -ENOMEM; return -ENOMEM;
} }
dec->norm = VIDEO_MODE_NTSC; dec->norm = V4L2_STD_NTSC;
dec->brightness = 128; dec->brightness = 128;
dec->contrast = 64; dec->contrast = 64;
dec->saturation = 64; dec->saturation = 64;
......
...@@ -19,9 +19,10 @@ ...@@ -19,9 +19,10 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <media/tuner.h> #include <media/tuner.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include "wis-i2c.h" #include "wis-i2c.h"
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include "wis-i2c.h" #include "wis-i2c.h"
...@@ -159,20 +158,20 @@ static int wis_tw2804_command(struct i2c_client *client, ...@@ -159,20 +158,20 @@ static int wis_tw2804_command(struct i2c_client *client,
} }
switch (cmd) { switch (cmd) {
case DECODER_SET_NORM: case VIDIOC_S_STD:
{ {
int *input = arg; v4l2_std_id *input = arg;
u8 regs[] = { u8 regs[] = {
0x01, *input == VIDEO_MODE_NTSC ? 0xc4 : 0x84, 0x01, *input & V4L2_STD_NTSC ? 0xc4 : 0x84,
0x09, *input == VIDEO_MODE_NTSC ? 0x07 : 0x04, 0x09, *input & V4L2_STD_NTSC ? 0x07 : 0x04,
0x0a, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, 0x0a, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
0x0b, *input == VIDEO_MODE_NTSC ? 0x07 : 0x04, 0x0b, *input & V4L2_STD_NTSC ? 0x07 : 0x04,
0x0c, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, 0x0c, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
0x0d, *input == VIDEO_MODE_NTSC ? 0x40 : 0x4a, 0x0d, *input & V4L2_STD_NTSC ? 0x40 : 0x4a,
0x16, *input == VIDEO_MODE_NTSC ? 0x00 : 0x40, 0x16, *input & V4L2_STD_NTSC ? 0x00 : 0x40,
0x17, *input == VIDEO_MODE_NTSC ? 0x00 : 0x40, 0x17, *input & V4L2_STD_NTSC ? 0x00 : 0x40,
0x20, *input == VIDEO_MODE_NTSC ? 0x07 : 0x0f, 0x20, *input & V4L2_STD_NTSC ? 0x07 : 0x0f,
0x21, *input == VIDEO_MODE_NTSC ? 0x07 : 0x0f, 0x21, *input & V4L2_STD_NTSC ? 0x07 : 0x0f,
0xff, 0xff, 0xff, 0xff,
}; };
write_regs(client, regs, dec->channel); write_regs(client, regs, dec->channel);
...@@ -322,7 +321,7 @@ static int wis_tw2804_detect(struct i2c_adapter *adapter, int addr, int kind) ...@@ -322,7 +321,7 @@ static int wis_tw2804_detect(struct i2c_adapter *adapter, int addr, int kind)
return -ENOMEM; return -ENOMEM;
} }
dec->channel = -1; dec->channel = -1;
dec->norm = VIDEO_MODE_NTSC; dec->norm = V4L2_STD_NTSC;
dec->brightness = 128; dec->brightness = 128;
dec->contrast = 128; dec->contrast = 128;
dec->saturation = 128; dec->saturation = 128;
......
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <linux/video_decoder.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include "wis-i2c.h" #include "wis-i2c.h"
...@@ -106,7 +105,7 @@ static int wis_tw9903_command(struct i2c_client *client, ...@@ -106,7 +105,7 @@ static int wis_tw9903_command(struct i2c_client *client,
struct wis_tw9903 *dec = i2c_get_clientdata(client); struct wis_tw9903 *dec = i2c_get_clientdata(client);
switch (cmd) { switch (cmd) {
case DECODER_SET_INPUT: case VIDIOC_S_INPUT:
{ {
int *input = arg; int *input = arg;
...@@ -119,7 +118,7 @@ static int wis_tw9903_command(struct i2c_client *client, ...@@ -119,7 +118,7 @@ static int wis_tw9903_command(struct i2c_client *client,
struct video_decoder_resolution *res = arg; struct video_decoder_resolution *res = arg;
/*int hscale = 256 * 720 / res->width;*/ /*int hscale = 256 * 720 / res->width;*/
int hscale = 256 * 720 / (res->width - (res->width > 704 ? 0 : 8)); int hscale = 256 * 720 / (res->width - (res->width > 704 ? 0 : 8));
int vscale = 256 * (dec->norm == VIDEO_MODE_NTSC ? 240 : 288) int vscale = 256 * (dec->norm & V4L2_STD_NTSC ? 240 : 288)
/ res->height; / res->height;
u8 regs[] = { u8 regs[] = {
0x0d, vscale & 0xff, 0x0d, vscale & 0xff,
...@@ -134,14 +133,14 @@ static int wis_tw9903_command(struct i2c_client *client, ...@@ -134,14 +133,14 @@ static int wis_tw9903_command(struct i2c_client *client,
break; break;
} }
#endif #endif
case DECODER_SET_NORM: case VIDIOC_S_STD:
{ {
int *input = arg; v4l2_std_id *input = arg;
u8 regs[] = { u8 regs[] = {
0x05, *input == VIDEO_MODE_NTSC ? 0x80 : 0x00, 0x05, *input & V4L2_STD_NTSC ? 0x80 : 0x00,
0x07, *input == VIDEO_MODE_NTSC ? 0x02 : 0x12, 0x07, *input & V4L2_STD_NTSC ? 0x02 : 0x12,
0x08, *input == VIDEO_MODE_NTSC ? 0x14 : 0x18, 0x08, *input & V4L2_STD_NTSC ? 0x14 : 0x18,
0x09, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, 0x09, *input & V4L2_STD_NTSC ? 0xf0 : 0x20,
0, 0, 0, 0,
}; };
write_regs(client, regs); write_regs(client, regs);
...@@ -297,7 +296,7 @@ static int wis_tw9903_detect(struct i2c_adapter *adapter, int addr, int kind) ...@@ -297,7 +296,7 @@ static int wis_tw9903_detect(struct i2c_adapter *adapter, int addr, int kind)
kfree(client); kfree(client);
return -ENOMEM; return -ENOMEM;
} }
dec->norm = VIDEO_MODE_NTSC; dec->norm = V4L2_STD_NTSC;
dec->brightness = 0; dec->brightness = 0;
dec->contrast = 0x60; dec->contrast = 0x60;
dec->hue = 0; dec->hue = 0;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/version.h> #include <linux/version.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/videodev.h> #include <linux/videodev2.h>
#include <media/tvaudio.h> #include <media/tvaudio.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment