Commit 39f0d8af authored by 邱宗炽's avatar 邱宗炽

code format clean

Signed-off-by: default avatar邱宗炽 <tqiu@neuros.com.cn>
parent f4f06deb
...@@ -156,8 +156,7 @@ static irqreturn_t vpfe_isr(int irq, void *dev_id) ...@@ -156,8 +156,7 @@ static irqreturn_t vpfe_isr(int irq, void *dev_id)
/* based on whether the two fields are stored interleavely */ /* based on whether the two fields are stored interleavely */
/* or separately in memory, reconfigure the CCDC memory address */ /* or separately in memory, reconfigure the CCDC memory address */
if (vpfe->field == V4L2_FIELD_SEQ_TB) { if (vpfe->field == V4L2_FIELD_SEQ_TB) {
u32 addr = u32 addr = vpfe->curFrm->boff + vpfe->field_offset;
vpfe->curFrm->boff + vpfe->field_offset;
ccdc_setfbaddr((unsigned long)addr); ccdc_setfbaddr((unsigned long)addr);
} }
} else if (fid == 1) { } else if (fid == 1) {
...@@ -171,14 +170,12 @@ static irqreturn_t vpfe_isr(int irq, void *dev_id) ...@@ -171,14 +170,12 @@ static irqreturn_t vpfe_isr(int irq, void *dev_id)
struct videobuf_buffer, queue); struct videobuf_buffer, queue);
list_del(&vpfe->nextFrm->queue); list_del(&vpfe->nextFrm->queue);
vpfe->nextFrm->state = STATE_ACTIVE; vpfe->nextFrm->state = STATE_ACTIVE;
ccdc_setfbaddr( ccdc_setfbaddr((unsigned long)vpfe->nextFrm->boff);
(unsigned long)vpfe->nextFrm->boff);
} }
if (vpfe->mode_changed) { if (vpfe->mode_changed) {
ccdc_setwin(&vpfe->ccdc_params); ccdc_setwin(&vpfe->ccdc_params);
/* update the field offset */ /* update the field offset */
vpfe->field_offset = vpfe->field_offset = (vpfe->vwin.height - 2) * vpfe->vwin.width;
(vpfe->vwin.height - 2) * vpfe->vwin.width;
vpfe->mode_changed = FALSE; vpfe->mode_changed = FALSE;
} }
} }
...@@ -348,8 +345,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -348,8 +345,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
switch (cmd) { switch (cmd) {
case VIDIOC_QUERYCAP: case VIDIOC_QUERYCAP:
{ {
struct v4l2_capability *cap = struct v4l2_capability *cap = (struct v4l2_capability *)arg;
(struct v4l2_capability *)arg;
memset(cap, 0, sizeof(*cap)); memset(cap, 0, sizeof(*cap));
*cap = vpfe_drvcap; *cap = vpfe_drvcap;
break; break;
...@@ -363,13 +359,11 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -363,13 +359,11 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
if (index == 0) { if (index == 0) {
/* only yuv4:2:2 format is supported at this point */ /* only yuv4:2:2 format is supported at this point */
fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
strcpy(fmt->description, strcpy(fmt->description, "YCbCr4:2:2 Interleaved UYUV");
"YCbCr4:2:2 Interleaved UYUV");
fmt->pixelformat = V4L2_PIX_FMT_UYVY; fmt->pixelformat = V4L2_PIX_FMT_UYVY;
} else if (index == 1) { } else if (index == 1) {
fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
strcpy(fmt->description, strcpy(fmt->description, "YCbCr4:2:2 Interleaved YUYV");
"YCbCr4:2:2 Interleaved YUYV");
fmt->pixelformat = V4L2_PIX_FMT_YUYV; fmt->pixelformat = V4L2_PIX_FMT_YUYV;
} else { } else {
ret = -EINVAL; ret = -EINVAL;
...@@ -389,8 +383,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -389,8 +383,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
pixfmt->field = vpfe->field; pixfmt->field = vpfe->field;
pixfmt->pixelformat = vpfe->pixelfmt; pixfmt->pixelformat = vpfe->pixelfmt;
pixfmt->bytesperline = pixfmt->width * 2; pixfmt->bytesperline = pixfmt->width * 2;
pixfmt->sizeimage = pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
pixfmt->bytesperline * pixfmt->height;
pixfmt->colorspace = V4L2_COLORSPACE_SMPTE170M; pixfmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
up(&vpfe->lock); up(&vpfe->lock);
} }
...@@ -412,10 +405,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -412,10 +405,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
up(&vpfe->lock); up(&vpfe->lock);
break; break;
} }
if ((pixfmt->width + vpfe->vwin.left <= if ((pixfmt->width + vpfe->vwin.left <= vpfe->bounds.width) &
vpfe->bounds.width) (pixfmt->height + vpfe->vwin.top <= vpfe->bounds.height)) {
& (pixfmt->height + vpfe->vwin.top <=
vpfe->bounds.height)) {
/* this is the case when no scaling is supported */ /* this is the case when no scaling is supported */
/* crop window is directed modified */ /* crop window is directed modified */
vpfe->vwin.height = pixfmt->height; vpfe->vwin.height = pixfmt->height;
...@@ -439,8 +430,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -439,8 +430,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
up(&vpfe->lock); up(&vpfe->lock);
break; break;
} }
if (pixfmt->field == V4L2_FIELD_NONE if (pixfmt->field == V4L2_FIELD_NONE ||
|| pixfmt->field == V4L2_FIELD_INTERLACED) { pixfmt->field == V4L2_FIELD_INTERLACED) {
params->buf_type = CCDC_BUFTYPE_FLD_INTERLEAVED; params->buf_type = CCDC_BUFTYPE_FLD_INTERLEAVED;
vpfe->field = pixfmt->field; vpfe->field = pixfmt->field;
} else if (pixfmt->field == V4L2_FIELD_SEQ_TB) { } else if (pixfmt->field == V4L2_FIELD_SEQ_TB) {
...@@ -462,11 +453,10 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -462,11 +453,10 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
ret = -EINVAL; ret = -EINVAL;
} else { } else {
struct v4l2_pix_format *pixfmt = &fmt->fmt.pix; struct v4l2_pix_format *pixfmt = &fmt->fmt.pix;
if (pixfmt->width > vpfe->bounds.width if (pixfmt->width > vpfe->bounds.width ||
|| pixfmt->height > vpfe->bounds.height pixfmt->height > vpfe->bounds.height ||
|| (pixfmt->pixelformat != V4L2_PIX_FMT_UYVY (pixfmt->pixelformat != V4L2_PIX_FMT_UYVY &&
&& pixfmt->pixelformat != pixfmt->pixelformat != V4L2_PIX_FMT_YUYV)) {
V4L2_PIX_FMT_YUYV)) {
ret = -EINVAL; ret = -EINVAL;
} }
} }
...@@ -531,9 +521,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -531,9 +521,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->capture_params.mode = id; vpfe->capture_params.mode = id;
vpfe->capture_params.squarepixel = sqp; vpfe->capture_params.squarepixel = sqp;
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, &vpfe->capture_params);
VPFE_CMD_CONFIG_CAPTURE,
&vpfe->capture_params);
up(&vpfe->lock); up(&vpfe->lock);
break; break;
...@@ -624,8 +612,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -624,8 +612,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
} }
case VIDIOC_CROPCAP: case VIDIOC_CROPCAP:
{ {
struct v4l2_cropcap *cropcap = struct v4l2_cropcap *cropcap = (struct v4l2_cropcap *)arg;
(struct v4l2_cropcap *)arg;
cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
cropcap->bounds = cropcap->defrect = vpfe->vwin; cropcap->bounds = cropcap->defrect = vpfe->vwin;
...@@ -635,16 +622,13 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -635,16 +622,13 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
} }
case VIDIOC_G_PARM: case VIDIOC_G_PARM:
{ {
struct v4l2_streamparm *parm = struct v4l2_streamparm *parm = (struct v4l2_streamparm *)arg;
(struct v4l2_streamparm *)arg;
if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) { if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) {
/* only capture is supported */ /* only capture is supported */
ret = -EINVAL; ret = -EINVAL;
} else { } else {
struct v4l2_captureparm *capparm = struct v4l2_captureparm *capparm = &parm->parm.capture;
&parm->parm.capture; memset(capparm, 0, sizeof(struct v4l2_captureparm));
memset(capparm, 0,
sizeof(struct v4l2_captureparm));
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
if (vpfe->std & V4L2_STD_625_50) { if (vpfe->std & V4L2_STD_625_50) {
capparm->timeperframe.numerator = 1; capparm->timeperframe.numerator = 1;
...@@ -661,24 +645,21 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -661,24 +645,21 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
case VIDIOC_G_CTRL: case VIDIOC_G_CTRL:
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_G_CTRL, arg);
VIDIOC_G_CTRL, arg);
up(&vpfe->lock); up(&vpfe->lock);
break; break;
case VIDIOC_S_CTRL: case VIDIOC_S_CTRL:
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_S_CTRL, arg);
VIDIOC_S_CTRL, arg);
up(&vpfe->lock); up(&vpfe->lock);
break; break;
case VIDIOC_QUERYCTRL: case VIDIOC_QUERYCTRL:
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_QUERYCTRL, arg);
VIDIOC_QUERYCTRL, arg);
up(&vpfe->lock); up(&vpfe->lock);
break; break;
...@@ -704,11 +685,9 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -704,11 +685,9 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
crop->c.width = ((crop->c.width + 15 )/16 ) * 16; crop->c.width = ((crop->c.width + 15 )/16 ) * 16;
/* make sure parameters are valid */ /* make sure parameters are valid */
if (crop->type == V4L2_BUF_TYPE_VIDEO_CAPTURE if (crop->type == V4L2_BUF_TYPE_VIDEO_CAPTURE &&
&& (crop->c.left + crop->c.width (crop->c.left + crop->c.width <= vpfe->bounds.left + vpfe->bounds.width) &&
<= vpfe->bounds.left + vpfe->bounds.width) (crop->c.top + crop->c.height <= vpfe->bounds.top + vpfe->bounds.height)) {
&& (crop->c.top + crop->c.height
<= vpfe->bounds.top + vpfe->bounds.height)) {
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
vpfe->vwin = crop->c; vpfe->vwin = crop->c;
...@@ -724,8 +703,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -724,8 +703,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
v4l2_std_id *id = (v4l2_std_id *) arg; v4l2_std_id *id = (v4l2_std_id *) arg;
down_interruptible(&vpfe->lock); down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_QUERYSTD, id);
VIDIOC_QUERYSTD, id);
up(&vpfe->lock); up(&vpfe->lock);
break; break;
...@@ -798,17 +776,14 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -798,17 +776,14 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
} }
debug_print(KERN_INFO "cur frame %x.\n", debug_print(KERN_INFO "cur frame %x.\n",
vpfe->dma_queue.next); vpfe->dma_queue.next);
vpfe->nextFrm = vpfe->curFrm = vpfe->nextFrm = vpfe->curFrm = list_entry(vpfe->dma_queue.next,
list_entry(vpfe->dma_queue.next,
struct videobuf_buffer, queue); struct videobuf_buffer, queue);
/* remove the buffer from the queue */ /* remove the buffer from the queue */
list_del(&vpfe->curFrm->queue); list_del(&vpfe->curFrm->queue);
vpfe->curFrm->state = STATE_ACTIVE; vpfe->curFrm->state = STATE_ACTIVE;
/* sense the current video input standard */ /* sense the current video input standard */
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, &vpfe->capture_params);
VPFE_CMD_CONFIG_CAPTURE,
&vpfe->capture_params);
if (ret < 0) if (ret < 0)
break; break;
/* configure the ccdc and resizer as needed */ /* configure the ccdc and resizer as needed */
...@@ -820,8 +795,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -820,8 +795,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->field_id = 0; vpfe->field_id = 0;
vpfe->started = TRUE; vpfe->started = TRUE;
vpfe->mode_changed = FALSE; vpfe->mode_changed = FALSE;
vpfe->field_offset = vpfe->field_offset = (vpfe->vwin.height - 2) * vpfe->vwin.width;
(vpfe->vwin.height - 2) * vpfe->vwin.width;
ccdc_enable(TRUE); ccdc_enable(TRUE);
up(&vpfe->lock); up(&vpfe->lock);
debug_print(KERN_INFO "started video streaming.\n"); debug_print(KERN_INFO "started video streaming.\n");
...@@ -860,8 +834,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -860,8 +834,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->vwin = params->win; vpfe->vwin = params->win;
if (params->buf_type == CCDC_BUFTYPE_FLD_INTERLEAVED) { if (params->buf_type == CCDC_BUFTYPE_FLD_INTERLEAVED) {
vpfe->field = V4L2_FIELD_INTERLACED; vpfe->field = V4L2_FIELD_INTERLACED;
} else if (params->buf_type == } else if (params->buf_type == CCDC_BUFTYPE_FLD_SEPARATED) {
CCDC_BUFTYPE_FLD_SEPARATED) {
vpfe->field = V4L2_FIELD_SEQ_TB; vpfe->field = V4L2_FIELD_SEQ_TB;
} }
if (params->pix_order == CCDC_PIXORDER_YCBYCR) { if (params->pix_order == CCDC_PIXORDER_YCBYCR) {
...@@ -877,8 +850,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -877,8 +850,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
{ {
/* the settings here must be consistant with that of the CCDC's, /* the settings here must be consistant with that of the CCDC's,
driver does not check the consistancy */ driver does not check the consistancy */
struct vpfe_capture_params *params = struct vpfe_capture_params *params = (struct vpfe_capture_param *) arg;
(struct vpfe_capture_param *) arg;
v4l2_std_id std = 0; v4l2_std_id std = 0;
if(vpfe->started){ if(vpfe->started){
/* only allowed if streaming is not started */ /* only allowed if streaming is not started */
...@@ -906,9 +878,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file, ...@@ -906,9 +878,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->pixelaspect = sp_aspect; vpfe->pixelaspect = sp_aspect;
} }
vpfe->std = std; vpfe->std = std;
ret = DEVICE_CMD(ACTIVE_DEVICE(), ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, params);
VPFE_CMD_CONFIG_CAPTURE,
params);
vpfe->capture_params = *params; vpfe->capture_params = *params;
up(&vpfe->lock); up(&vpfe->lock);
break; break;
...@@ -1190,8 +1160,7 @@ static int vpfe_init(void) ...@@ -1190,8 +1160,7 @@ static int vpfe_init(void)
void *mem; void *mem;
/* allocate memory at initialization time to guarentee availability */ /* allocate memory at initialization time to guarentee availability */
for (i = 0; i < VPFE_DEFNUM_FBUFS; i++) { for (i = 0; i < VPFE_DEFNUM_FBUFS; i++) {
mem = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA, mem = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA, VPFE_MAX_FBUF_ORDER);
VPFE_MAX_FBUF_ORDER);
if (mem) { if (mem) {
unsigned long adr = (unsigned long)mem; unsigned long adr = (unsigned long)mem;
u32 size = PAGE_SIZE << VPFE_MAX_FBUF_ORDER; u32 size = PAGE_SIZE << VPFE_MAX_FBUF_ORDER;
...@@ -1203,15 +1172,13 @@ static int vpfe_init(void) ...@@ -1203,15 +1172,13 @@ static int vpfe_init(void)
size -= PAGE_SIZE; size -= PAGE_SIZE;
} }
vpfe_device.fbuffers[i] = (u8 *) mem; vpfe_device.fbuffers[i] = (u8 *) mem;
debug_print(KERN_INFO "memory address %d\t%x\n", i, debug_print(KERN_INFO "memory address %d\t%x\n", i, mem);
mem);
} else { } else {
while (--i >= 0) { while (--i >= 0) {
free_pages((unsigned long)vpfe_device.fbuffers[i], free_pages((unsigned long)vpfe_device.fbuffers[i],
VPFE_MAX_FBUF_ORDER); VPFE_MAX_FBUF_ORDER);
} }
debug_print(KERN_INFO debug_print(KERN_INFO "frame buffer memory allocation failed.\n");
"frame buffer memory allocation failed.\n");
return -ENOMEM; return -ENOMEM;
} }
} }
......
...@@ -136,15 +136,15 @@ static inline void tvp5150_write(struct i2c_client *c, unsigned char addr, ...@@ -136,15 +136,15 @@ static inline void tvp5150_write(struct i2c_client *c, unsigned char addr,
static void dump_reg_range(struct i2c_client *c, char *s, u8 init, const u8 end,int max_line) static void dump_reg_range(struct i2c_client *c, char *s, u8 init, const u8 end,int max_line)
{ {
int i=0; int i = 0;
while (init!=(u8)(end+1)) { while (init != (u8)(end + 1)) {
if ((i%max_line) == 0) { if ((i % max_line) == 0) {
if (i>0) if (i > 0)
printk("\n"); printk("\n");
printk("tvp5150: %s reg 0x%02x = ",s,init); printk("tvp5150: %s reg 0x%02x = ", s, init);
} }
printk("%02x ",tvp5150_read(c, init)); printk("%02x ", tvp5150_read(c, init));
init++; init++;
i++; i++;
...@@ -291,7 +291,7 @@ static void dump_reg(struct i2c_client *c) ...@@ -291,7 +291,7 @@ static void dump_reg(struct i2c_client *c)
static inline void tvp5150_selmux(struct i2c_client *c) static inline void tvp5150_selmux(struct i2c_client *c)
{ {
int opmode=0; int opmode = 0;
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
int input = 0; int input = 0;
...@@ -311,7 +311,7 @@ static inline void tvp5150_selmux(struct i2c_client *c) ...@@ -311,7 +311,7 @@ static inline void tvp5150_selmux(struct i2c_client *c)
case TVP5150_SVIDEO: case TVP5150_SVIDEO:
default: default:
input |= 1; input |= 1;
opmode=0; /* Auto Mode */ opmode = 0; /* Auto Mode */
break; break;
} }
...@@ -331,161 +331,63 @@ struct i2c_reg_value { ...@@ -331,161 +331,63 @@ struct i2c_reg_value {
/* Default values as sugested at TVP5150AM1 datasheet */ /* Default values as sugested at TVP5150AM1 datasheet */
static const struct i2c_reg_value tvp5150_init_default[] = { static const struct i2c_reg_value tvp5150_init_default[] = {
{ /* 0x00 */ { TVP5150_VD_IN_SRC_SEL_1, 0x00 }, /* 0x00 */
TVP5150_VD_IN_SRC_SEL_1,0x00 { TVP5150_ANAL_CHL_CTL, 0x15 }, /* 0x01 */
}, { TVP5150_OP_MODE_CTL, 0x00 }, /* 0x02 */
{ /* 0x01 */ { TVP5150_MISC_CTL, 0x01 }, /* 0x03 */
TVP5150_ANAL_CHL_CTL,0x15 { TVP5150_COLOR_KIL_THSH_CTL, 0x10 }, /* 0x06 */
}, { TVP5150_LUMA_PROC_CTL_1, 0x60 }, /* 0x07 */
{ /* 0x02 */ { TVP5150_LUMA_PROC_CTL_2, 0x00 }, /* 0x08 */
TVP5150_OP_MODE_CTL,0x00 { TVP5150_BRIGHT_CTL, 0x80 }, /* 0x09 */
}, { TVP5150_SATURATION_CTL, 0x80 }, /* 0x0a */
{ /* 0x03 */ { TVP5150_HUE_CTL, 0x00 }, /* 0x0b */
TVP5150_MISC_CTL,0x01 { TVP5150_CONTRAST_CTL, 0x80 }, /* 0x0c */
}, { TVP5150_DATA_RATE_SEL, 0x47 }, /* 0x0d */
{ /* 0x06 */ { TVP5150_LUMA_PROC_CTL_3, 0x00 }, /* 0x0e */
TVP5150_COLOR_KIL_THSH_CTL,0x10 { TVP5150_CONF_SHARED_PIN, 0x08 }, /* 0x0f */
}, { TVP5150_ACT_VD_CROP_ST_MSB, 0x00 }, /* 0x11 */
{ /* 0x07 */ { TVP5150_ACT_VD_CROP_ST_LSB, 0x00 }, /* 0x12 */
TVP5150_LUMA_PROC_CTL_1,0x60 { TVP5150_ACT_VD_CROP_STP_MSB, 0x00 }, /* 0x13 */
}, { TVP5150_ACT_VD_CROP_STP_LSB, 0x00 }, /* 0x14 */
{ /* 0x08 */ { TVP5150_GENLOCK, 0x01 }, /* 0x15 */
TVP5150_LUMA_PROC_CTL_2,0x00 { TVP5150_HORIZ_SYNC_START, 0x80 }, /* 0x16 */
}, { TVP5150_VERT_BLANKING_START, 0x00 }, /* 0x18 */
{ /* 0x09 */ { TVP5150_VERT_BLANKING_STOP, 0x00 }, /* 0x19 */
TVP5150_BRIGHT_CTL,0x80 { TVP5150_CHROMA_PROC_CTL_1, 0x0c }, /* 0x1a */
}, { TVP5150_CHROMA_PROC_CTL_2, 0x14 }, /* 0x1b */
{ /* 0x0a */ { TVP5150_INT_RESET_REG_B, 0x00 }, /* 0x1c */
TVP5150_SATURATION_CTL,0x80 { TVP5150_INT_ENABLE_REG_B, 0x00 }, /* 0x1d */
}, { TVP5150_INTT_CONFIG_REG_B, 0x00 }, /* 0x1e */
{ /* 0x0b */ { TVP5150_VIDEO_STD, 0x00 }, /* 0x28 */
TVP5150_HUE_CTL,0x00 { TVP5150_MACROVISION_ON_CTR, 0x0f }, /* 0x2e */
}, { TVP5150_MACROVISION_OFF_CTR, 0x01 }, /* 0x2f */
{ /* 0x0c */ { TVP5150_TELETEXT_FIL_ENA, 0x00 }, /* 0xbb */
TVP5150_CONTRAST_CTL,0x80 { TVP5150_INT_STATUS_REG_A, 0x00 }, /* 0xc0 */
}, { TVP5150_INT_ENABLE_REG_A, 0x00 }, /* 0xc1 */
{ /* 0x0d */ { TVP5150_INT_CONF, 0x04 }, /* 0xc2 */
TVP5150_DATA_RATE_SEL,0x47 { TVP5150_FIFO_INT_THRESHOLD, 0x80 }, /* 0xc8 */
}, { TVP5150_FIFO_RESET, 0x00 }, /* 0xc9 */
{ /* 0x0e */ { TVP5150_LINE_NUMBER_INT, 0x00 }, /* 0xca */
TVP5150_LUMA_PROC_CTL_3,0x00 { TVP5150_PIX_ALIGN_REG_LOW, 0x4e }, /* 0xcb */
}, { TVP5150_PIX_ALIGN_REG_HIGH, 0x00 }, /* 0xcc */
{ /* 0x0f */ { TVP5150_FIFO_OUT_CTRL, 0x01 }, /* 0xcd */
TVP5150_CONF_SHARED_PIN,0x08 { TVP5150_FULL_FIELD_ENA, 0x00 }, /* 0xcf */
}, { TVP5150_LINE_MODE_INI, 0x00 }, /* 0xd0 */
{ /* 0x11 */ { TVP5150_FULL_FIELD_MODE_REG, 0x7f }, /* 0xfc */
TVP5150_ACT_VD_CROP_ST_MSB,0x00 { 0xff, 0xff } /* end of data */
},
{ /* 0x12 */
TVP5150_ACT_VD_CROP_ST_LSB,0x00
},
{ /* 0x13 */
TVP5150_ACT_VD_CROP_STP_MSB,0x00
},
{ /* 0x14 */
TVP5150_ACT_VD_CROP_STP_LSB,0x00
},
{ /* 0x15 */
TVP5150_GENLOCK,0x01
},
{ /* 0x16 */
TVP5150_HORIZ_SYNC_START,0x80
},
{ /* 0x18 */
TVP5150_VERT_BLANKING_START,0x00
},
{ /* 0x19 */
TVP5150_VERT_BLANKING_STOP,0x00
},
{ /* 0x1a */
TVP5150_CHROMA_PROC_CTL_1,0x0c
},
{ /* 0x1b */
TVP5150_CHROMA_PROC_CTL_2,0x14
},
{ /* 0x1c */
TVP5150_INT_RESET_REG_B,0x00
},
{ /* 0x1d */
TVP5150_INT_ENABLE_REG_B,0x00
},
{ /* 0x1e */
TVP5150_INTT_CONFIG_REG_B,0x00
},
{ /* 0x28 */
TVP5150_VIDEO_STD,0x00
},
{ /* 0x2e */
TVP5150_MACROVISION_ON_CTR,0x0f
},
{ /* 0x2f */
TVP5150_MACROVISION_OFF_CTR,0x01
},
{ /* 0xbb */
TVP5150_TELETEXT_FIL_ENA,0x00
},
{ /* 0xc0 */
TVP5150_INT_STATUS_REG_A,0x00
},
{ /* 0xc1 */
TVP5150_INT_ENABLE_REG_A,0x00
},
{ /* 0xc2 */
TVP5150_INT_CONF,0x04
},
{ /* 0xc8 */
TVP5150_FIFO_INT_THRESHOLD,0x80
},
{ /* 0xc9 */
TVP5150_FIFO_RESET,0x00
},
{ /* 0xca */
TVP5150_LINE_NUMBER_INT,0x00
},
{ /* 0xcb */
TVP5150_PIX_ALIGN_REG_LOW,0x4e
},
{ /* 0xcc */
TVP5150_PIX_ALIGN_REG_HIGH,0x00
},
{ /* 0xcd */
TVP5150_FIFO_OUT_CTRL,0x01
},
{ /* 0xcf */
TVP5150_FULL_FIELD_ENA,0x00
},
{ /* 0xd0 */
TVP5150_LINE_MODE_INI,0x00
},
{ /* 0xfc */
TVP5150_FULL_FIELD_MODE_REG,0x7f
},
{ /* end of data */
0xff,0xff
}
}; };
/* Default values as sugested at TVP5150AM1 datasheet */ /* Default values as sugested at TVP5150AM1 datasheet */
static const struct i2c_reg_value tvp5150_init_enable[] = { static const struct i2c_reg_value tvp5150_init_enable[] = {
{ { TVP5150_CONF_SHARED_PIN, 2 },
TVP5150_CONF_SHARED_PIN, 2 { TVP5150_ANAL_CHL_CTL, 0x15 }, /* Automatic offset and AGC enabled */
},{ /* Automatic offset and AGC enabled */ { TVP5150_MISC_CTL, 0x6f }, /* Activate YCrCb output 0x9 or 0xd ? */
TVP5150_ANAL_CHL_CTL, 0x15 { TVP5150_AUTOSW_MSK, 0x0 }, /* Activates video std autodetection for all standards */
},{ /* Activate YCrCb output 0x9 or 0xd ? */ { TVP5150_DATA_RATE_SEL, 0x47 }, /* Default format: 0x47. For 4:2:2: 0x40 */
TVP5150_MISC_CTL, 0x6f { TVP5150_CHROMA_PROC_CTL_1, 0x0c },
},{ /* Activates video std autodetection for all standards */ { TVP5150_CHROMA_PROC_CTL_2, 0x54 },
TVP5150_AUTOSW_MSK, 0x0 { 0x27, 0x20 }, /* Non documented, but initialized on WinTV USB2 */
},{ /* Default format: 0x47. For 4:2:2: 0x40 */ { 0xff, 0xff }
TVP5150_DATA_RATE_SEL, 0x47
},{
TVP5150_CHROMA_PROC_CTL_1, 0x0c
},{
TVP5150_CHROMA_PROC_CTL_2, 0x54
},{ /* Non documented, but initialized on WinTV USB2 */
0x27, 0x20
},{
0xff,0xff
}
}; };
struct tvp5150_vbi_type { struct tvp5150_vbi_type {
...@@ -608,16 +510,16 @@ static int tvp5150_vdp_init(struct i2c_client *c, ...@@ -608,16 +510,16 @@ static int tvp5150_vdp_init(struct i2c_client *c,
tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0); tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0);
/* Before programming, Line mode should be at 0xff */ /* Before programming, Line mode should be at 0xff */
for (i=TVP5150_LINE_MODE_INI; i<=TVP5150_LINE_MODE_END; i++) for (i = TVP5150_LINE_MODE_INI; i <= TVP5150_LINE_MODE_END; i++)
tvp5150_write(c, i, 0xff); tvp5150_write(c, i, 0xff);
/* Load Ram Table */ /* Load Ram Table */
while (regs->reg != (u16)-1 ) { while (regs->reg != (u16)-1 ) {
tvp5150_write(c, TVP5150_CONF_RAM_ADDR_HIGH,regs->reg>>8); tvp5150_write(c, TVP5150_CONF_RAM_ADDR_HIGH, regs->reg>>8);
tvp5150_write(c, TVP5150_CONF_RAM_ADDR_LOW,regs->reg); tvp5150_write(c, TVP5150_CONF_RAM_ADDR_LOW, regs->reg);
for (i=0;i<16;i++) for (i = 0; i < 16; i++)
tvp5150_write(c, TVP5150_VDP_CONF_RAM_DATA,regs->values[i]); tvp5150_write(c, TVP5150_VDP_CONF_RAM_DATA, regs->values[i]);
regs++; regs++;
} }
...@@ -633,7 +535,7 @@ static void tvp5150_vbi_get_cap(const struct i2c_vbi_ram_value *regs, ...@@ -633,7 +535,7 @@ static void tvp5150_vbi_get_cap(const struct i2c_vbi_ram_value *regs,
memset(cap, 0, sizeof *cap); memset(cap, 0, sizeof *cap);
while (regs->reg != (u16)-1 ) { while (regs->reg != (u16)-1 ) {
for (line=regs->type.ini_line;line<=regs->type.end_line;line++) { for (line = regs->type.ini_line; line <= regs->type.end_line; line++) {
cap->service_lines[0][line] |= regs->type.vbi_type; cap->service_lines[0][line] |= regs->type.vbi_type;
} }
cap->service_set |= regs->type.vbi_type; cap->service_set |= regs->type.vbi_type;
...@@ -661,9 +563,9 @@ static int tvp5150_set_vbi(struct i2c_client *c, ...@@ -661,9 +563,9 @@ static int tvp5150_set_vbi(struct i2c_client *c,
const int fields) const int fields)
{ {
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
v4l2_std_id std=decoder->norm; v4l2_std_id std = decoder->norm;
u8 reg; u8 reg;
int pos=0; int pos = 0;
if (std == V4L2_STD_ALL) { if (std == V4L2_STD_ALL) {
tvp5150_err("VBI can't be configured without knowing number of lines\n"); tvp5150_err("VBI can't be configured without knowing number of lines\n");
...@@ -673,14 +575,14 @@ static int tvp5150_set_vbi(struct i2c_client *c, ...@@ -673,14 +575,14 @@ static int tvp5150_set_vbi(struct i2c_client *c,
line += 3; line += 3;
} }
if (line<6||line>27) if (line < 6 || line > 27)
return 0; return 0;
while (regs->reg != (u16)-1 ) { while (regs->reg != (u16)-1 ) {
if ((type & regs->type.vbi_type) && if ((type & regs->type.vbi_type) &&
(line>=regs->type.ini_line) && (line >= regs->type.ini_line) &&
(line<=regs->type.end_line)) { (line <= regs->type.end_line)) {
type=regs->type.vbi_type; type = regs->type.vbi_type;
break; break;
} }
...@@ -690,15 +592,15 @@ static int tvp5150_set_vbi(struct i2c_client *c, ...@@ -690,15 +592,15 @@ static int tvp5150_set_vbi(struct i2c_client *c,
if (regs->reg == (u16)-1) if (regs->reg == (u16)-1)
return 0; return 0;
type=pos | (flags & 0xf0); type = pos | (flags & 0xf0);
reg=((line-6)<<1)+TVP5150_LINE_MODE_INI; reg=((line - 6) << 1) + TVP5150_LINE_MODE_INI;
if (fields&1) { if (fields & 1) {
tvp5150_write(c, reg, type); tvp5150_write(c, reg, type);
} }
if (fields&2) { if (fields & 2) {
tvp5150_write(c, reg+1, type); tvp5150_write(c, reg + 1, type);
} }
return type; return type;
...@@ -708,9 +610,9 @@ static int tvp5150_get_vbi(struct i2c_client *c, ...@@ -708,9 +610,9 @@ static int tvp5150_get_vbi(struct i2c_client *c,
const struct i2c_vbi_ram_value *regs, int line) const struct i2c_vbi_ram_value *regs, int line)
{ {
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
v4l2_std_id std=decoder->norm; v4l2_std_id std = decoder->norm;
u8 reg; u8 reg;
int pos, type=0; int pos, type = 0;
if (std == V4L2_STD_ALL) { if (std == V4L2_STD_ALL) {
tvp5150_err("VBI can't be configured without knowing number of lines\n"); tvp5150_err("VBI can't be configured without knowing number of lines\n");
...@@ -720,50 +622,50 @@ static int tvp5150_get_vbi(struct i2c_client *c, ...@@ -720,50 +622,50 @@ static int tvp5150_get_vbi(struct i2c_client *c,
line += 3; line += 3;
} }
if (line<6||line>27) if (line < 6 || line > 27)
return 0; return 0;
reg=((line-6)<<1)+TVP5150_LINE_MODE_INI; reg=((line - 6) << 1) + TVP5150_LINE_MODE_INI;
pos=tvp5150_read(c, reg)&0x0f; pos = tvp5150_read(c, reg) & 0x0f;
if (pos<0x0f) if (pos < 0x0f)
type=regs[pos].type.vbi_type; type = regs[pos].type.vbi_type;
pos=tvp5150_read(c, reg+1)&0x0f; pos = tvp5150_read(c, reg + 1) & 0x0f;
if (pos<0x0f) if (pos < 0x0f)
type|=regs[pos].type.vbi_type; type |= regs[pos].type.vbi_type;
return type; return type;
} }
static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std) static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std)
{ {
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
int fmt=0; int fmt = 0;
decoder->norm=std; decoder->norm=std;
/* First tests should be against specific std */ /* First tests should be against specific std */
if (std == V4L2_STD_ALL) { if (std == V4L2_STD_ALL) {
fmt=0; /* Autodetect mode */ fmt = 0; /* Autodetect mode */
} else if (std & V4L2_STD_NTSC_443) { } else if (std & V4L2_STD_NTSC_443) {
fmt=0xa; fmt = 0xa;
} else if (std & V4L2_STD_PAL_M) { } else if (std & V4L2_STD_PAL_M) {
fmt=0x6; fmt = 0x6;
} else if (std & (V4L2_STD_PAL_N| V4L2_STD_PAL_Nc)) { } else if (std & (V4L2_STD_PAL_N | V4L2_STD_PAL_Nc)) {
fmt=0x8; fmt = 0x8;
} else { } else {
/* Then, test against generic ones */ /* Then, test against generic ones */
if (std & V4L2_STD_NTSC) { if (std & V4L2_STD_NTSC) {
fmt=0x2; fmt = 0x2;
} else if (std & V4L2_STD_PAL) { } else if (std & V4L2_STD_PAL) {
fmt=0x4; fmt = 0x4;
} else if (std & V4L2_STD_SECAM) { } else if (std & V4L2_STD_SECAM) {
fmt=0xc; fmt = 0xc;
} }
} }
tvp5150_dbg(1,"Set video std register to %d.\n",fmt); tvp5150_dbg(1, "Set video std register to %d.\n", fmt);
tvp5150_write(c, TVP5150_VIDEO_STD, fmt); tvp5150_write(c, TVP5150_VIDEO_STD, fmt);
return 0; return 0;
...@@ -774,22 +676,22 @@ static inline void tvp5150_reset(struct i2c_client *c) ...@@ -774,22 +676,22 @@ static inline void tvp5150_reset(struct i2c_client *c)
u8 msb_id, lsb_id, msb_rom, lsb_rom; u8 msb_id, lsb_id, msb_rom, lsb_rom;
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
msb_id=tvp5150_read(c,TVP5150_MSB_DEV_ID); msb_id = tvp5150_read(c, TVP5150_MSB_DEV_ID);
lsb_id=tvp5150_read(c,TVP5150_LSB_DEV_ID); lsb_id = tvp5150_read(c, TVP5150_LSB_DEV_ID);
msb_rom=tvp5150_read(c,TVP5150_ROM_MAJOR_VER); msb_rom = tvp5150_read(c, TVP5150_ROM_MAJOR_VER);
lsb_rom=tvp5150_read(c,TVP5150_ROM_MINOR_VER); lsb_rom = tvp5150_read(c, TVP5150_ROM_MINOR_VER);
if ((msb_rom==4)&&(lsb_rom==0)) { /* Is TVP5150AM1 */ if ((msb_rom == 4) && (lsb_rom == 0)) { /* Is TVP5150AM1 */
tvp5150_info("tvp%02x%02xam1 detected.\n",msb_id, lsb_id); tvp5150_info("tvp%02x%02xam1 detected.\n", msb_id, lsb_id);
/* ITU-T BT.656.4 timing */ /* ITU-T BT.656.4 timing */
tvp5150_write(c,TVP5150_REV_SELECT,0); tvp5150_write(c, TVP5150_REV_SELECT, 0);
} else { } else {
if ((msb_rom==3)||(lsb_rom==0x21)) { /* Is TVP5150A */ if ((msb_rom == 3) || (lsb_rom == 0x21)) { /* Is TVP5150A */
tvp5150_info("tvp%02x%02xa detected.\n",msb_id, lsb_id); tvp5150_info("tvp%02x%02xa detected.\n", msb_id, lsb_id);
} else { } else {
tvp5150_info("*** unknown tvp%02x%02x chip detected.\n",msb_id,lsb_id); tvp5150_info("*** unknown tvp%02x%02x chip detected.\n", msb_id, lsb_id);
tvp5150_info("*** Rom ver is %d.%d\n",msb_rom,lsb_rom); tvp5150_info("*** Rom ver is %d.%d\n", msb_rom, lsb_rom);
} }
} }
...@@ -818,7 +720,8 @@ static int tvp5150_get_ctrl(struct i2c_client *c, struct v4l2_control *ctrl) ...@@ -818,7 +720,8 @@ static int tvp5150_get_ctrl(struct i2c_client *c, struct v4l2_control *ctrl)
{ {
/* struct tvp5150 *decoder = i2c_get_clientdata(c); */ /* struct tvp5150 *decoder = i2c_get_clientdata(c); */
switch (ctrl->id) { switch (ctrl->id)
{
case V4L2_CID_BRIGHTNESS: case V4L2_CID_BRIGHTNESS:
ctrl->value = tvp5150_read(c, TVP5150_BRIGHT_CTL); ctrl->value = tvp5150_read(c, TVP5150_BRIGHT_CTL);
return 0; return 0;
...@@ -839,7 +742,8 @@ static int tvp5150_get_std(struct i2c_client *c, v4l2_std_id *id) ...@@ -839,7 +742,8 @@ static int tvp5150_get_std(struct i2c_client *c, v4l2_std_id *id)
{ {
int fmt = tvp5150_read(c, TVP5150_STATUS_REG_5); int fmt = tvp5150_read(c, TVP5150_STATUS_REG_5);
fmt &= 0x0F; fmt &= 0x0F;
switch (fmt) { switch (fmt)
{
case 0x01: case 0x01:
*id = V4L2_STD_NTSC; *id = V4L2_STD_NTSC;
break; break;
...@@ -869,7 +773,8 @@ static int tvp5150_set_ctrl(struct i2c_client *c, struct v4l2_control *ctrl) ...@@ -869,7 +773,8 @@ static int tvp5150_set_ctrl(struct i2c_client *c, struct v4l2_control *ctrl)
{ {
/* struct tvp5150 *decoder = i2c_get_clientdata(c); */ /* struct tvp5150 *decoder = i2c_get_clientdata(c); */
switch (ctrl->id) { switch (ctrl->id)
{
case V4L2_CID_BRIGHTNESS: case V4L2_CID_BRIGHTNESS:
tvp5150_write(c, TVP5150_BRIGHT_CTL, ctrl->value); tvp5150_write(c, TVP5150_BRIGHT_CTL, ctrl->value);
return 0; return 0;
...@@ -894,8 +799,8 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -894,8 +799,8 @@ static int tvp5150_command(struct i2c_client *c,
{ {
struct tvp5150 *decoder = i2c_get_clientdata(c); struct tvp5150 *decoder = i2c_get_clientdata(c);
switch (cmd) { switch (cmd)
{
case 0: case 0:
case VIDIOC_INT_RESET: case VIDIOC_INT_RESET:
tvp5150_reset(c); tvp5150_reset(c);
...@@ -956,10 +861,9 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -956,10 +861,9 @@ static int tvp5150_command(struct i2c_client *c,
if (svbi->service_set != 0) { if (svbi->service_set != 0) {
for (i = 0; i <= 23; i++) { for (i = 0; i <= 23; i++) {
svbi->service_lines[1][i] = 0; svbi->service_lines[1][i] = 0;
svbi->service_lines[0][i] =
svbi->service_lines[0][i]=tvp5150_set_vbi(c, tvp5150_set_vbi(c, vbi_ram_default,
vbi_ram_default, svbi->service_lines[0][i], 0xf0, i, 3);
svbi->service_lines[0][i],0xf0,i,3);
} }
/* Enables FIFO */ /* Enables FIFO */
tvp5150_write(c, TVP5150_FIFO_OUT_CTRL,1); tvp5150_write(c, TVP5150_FIFO_OUT_CTRL,1);
...@@ -971,7 +875,7 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -971,7 +875,7 @@ static int tvp5150_command(struct i2c_client *c,
tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0); tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0);
/* Disable Line modes */ /* Disable Line modes */
for (i=TVP5150_LINE_MODE_INI; i<=TVP5150_LINE_MODE_END; i++) for (i = TVP5150_LINE_MODE_INI; i <= TVP5150_LINE_MODE_END; i++)
tvp5150_write(c, i, 0xff); tvp5150_write(c, i, 0xff);
} }
break; break;
...@@ -981,7 +885,7 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -981,7 +885,7 @@ static int tvp5150_command(struct i2c_client *c,
struct v4l2_format *fmt; struct v4l2_format *fmt;
struct v4l2_sliced_vbi_format *svbi; struct v4l2_sliced_vbi_format *svbi;
int i, mask=0; int i, mask = 0;
fmt = arg; fmt = arg;
if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE) if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
...@@ -990,11 +894,10 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -990,11 +894,10 @@ static int tvp5150_command(struct i2c_client *c,
memset(svbi, 0, sizeof(*svbi)); memset(svbi, 0, sizeof(*svbi));
for (i = 0; i <= 23; i++) { for (i = 0; i <= 23; i++) {
svbi->service_lines[0][i]=tvp5150_get_vbi(c, svbi->service_lines[0][i] = tvp5150_get_vbi(c, vbi_ram_default, i);
vbi_ram_default,i); mask |= svbi->service_lines[0][i];
mask|=svbi->service_lines[0][i];
} }
svbi->service_set=mask; svbi->service_set = mask;
break; break;
} }
...@@ -1058,10 +961,8 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -1058,10 +961,8 @@ static int tvp5150_command(struct i2c_client *c,
n = ARRAY_SIZE(tvp5150_qctrl); n = ARRAY_SIZE(tvp5150_qctrl);
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
if (ctrl->id == tvp5150_qctrl[i].id) { if (ctrl->id == tvp5150_qctrl[i].id) {
if (ctrl->value < if (ctrl->value < tvp5150_qctrl[i].minimum ||
tvp5150_qctrl[i].minimum ctrl->value > tvp5150_qctrl[i].maximum)
|| ctrl->value >
tvp5150_qctrl[i].maximum)
return -ERANGE; return -ERANGE;
tvp5150_dbg(1, tvp5150_dbg(1,
"VIDIOC_S_CTRL: id=%d, value=%d\n", "VIDIOC_S_CTRL: id=%d, value=%d\n",
...@@ -1078,8 +979,7 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -1078,8 +979,7 @@ static int tvp5150_command(struct i2c_client *c,
} }
case VPFE_CMD_CONFIG_CAPTURE: case VPFE_CMD_CONFIG_CAPTURE:
{ {
struct vpfe_capture_params *params = struct vpfe_capture_params *params = (struct vpfe_capture_params *)arg;
(struct vpfe_capture_params *)arg;
if (params->amuxmode == VPFE_AMUX_COMPOSITE0) { if (params->amuxmode == VPFE_AMUX_COMPOSITE0) {
decoder->route.input = TVP5150_COMPOSITE0; decoder->route.input = TVP5150_COMPOSITE0;
...@@ -1093,7 +993,6 @@ static int tvp5150_command(struct i2c_client *c, ...@@ -1093,7 +993,6 @@ static int tvp5150_command(struct i2c_client *c,
decoder->norm = params->mode; decoder->norm = params->mode;
break; break;
} }
default: default:
return -EINVAL; return -EINVAL;
} }
...@@ -1127,8 +1026,7 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter, ...@@ -1127,8 +1026,7 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter,
/* Check if the adapter supports the needed features */ /* Check if the adapter supports the needed features */
if (!i2c_check_functionality if (!i2c_check_functionality
(adapter, (adapter, I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
return 0; return 0;
tvp5150_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL); tvp5150_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
......
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