From rcohen@snurgle.org Fri Oct 3 13:50:05 2008 From: Ross Cohen Date: Mon, 29 Sep 2008 22:36:24 -0400 Subject: Staging: go7007 v4l fixes To: gregkh@suse.de Message-ID: <20080930023624.GP9731@snurgle.org> Content-Disposition: inline Fix up some of the v4l issues that were recently changed to make the go7007 driver a bit cleaner. From: Ross Cohen Signed-off-by: Greg Kroah-Hartman --- drivers/staging/go7007/go7007-driver.c | 2 +- drivers/staging/go7007/go7007-v4l2.c | 12 ++++-------- drivers/staging/go7007/snd-go7007.c | 4 ++-- drivers/staging/go7007/wis-ov7640.c | 3 +-- drivers/staging/go7007/wis-saa7113.c | 25 ++++++++++--------------- drivers/staging/go7007/wis-saa7115.c | 29 ++++++++++++++--------------- drivers/staging/go7007/wis-sony-tuner.c | 3 ++- drivers/staging/go7007/wis-tw2804.c | 29 ++++++++++++++--------------- drivers/staging/go7007/wis-tw9903.c | 21 ++++++++++----------- drivers/staging/go7007/wis-uda1342.c | 2 +- 10 files changed, 59 insertions(+), 71 deletions(-) --- a/drivers/staging/go7007/go7007-driver.c +++ b/drivers/staging/go7007/go7007-driver.c @@ -31,7 +31,7 @@ #include #include #include -#include +#include #include #include --- a/drivers/staging/go7007/go7007-v4l2.c +++ b/drivers/staging/go7007/go7007-v4l2.c @@ -26,8 +26,7 @@ #include #include #include -#include -#include +#include #include #include #include @@ -835,7 +834,6 @@ static int go7007_do_ioctl(struct inode case VIDIOC_S_STD: { v4l2_std_id *std = arg; - int norm; if (go->streaming) return -EBUSY; @@ -856,20 +854,17 @@ static int go7007_do_ioctl(struct inode if (*std & V4L2_STD_NTSC) { go->standard = GO7007_STD_NTSC; go->sensor_framerate = 30000; - norm = VIDEO_MODE_NTSC; } else if (*std & V4L2_STD_PAL) { go->standard = GO7007_STD_PAL; go->sensor_framerate = 25025; - norm = VIDEO_MODE_PAL; } else if (*std & V4L2_STD_SECAM) { go->standard = GO7007_STD_PAL; go->sensor_framerate = 25025; - norm = VIDEO_MODE_SECAM; } else return -EINVAL; if (go->i2c_adapter_online) i2c_clients_command(&go->i2c_adapter, - DECODER_SET_NORM, &norm); + VIDIOC_S_STD, std); set_capture_size(go, NULL, 0); return 0; } @@ -933,7 +928,7 @@ static int go7007_do_ioctl(struct inode return -EBUSY; go->input = *input; 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); i2c_clients_command(&go->i2c_adapter, VIDIOC_S_AUDIO, &go->board_info->inputs[*input].audio_input); @@ -1459,6 +1454,7 @@ static struct file_operations go7007_fop static struct video_device go7007_template = { .name = "go7007", + .vfl_type = VID_TYPE_CAPTURE, .fops = &go7007_fops, .minor = -1, .release = go7007_vfl_release, --- a/drivers/staging/go7007/snd-go7007.c +++ b/drivers/staging/go7007/snd-go7007.c @@ -44,8 +44,8 @@ module_param_array(index, int, NULL, 044 module_param_array(id, charp, NULL, 0444); module_param_array(enable, bool, NULL, 0444); 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(index, "Enable for the go7007 audio driver"); +MODULE_PARM_DESC(id, "ID string for the go7007 audio driver"); +MODULE_PARM_DESC(enable, "Enable for the go7007 audio driver"); struct go7007_snd { struct snd_card *card; --- a/drivers/staging/go7007/wis-ov7640.c +++ b/drivers/staging/go7007/wis-ov7640.c @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include "wis-i2c.h" --- a/drivers/staging/go7007/wis-saa7113.c +++ b/drivers/staging/go7007/wis-saa7113.c @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include #include "wis-i2c.h" @@ -124,7 +123,7 @@ static int wis_saa7113_command(struct i2 struct wis_saa7113 *dec = i2c_get_clientdata(client); switch (cmd) { - case DECODER_SET_INPUT: + case VIDIOC_S_INPUT: { int *input = arg; @@ -133,23 +132,19 @@ static int wis_saa7113_command(struct i2 *input < 6 ? 0x40 : 0x80); break; } - case DECODER_SET_NORM: + case VIDIOC_S_STD: { - int *input = arg; + v4l2_std_id *input = arg; dec->norm = *input; - switch (dec->norm) { - case VIDEO_MODE_PAL: - write_reg(client, 0x0e, 0x01); - write_reg(client, 0x10, 0x48); - break; - case VIDEO_MODE_NTSC: + if (dec->norm & V4L2_STD_NTSC) { write_reg(client, 0x0e, 0x01); write_reg(client, 0x10, 0x40); - break; - case VIDEO_MODE_SECAM: + } else if (dec->norm & V4L2_STD_PAL) { + 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, 0x10, 0x48); - break; } break; } @@ -295,7 +290,7 @@ static int wis_saa7113_detect(struct i2c kfree(client); return -ENOMEM; } - dec->norm = VIDEO_MODE_NTSC; + dec->norm = V4L2_STD_NTSC; dec->brightness = 128; dec->contrast = 71; dec->saturation = 64; --- a/drivers/staging/go7007/wis-saa7115.c +++ b/drivers/staging/go7007/wis-saa7115.c @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include #include "wis-i2c.h" @@ -204,7 +203,7 @@ static int wis_saa7115_command(struct i2 struct wis_saa7115 *dec = i2c_get_clientdata(client); switch (cmd) { - case DECODER_SET_INPUT: + case VIDIOC_S_INPUT: { int *input = arg; @@ -222,7 +221,7 @@ static int wis_saa7115_command(struct i2 int h_scaling_increment = (704 / h_integer_scaler) * 1024 / res->width; /* 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; u8 regs[] = { 0x88, 0xc0, @@ -262,20 +261,20 @@ static int wis_saa7115_command(struct i2 write_regs(client, regs); break; } - case DECODER_SET_NORM: + case VIDIOC_S_STD: { - int *input = arg; + v4l2_std_id *input = arg; u8 regs[] = { 0x88, 0xc0, - 0x98, *input == VIDEO_MODE_NTSC ? 0x12 : 0x16, - 0x9a, *input == VIDEO_MODE_NTSC ? 0xf2 : 0x20, - 0x9b, *input == VIDEO_MODE_NTSC ? 0x00 : 0x01, - 0xc8, *input == VIDEO_MODE_NTSC ? 0x12 : 0x16, - 0xca, *input == VIDEO_MODE_NTSC ? 0xf2 : 0x20, - 0xcb, *input == VIDEO_MODE_NTSC ? 0x00 : 0x01, + 0x98, *input & V4L2_STD_NTSC ? 0x12 : 0x16, + 0x9a, *input & V4L2_STD_NTSC ? 0xf2 : 0x20, + 0x9b, *input & V4L2_STD_NTSC ? 0x00 : 0x01, + 0xc8, *input & V4L2_STD_NTSC ? 0x12 : 0x16, + 0xca, *input & V4L2_STD_NTSC ? 0xf2 : 0x20, + 0xcb, *input & V4L2_STD_NTSC ? 0x00 : 0x01, 0x88, 0xf0, - 0x30, *input == VIDEO_MODE_NTSC ? 0x66 : 0x00, - 0x31, *input == VIDEO_MODE_NTSC ? 0x90 : 0xe0, + 0x30, *input & V4L2_STD_NTSC ? 0x66 : 0x00, + 0x31, *input & V4L2_STD_NTSC ? 0x90 : 0xe0, 0, 0, }; write_regs(client, regs); @@ -424,7 +423,7 @@ static int wis_saa7115_detect(struct i2c kfree(client); return -ENOMEM; } - dec->norm = VIDEO_MODE_NTSC; + dec->norm = V4L2_STD_NTSC; dec->brightness = 128; dec->contrast = 64; dec->saturation = 64; --- a/drivers/staging/go7007/wis-sony-tuner.c +++ b/drivers/staging/go7007/wis-sony-tuner.c @@ -19,9 +19,10 @@ #include #include #include -#include +#include #include #include +#include #include "wis-i2c.h" --- a/drivers/staging/go7007/wis-tw2804.c +++ b/drivers/staging/go7007/wis-tw2804.c @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include #include "wis-i2c.h" @@ -159,20 +158,20 @@ static int wis_tw2804_command(struct i2c } switch (cmd) { - case DECODER_SET_NORM: + case VIDIOC_S_STD: { - int *input = arg; + v4l2_std_id *input = arg; u8 regs[] = { - 0x01, *input == VIDEO_MODE_NTSC ? 0xc4 : 0x84, - 0x09, *input == VIDEO_MODE_NTSC ? 0x07 : 0x04, - 0x0a, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, - 0x0b, *input == VIDEO_MODE_NTSC ? 0x07 : 0x04, - 0x0c, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, - 0x0d, *input == VIDEO_MODE_NTSC ? 0x40 : 0x4a, - 0x16, *input == VIDEO_MODE_NTSC ? 0x00 : 0x40, - 0x17, *input == VIDEO_MODE_NTSC ? 0x00 : 0x40, - 0x20, *input == VIDEO_MODE_NTSC ? 0x07 : 0x0f, - 0x21, *input == VIDEO_MODE_NTSC ? 0x07 : 0x0f, + 0x01, *input & V4L2_STD_NTSC ? 0xc4 : 0x84, + 0x09, *input & V4L2_STD_NTSC ? 0x07 : 0x04, + 0x0a, *input & V4L2_STD_NTSC ? 0xf0 : 0x20, + 0x0b, *input & V4L2_STD_NTSC ? 0x07 : 0x04, + 0x0c, *input & V4L2_STD_NTSC ? 0xf0 : 0x20, + 0x0d, *input & V4L2_STD_NTSC ? 0x40 : 0x4a, + 0x16, *input & V4L2_STD_NTSC ? 0x00 : 0x40, + 0x17, *input & V4L2_STD_NTSC ? 0x00 : 0x40, + 0x20, *input & V4L2_STD_NTSC ? 0x07 : 0x0f, + 0x21, *input & V4L2_STD_NTSC ? 0x07 : 0x0f, 0xff, 0xff, }; write_regs(client, regs, dec->channel); @@ -322,7 +321,7 @@ static int wis_tw2804_detect(struct i2c_ return -ENOMEM; } dec->channel = -1; - dec->norm = VIDEO_MODE_NTSC; + dec->norm = V4L2_STD_NTSC; dec->brightness = 128; dec->contrast = 128; dec->saturation = 128; --- a/drivers/staging/go7007/wis-tw9903.c +++ b/drivers/staging/go7007/wis-tw9903.c @@ -19,8 +19,7 @@ #include #include #include -#include -#include +#include #include #include "wis-i2c.h" @@ -106,7 +105,7 @@ static int wis_tw9903_command(struct i2c struct wis_tw9903 *dec = i2c_get_clientdata(client); switch (cmd) { - case DECODER_SET_INPUT: + case VIDIOC_S_INPUT: { int *input = arg; @@ -119,7 +118,7 @@ static int wis_tw9903_command(struct i2c struct video_decoder_resolution *res = arg; /*int hscale = 256 * 720 / res->width;*/ 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; u8 regs[] = { 0x0d, vscale & 0xff, @@ -134,14 +133,14 @@ static int wis_tw9903_command(struct i2c break; } #endif - case DECODER_SET_NORM: + case VIDIOC_S_STD: { - int *input = arg; + v4l2_std_id *input = arg; u8 regs[] = { - 0x05, *input == VIDEO_MODE_NTSC ? 0x80 : 0x00, - 0x07, *input == VIDEO_MODE_NTSC ? 0x02 : 0x12, - 0x08, *input == VIDEO_MODE_NTSC ? 0x14 : 0x18, - 0x09, *input == VIDEO_MODE_NTSC ? 0xf0 : 0x20, + 0x05, *input & V4L2_STD_NTSC ? 0x80 : 0x00, + 0x07, *input & V4L2_STD_NTSC ? 0x02 : 0x12, + 0x08, *input & V4L2_STD_NTSC ? 0x14 : 0x18, + 0x09, *input & V4L2_STD_NTSC ? 0xf0 : 0x20, 0, 0, }; write_regs(client, regs); @@ -297,7 +296,7 @@ static int wis_tw9903_detect(struct i2c_ kfree(client); return -ENOMEM; } - dec->norm = VIDEO_MODE_NTSC; + dec->norm = V4L2_STD_NTSC; dec->brightness = 0; dec->contrast = 0x60; dec->hue = 0; --- a/drivers/staging/go7007/wis-uda1342.c +++ b/drivers/staging/go7007/wis-uda1342.c @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include