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)
/* based on whether the two fields are stored interleavely */
/* or separately in memory, reconfigure the CCDC memory address */
if (vpfe->field == V4L2_FIELD_SEQ_TB) {
u32 addr =
vpfe->curFrm->boff + vpfe->field_offset;
u32 addr = vpfe->curFrm->boff + vpfe->field_offset;
ccdc_setfbaddr((unsigned long)addr);
}
} else if (fid == 1) {
......@@ -168,17 +167,15 @@ static irqreturn_t vpfe_isr(int irq, void *dev_id)
if (!list_empty(&vpfe->dma_queue)
&& vpfe->curFrm == vpfe->nextFrm) {
vpfe->nextFrm = list_entry(vpfe->dma_queue.next,
struct videobuf_buffer, queue);
struct videobuf_buffer, queue);
list_del(&vpfe->nextFrm->queue);
vpfe->nextFrm->state = STATE_ACTIVE;
ccdc_setfbaddr(
(unsigned long)vpfe->nextFrm->boff);
ccdc_setfbaddr((unsigned long)vpfe->nextFrm->boff);
}
if (vpfe->mode_changed) {
ccdc_setwin(&vpfe->ccdc_params);
/* update the field offset */
vpfe->field_offset =
(vpfe->vwin.height - 2) * vpfe->vwin.width;
vpfe->field_offset = (vpfe->vwin.height - 2) * vpfe->vwin.width;
vpfe->mode_changed = FALSE;
}
}
......@@ -348,8 +345,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
switch (cmd) {
case VIDIOC_QUERYCAP:
{
struct v4l2_capability *cap =
(struct v4l2_capability *)arg;
struct v4l2_capability *cap = (struct v4l2_capability *)arg;
memset(cap, 0, sizeof(*cap));
*cap = vpfe_drvcap;
break;
......@@ -363,13 +359,11 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
if (index == 0) {
/* only yuv4:2:2 format is supported at this point */
fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
strcpy(fmt->description,
"YCbCr4:2:2 Interleaved UYUV");
strcpy(fmt->description, "YCbCr4:2:2 Interleaved UYUV");
fmt->pixelformat = V4L2_PIX_FMT_UYVY;
} else if (index == 1) {
fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
strcpy(fmt->description,
"YCbCr4:2:2 Interleaved YUYV");
strcpy(fmt->description, "YCbCr4:2:2 Interleaved YUYV");
fmt->pixelformat = V4L2_PIX_FMT_YUYV;
} else {
ret = -EINVAL;
......@@ -389,8 +383,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
pixfmt->field = vpfe->field;
pixfmt->pixelformat = vpfe->pixelfmt;
pixfmt->bytesperline = pixfmt->width * 2;
pixfmt->sizeimage =
pixfmt->bytesperline * pixfmt->height;
pixfmt->sizeimage = pixfmt->bytesperline * pixfmt->height;
pixfmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
up(&vpfe->lock);
}
......@@ -412,10 +405,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
up(&vpfe->lock);
break;
}
if ((pixfmt->width + vpfe->vwin.left <=
vpfe->bounds.width)
& (pixfmt->height + vpfe->vwin.top <=
vpfe->bounds.height)) {
if ((pixfmt->width + vpfe->vwin.left <= vpfe->bounds.width) &
(pixfmt->height + vpfe->vwin.top <= vpfe->bounds.height)) {
/* this is the case when no scaling is supported */
/* crop window is directed modified */
vpfe->vwin.height = pixfmt->height;
......@@ -439,8 +430,8 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
up(&vpfe->lock);
break;
}
if (pixfmt->field == V4L2_FIELD_NONE
|| pixfmt->field == V4L2_FIELD_INTERLACED) {
if (pixfmt->field == V4L2_FIELD_NONE ||
pixfmt->field == V4L2_FIELD_INTERLACED) {
params->buf_type = CCDC_BUFTYPE_FLD_INTERLEAVED;
vpfe->field = pixfmt->field;
} else if (pixfmt->field == V4L2_FIELD_SEQ_TB) {
......@@ -462,11 +453,10 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
ret = -EINVAL;
} else {
struct v4l2_pix_format *pixfmt = &fmt->fmt.pix;
if (pixfmt->width > vpfe->bounds.width
|| pixfmt->height > vpfe->bounds.height
|| (pixfmt->pixelformat != V4L2_PIX_FMT_UYVY
&& pixfmt->pixelformat !=
V4L2_PIX_FMT_YUYV)) {
if (pixfmt->width > vpfe->bounds.width ||
pixfmt->height > vpfe->bounds.height ||
(pixfmt->pixelformat != V4L2_PIX_FMT_UYVY &&
pixfmt->pixelformat != V4L2_PIX_FMT_YUYV)) {
ret = -EINVAL;
}
}
......@@ -531,9 +521,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->capture_params.mode = id;
vpfe->capture_params.squarepixel = sqp;
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VPFE_CMD_CONFIG_CAPTURE,
&vpfe->capture_params);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, &vpfe->capture_params);
up(&vpfe->lock);
break;
......@@ -624,8 +612,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
}
case VIDIOC_CROPCAP:
{
struct v4l2_cropcap *cropcap =
(struct v4l2_cropcap *)arg;
struct v4l2_cropcap *cropcap = (struct v4l2_cropcap *)arg;
cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
down_interruptible(&vpfe->lock);
cropcap->bounds = cropcap->defrect = vpfe->vwin;
......@@ -635,16 +622,13 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
}
case VIDIOC_G_PARM:
{
struct v4l2_streamparm *parm =
(struct v4l2_streamparm *)arg;
struct v4l2_streamparm *parm = (struct v4l2_streamparm *)arg;
if (parm->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) {
/* only capture is supported */
ret = -EINVAL;
} else {
struct v4l2_captureparm *capparm =
&parm->parm.capture;
memset(capparm, 0,
sizeof(struct v4l2_captureparm));
struct v4l2_captureparm *capparm = &parm->parm.capture;
memset(capparm, 0, sizeof(struct v4l2_captureparm));
down_interruptible(&vpfe->lock);
if (vpfe->std & V4L2_STD_625_50) {
capparm->timeperframe.numerator = 1;
......@@ -661,24 +645,21 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
case VIDIOC_G_CTRL:
down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VIDIOC_G_CTRL, arg);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_G_CTRL, arg);
up(&vpfe->lock);
break;
case VIDIOC_S_CTRL:
down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VIDIOC_S_CTRL, arg);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_S_CTRL, arg);
up(&vpfe->lock);
break;
case VIDIOC_QUERYCTRL:
down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VIDIOC_QUERYCTRL, arg);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_QUERYCTRL, arg);
up(&vpfe->lock);
break;
......@@ -704,11 +685,9 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
crop->c.width = ((crop->c.width + 15 )/16 ) * 16;
/* make sure parameters are valid */
if (crop->type == V4L2_BUF_TYPE_VIDEO_CAPTURE
&& (crop->c.left + crop->c.width
<= vpfe->bounds.left + vpfe->bounds.width)
&& (crop->c.top + crop->c.height
<= vpfe->bounds.top + vpfe->bounds.height)) {
if (crop->type == V4L2_BUF_TYPE_VIDEO_CAPTURE &&
(crop->c.left + crop->c.width <= vpfe->bounds.left + vpfe->bounds.width) &&
(crop->c.top + crop->c.height <= vpfe->bounds.top + vpfe->bounds.height)) {
down_interruptible(&vpfe->lock);
vpfe->vwin = crop->c;
......@@ -724,8 +703,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
v4l2_std_id *id = (v4l2_std_id *) arg;
down_interruptible(&vpfe->lock);
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VIDIOC_QUERYSTD, id);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VIDIOC_QUERYSTD, id);
up(&vpfe->lock);
break;
......@@ -798,17 +776,14 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
}
debug_print(KERN_INFO "cur frame %x.\n",
vpfe->dma_queue.next);
vpfe->nextFrm = vpfe->curFrm =
list_entry(vpfe->dma_queue.next,
struct videobuf_buffer, queue);
vpfe->nextFrm = vpfe->curFrm = list_entry(vpfe->dma_queue.next,
struct videobuf_buffer, queue);
/* remove the buffer from the queue */
list_del(&vpfe->curFrm->queue);
vpfe->curFrm->state = STATE_ACTIVE;
/* sense the current video input standard */
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VPFE_CMD_CONFIG_CAPTURE,
&vpfe->capture_params);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, &vpfe->capture_params);
if (ret < 0)
break;
/* configure the ccdc and resizer as needed */
......@@ -820,8 +795,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->field_id = 0;
vpfe->started = TRUE;
vpfe->mode_changed = FALSE;
vpfe->field_offset =
(vpfe->vwin.height - 2) * vpfe->vwin.width;
vpfe->field_offset = (vpfe->vwin.height - 2) * vpfe->vwin.width;
ccdc_enable(TRUE);
up(&vpfe->lock);
debug_print(KERN_INFO "started video streaming.\n");
......@@ -860,8 +834,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->vwin = params->win;
if (params->buf_type == CCDC_BUFTYPE_FLD_INTERLEAVED) {
vpfe->field = V4L2_FIELD_INTERLACED;
} else if (params->buf_type ==
CCDC_BUFTYPE_FLD_SEPARATED) {
} else if (params->buf_type == CCDC_BUFTYPE_FLD_SEPARATED) {
vpfe->field = V4L2_FIELD_SEQ_TB;
}
if (params->pix_order == CCDC_PIXORDER_YCBYCR) {
......@@ -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,
driver does not check the consistancy */
struct vpfe_capture_params *params =
(struct vpfe_capture_param *) arg;
struct vpfe_capture_params *params = (struct vpfe_capture_param *) arg;
v4l2_std_id std = 0;
if(vpfe->started){
/* only allowed if streaming is not started */
......@@ -906,9 +878,7 @@ static int vpfe_doioctl(struct inode *inode, struct file *file,
vpfe->pixelaspect = sp_aspect;
}
vpfe->std = std;
ret = DEVICE_CMD(ACTIVE_DEVICE(),
VPFE_CMD_CONFIG_CAPTURE,
params);
ret = DEVICE_CMD(ACTIVE_DEVICE(), VPFE_CMD_CONFIG_CAPTURE, params);
vpfe->capture_params = *params;
up(&vpfe->lock);
break;
......@@ -1190,8 +1160,7 @@ static int vpfe_init(void)
void *mem;
/* allocate memory at initialization time to guarentee availability */
for (i = 0; i < VPFE_DEFNUM_FBUFS; i++) {
mem = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA,
VPFE_MAX_FBUF_ORDER);
mem = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA, VPFE_MAX_FBUF_ORDER);
if (mem) {
unsigned long adr = (unsigned long)mem;
u32 size = PAGE_SIZE << VPFE_MAX_FBUF_ORDER;
......@@ -1203,15 +1172,13 @@ static int vpfe_init(void)
size -= PAGE_SIZE;
}
vpfe_device.fbuffers[i] = (u8 *) mem;
debug_print(KERN_INFO "memory address %d\t%x\n", i,
mem);
debug_print(KERN_INFO "memory address %d\t%x\n", i, mem);
} else {
while (--i >= 0) {
free_pages((unsigned long)vpfe_device.fbuffers[i],
VPFE_MAX_FBUF_ORDER);
}
debug_print(KERN_INFO
"frame buffer memory allocation failed.\n");
debug_print(KERN_INFO "frame buffer memory allocation failed.\n");
return -ENOMEM;
}
}
......
......@@ -50,41 +50,41 @@ MODULE_PARM_DESC(debug, "Debug level (0-1)");
/* supported controls */
static struct v4l2_queryctrl tvp5150_qctrl[] = {
{
.id = V4L2_CID_BRIGHTNESS,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Brightness",
.minimum = 0,
.maximum = 255,
.step = 1,
.default_value = 128,
.flags = 0,
.id = V4L2_CID_BRIGHTNESS,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Brightness",
.minimum = 0,
.maximum = 255,
.step = 1,
.default_value = 128,
.flags = 0,
}, {
.id = V4L2_CID_CONTRAST,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Contrast",
.minimum = 0,
.maximum = 255,
.step = 0x1,
.default_value = 128,
.flags = 0,
.id = V4L2_CID_CONTRAST,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Contrast",
.minimum = 0,
.maximum = 255,
.step = 0x1,
.default_value = 128,
.flags = 0,
}, {
.id = V4L2_CID_SATURATION,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Saturation",
.minimum = 0,
.maximum = 255,
.step = 0x1,
.default_value = 128,
.flags = 0,
.id = V4L2_CID_SATURATION,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Saturation",
.minimum = 0,
.maximum = 255,
.step = 0x1,
.default_value = 128,
.flags = 0,
}, {
.id = V4L2_CID_HUE,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Hue",
.minimum = -128,
.maximum = 127,
.step = 0x1,
.default_value = 0,
.flags = 0,
.id = V4L2_CID_HUE,
.type = V4L2_CTRL_TYPE_INTEGER,
.name = "Hue",
.minimum = -128,
.maximum = 127,
.step = 0x1,
.default_value = 0,
.flags = 0,
}
};
......@@ -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)
{
int i=0;
int i = 0;
while (init!=(u8)(end+1)) {
if ((i%max_line) == 0) {
if (i>0)
while (init != (u8)(end + 1)) {
if ((i % max_line) == 0) {
if (i > 0)
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++;
i++;
......@@ -155,86 +155,86 @@ static void dump_reg_range(struct i2c_client *c, char *s, u8 init, const u8 end,
static void dump_reg(struct i2c_client *c)
{
printk("tvp5150: Video input source selection #1 = 0x%02x\n",
tvp5150_read(c, TVP5150_VD_IN_SRC_SEL_1));
tvp5150_read(c, TVP5150_VD_IN_SRC_SEL_1));
printk("tvp5150: Analog channel controls = 0x%02x\n",
tvp5150_read(c, TVP5150_ANAL_CHL_CTL));
tvp5150_read(c, TVP5150_ANAL_CHL_CTL));
printk("tvp5150: Operation mode controls = 0x%02x\n",
tvp5150_read(c, TVP5150_OP_MODE_CTL));
tvp5150_read(c, TVP5150_OP_MODE_CTL));
printk("tvp5150: Miscellaneous controls = 0x%02x\n",
tvp5150_read(c, TVP5150_MISC_CTL));
tvp5150_read(c, TVP5150_MISC_CTL));
printk("tvp5150: Autoswitch mask= 0x%02x\n",
tvp5150_read(c, TVP5150_AUTOSW_MSK));
tvp5150_read(c, TVP5150_AUTOSW_MSK));
printk("tvp5150: Color killer threshold control = 0x%02x\n",
tvp5150_read(c, TVP5150_COLOR_KIL_THSH_CTL));
tvp5150_read(c, TVP5150_COLOR_KIL_THSH_CTL));
printk("tvp5150: Luminance processing controls #1 #2 and #3 = %02x %02x %02x\n",
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_1),
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_2),
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_3));
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_1),
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_2),
tvp5150_read(c, TVP5150_LUMA_PROC_CTL_3));
printk("tvp5150: Brightness control = 0x%02x\n",
tvp5150_read(c, TVP5150_BRIGHT_CTL));
tvp5150_read(c, TVP5150_BRIGHT_CTL));
printk("tvp5150: Color saturation control = 0x%02x\n",
tvp5150_read(c, TVP5150_SATURATION_CTL));
tvp5150_read(c, TVP5150_SATURATION_CTL));
printk("tvp5150: Hue control = 0x%02x\n",
tvp5150_read(c, TVP5150_HUE_CTL));
tvp5150_read(c, TVP5150_HUE_CTL));
printk("tvp5150: Contrast control = 0x%02x\n",
tvp5150_read(c, TVP5150_CONTRAST_CTL));
tvp5150_read(c, TVP5150_CONTRAST_CTL));
printk("tvp5150: Outputs and data rates select = 0x%02x\n",
tvp5150_read(c, TVP5150_DATA_RATE_SEL));
tvp5150_read(c, TVP5150_DATA_RATE_SEL));
printk("tvp5150: Configuration shared pins = 0x%02x\n",
tvp5150_read(c, TVP5150_CONF_SHARED_PIN));
tvp5150_read(c, TVP5150_CONF_SHARED_PIN));
printk("tvp5150: Active video cropping start = 0x%02x%02x\n",
tvp5150_read(c, TVP5150_ACT_VD_CROP_ST_MSB),
tvp5150_read(c, TVP5150_ACT_VD_CROP_ST_LSB));
tvp5150_read(c, TVP5150_ACT_VD_CROP_ST_MSB),
tvp5150_read(c, TVP5150_ACT_VD_CROP_ST_LSB));
printk("tvp5150: Active video cropping stop = 0x%02x%02x\n",
tvp5150_read(c, TVP5150_ACT_VD_CROP_STP_MSB),
tvp5150_read(c, TVP5150_ACT_VD_CROP_STP_LSB));
tvp5150_read(c, TVP5150_ACT_VD_CROP_STP_MSB),
tvp5150_read(c, TVP5150_ACT_VD_CROP_STP_LSB));
printk("tvp5150: Genlock/RTC = 0x%02x\n",
tvp5150_read(c, TVP5150_GENLOCK));
tvp5150_read(c, TVP5150_GENLOCK));
printk("tvp5150: Horizontal sync start = 0x%02x\n",
tvp5150_read(c, TVP5150_HORIZ_SYNC_START));
tvp5150_read(c, TVP5150_HORIZ_SYNC_START));
printk("tvp5150: Vertical blanking start = 0x%02x\n",
tvp5150_read(c, TVP5150_VERT_BLANKING_START));
tvp5150_read(c, TVP5150_VERT_BLANKING_START));
printk("tvp5150: Vertical blanking stop = 0x%02x\n",
tvp5150_read(c, TVP5150_VERT_BLANKING_STOP));
tvp5150_read(c, TVP5150_VERT_BLANKING_STOP));
printk("tvp5150: Chrominance processing control #1 and #2 = %02x %02x\n",
tvp5150_read(c, TVP5150_CHROMA_PROC_CTL_1),
tvp5150_read(c, TVP5150_CHROMA_PROC_CTL_2));
tvp5150_read(c, TVP5150_CHROMA_PROC_CTL_1),
tvp5150_read(c, TVP5150_CHROMA_PROC_CTL_2));
printk("tvp5150: Interrupt reset register B = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_RESET_REG_B));
tvp5150_read(c, TVP5150_INT_RESET_REG_B));
printk("tvp5150: Interrupt enable register B = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_ENABLE_REG_B));
tvp5150_read(c, TVP5150_INT_ENABLE_REG_B));
printk("tvp5150: Interrupt configuration register B = 0x%02x\n",
tvp5150_read(c, TVP5150_INTT_CONFIG_REG_B));
tvp5150_read(c, TVP5150_INTT_CONFIG_REG_B));
printk("tvp5150: Video standard = 0x%02x\n",
tvp5150_read(c, TVP5150_VIDEO_STD));
tvp5150_read(c, TVP5150_VIDEO_STD));
printk("tvp5150: Chroma gain factor: Cb=0x%02x Cr=0x%02x\n",
tvp5150_read(c, TVP5150_CB_GAIN_FACT),
tvp5150_read(c, TVP5150_CR_GAIN_FACTOR));
tvp5150_read(c, TVP5150_CB_GAIN_FACT),
tvp5150_read(c, TVP5150_CR_GAIN_FACTOR));
printk("tvp5150: Macrovision on counter = 0x%02x\n",
tvp5150_read(c, TVP5150_MACROVISION_ON_CTR));
tvp5150_read(c, TVP5150_MACROVISION_ON_CTR));
printk("tvp5150: Macrovision off counter = 0x%02x\n",
tvp5150_read(c, TVP5150_MACROVISION_OFF_CTR));
tvp5150_read(c, TVP5150_MACROVISION_OFF_CTR));
printk("tvp5150: ITU-R BT.656.%d timing(TVP5150AM1 only)\n",
(tvp5150_read(c, TVP5150_REV_SELECT)&1)?3:4);
(tvp5150_read(c, TVP5150_REV_SELECT)&1)?3:4);
printk("tvp5150: Device ID = %02x%02x\n",
tvp5150_read(c, TVP5150_MSB_DEV_ID),
tvp5150_read(c, TVP5150_LSB_DEV_ID));
tvp5150_read(c, TVP5150_MSB_DEV_ID),
tvp5150_read(c, TVP5150_LSB_DEV_ID));
printk("tvp5150: ROM version = (hex) %02x.%02x\n",
tvp5150_read(c, TVP5150_ROM_MAJOR_VER),
tvp5150_read(c, TVP5150_ROM_MINOR_VER));
tvp5150_read(c, TVP5150_ROM_MAJOR_VER),
tvp5150_read(c, TVP5150_ROM_MINOR_VER));
printk("tvp5150: Vertical line count = 0x%02x%02x\n",
tvp5150_read(c, TVP5150_VERT_LN_COUNT_MSB),
tvp5150_read(c, TVP5150_VERT_LN_COUNT_LSB));
tvp5150_read(c, TVP5150_VERT_LN_COUNT_MSB),
tvp5150_read(c, TVP5150_VERT_LN_COUNT_LSB));
printk("tvp5150: Interrupt status register B = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_STATUS_REG_B));
tvp5150_read(c, TVP5150_INT_STATUS_REG_B));
printk("tvp5150: Interrupt active register B = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_ACTIVE_REG_B));
tvp5150_read(c, TVP5150_INT_ACTIVE_REG_B));
printk("tvp5150: Status regs #1 to #5 = %02x %02x %02x %02x %02x\n",
tvp5150_read(c, TVP5150_STATUS_REG_1),
tvp5150_read(c, TVP5150_STATUS_REG_2),
tvp5150_read(c, TVP5150_STATUS_REG_3),
tvp5150_read(c, TVP5150_STATUS_REG_4),
tvp5150_read(c, TVP5150_STATUS_REG_5));
tvp5150_read(c, TVP5150_STATUS_REG_1),
tvp5150_read(c, TVP5150_STATUS_REG_2),
tvp5150_read(c, TVP5150_STATUS_REG_3),
tvp5150_read(c, TVP5150_STATUS_REG_4),
tvp5150_read(c, TVP5150_STATUS_REG_5));
dump_reg_range(c,"Teletext filter 1", TVP5150_TELETEXT_FIL1_INI,
TVP5150_TELETEXT_FIL1_END,8);
......@@ -242,32 +242,32 @@ static void dump_reg(struct i2c_client *c)
TVP5150_TELETEXT_FIL2_END,8);
printk("tvp5150: Teletext filter enable = 0x%02x\n",
tvp5150_read(c, TVP5150_TELETEXT_FIL_ENA));
tvp5150_read(c, TVP5150_TELETEXT_FIL_ENA));
printk("tvp5150: Interrupt status register A = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_STATUS_REG_A));
tvp5150_read(c, TVP5150_INT_STATUS_REG_A));
printk("tvp5150: Interrupt enable register A = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_ENABLE_REG_A));
tvp5150_read(c, TVP5150_INT_ENABLE_REG_A));
printk("tvp5150: Interrupt configuration = 0x%02x\n",
tvp5150_read(c, TVP5150_INT_CONF));
tvp5150_read(c, TVP5150_INT_CONF));
printk("tvp5150: VDP status register = 0x%02x\n",
tvp5150_read(c, TVP5150_VDP_STATUS_REG));
tvp5150_read(c, TVP5150_VDP_STATUS_REG));
printk("tvp5150: FIFO word count = 0x%02x\n",
tvp5150_read(c, TVP5150_FIFO_WORD_COUNT));
tvp5150_read(c, TVP5150_FIFO_WORD_COUNT));
printk("tvp5150: FIFO interrupt threshold = 0x%02x\n",
tvp5150_read(c, TVP5150_FIFO_INT_THRESHOLD));
tvp5150_read(c, TVP5150_FIFO_INT_THRESHOLD));
printk("tvp5150: FIFO reset = 0x%02x\n",
tvp5150_read(c, TVP5150_FIFO_RESET));
tvp5150_read(c, TVP5150_FIFO_RESET));
printk("tvp5150: Line number interrupt = 0x%02x\n",
tvp5150_read(c, TVP5150_LINE_NUMBER_INT));
tvp5150_read(c, TVP5150_LINE_NUMBER_INT));
printk("tvp5150: Pixel alignment register = 0x%02x%02x\n",
tvp5150_read(c, TVP5150_PIX_ALIGN_REG_HIGH),
tvp5150_read(c, TVP5150_PIX_ALIGN_REG_LOW));
tvp5150_read(c, TVP5150_PIX_ALIGN_REG_HIGH),
tvp5150_read(c, TVP5150_PIX_ALIGN_REG_LOW));
printk("tvp5150: FIFO output control = 0x%02x\n",
tvp5150_read(c, TVP5150_FIFO_OUT_CTRL));
tvp5150_read(c, TVP5150_FIFO_OUT_CTRL));
printk("tvp5150: Full field enable = 0x%02x\n",
tvp5150_read(c, TVP5150_FULL_FIELD_ENA));
tvp5150_read(c, TVP5150_FULL_FIELD_ENA));
printk("tvp5150: Full field mode register = 0x%02x\n",
tvp5150_read(c, TVP5150_FULL_FIELD_MODE_REG));
tvp5150_read(c, TVP5150_FULL_FIELD_MODE_REG));
dump_reg_range(c,"CC data", TVP5150_CC_DATA_INI,
TVP5150_CC_DATA_END,8);
......@@ -291,7 +291,7 @@ static void dump_reg(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);
int input = 0;
......@@ -311,7 +311,7 @@ static inline void tvp5150_selmux(struct i2c_client *c)
case TVP5150_SVIDEO:
default:
input |= 1;
opmode=0; /* Auto Mode */
opmode = 0; /* Auto Mode */
break;
}
......@@ -331,161 +331,63 @@ struct i2c_reg_value {
/* Default values as sugested at TVP5150AM1 datasheet */
static const struct i2c_reg_value tvp5150_init_default[] = {
{ /* 0x00 */
TVP5150_VD_IN_SRC_SEL_1,0x00
},
{ /* 0x01 */
TVP5150_ANAL_CHL_CTL,0x15
},
{ /* 0x02 */
TVP5150_OP_MODE_CTL,0x00
},
{ /* 0x03 */
TVP5150_MISC_CTL,0x01
},
{ /* 0x06 */
TVP5150_COLOR_KIL_THSH_CTL,0x10
},
{ /* 0x07 */
TVP5150_LUMA_PROC_CTL_1,0x60
},
{ /* 0x08 */
TVP5150_LUMA_PROC_CTL_2,0x00
},
{ /* 0x09 */
TVP5150_BRIGHT_CTL,0x80
},
{ /* 0x0a */
TVP5150_SATURATION_CTL,0x80
},
{ /* 0x0b */
TVP5150_HUE_CTL,0x00
},
{ /* 0x0c */
TVP5150_CONTRAST_CTL,0x80
},
{ /* 0x0d */
TVP5150_DATA_RATE_SEL,0x47
},
{ /* 0x0e */
TVP5150_LUMA_PROC_CTL_3,0x00
},
{ /* 0x0f */
TVP5150_CONF_SHARED_PIN,0x08
},
{ /* 0x11 */
TVP5150_ACT_VD_CROP_ST_MSB,0x00
},
{ /* 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
}
{ TVP5150_VD_IN_SRC_SEL_1, 0x00 }, /* 0x00 */
{ TVP5150_ANAL_CHL_CTL, 0x15 }, /* 0x01 */
{ TVP5150_OP_MODE_CTL, 0x00 }, /* 0x02 */
{ TVP5150_MISC_CTL, 0x01 }, /* 0x03 */
{ TVP5150_COLOR_KIL_THSH_CTL, 0x10 }, /* 0x06 */
{ TVP5150_LUMA_PROC_CTL_1, 0x60 }, /* 0x07 */
{ TVP5150_LUMA_PROC_CTL_2, 0x00 }, /* 0x08 */
{ TVP5150_BRIGHT_CTL, 0x80 }, /* 0x09 */
{ TVP5150_SATURATION_CTL, 0x80 }, /* 0x0a */
{ TVP5150_HUE_CTL, 0x00 }, /* 0x0b */
{ TVP5150_CONTRAST_CTL, 0x80 }, /* 0x0c */
{ TVP5150_DATA_RATE_SEL, 0x47 }, /* 0x0d */
{ TVP5150_LUMA_PROC_CTL_3, 0x00 }, /* 0x0e */
{ TVP5150_CONF_SHARED_PIN, 0x08 }, /* 0x0f */
{ TVP5150_ACT_VD_CROP_ST_MSB, 0x00 }, /* 0x11 */
{ TVP5150_ACT_VD_CROP_ST_LSB, 0x00 }, /* 0x12 */
{ TVP5150_ACT_VD_CROP_STP_MSB, 0x00 }, /* 0x13 */
{ TVP5150_ACT_VD_CROP_STP_LSB, 0x00 }, /* 0x14 */
{ TVP5150_GENLOCK, 0x01 }, /* 0x15 */
{ TVP5150_HORIZ_SYNC_START, 0x80 }, /* 0x16 */
{ TVP5150_VERT_BLANKING_START, 0x00 }, /* 0x18 */
{ TVP5150_VERT_BLANKING_STOP, 0x00 }, /* 0x19 */
{ TVP5150_CHROMA_PROC_CTL_1, 0x0c }, /* 0x1a */
{ TVP5150_CHROMA_PROC_CTL_2, 0x14 }, /* 0x1b */
{ TVP5150_INT_RESET_REG_B, 0x00 }, /* 0x1c */
{ TVP5150_INT_ENABLE_REG_B, 0x00 }, /* 0x1d */
{ TVP5150_INTT_CONFIG_REG_B, 0x00 }, /* 0x1e */
{ TVP5150_VIDEO_STD, 0x00 }, /* 0x28 */
{ TVP5150_MACROVISION_ON_CTR, 0x0f }, /* 0x2e */
{ TVP5150_MACROVISION_OFF_CTR, 0x01 }, /* 0x2f */
{ TVP5150_TELETEXT_FIL_ENA, 0x00 }, /* 0xbb */
{ TVP5150_INT_STATUS_REG_A, 0x00 }, /* 0xc0 */
{ TVP5150_INT_ENABLE_REG_A, 0x00 }, /* 0xc1 */
{ TVP5150_INT_CONF, 0x04 }, /* 0xc2 */
{ TVP5150_FIFO_INT_THRESHOLD, 0x80 }, /* 0xc8 */
{ TVP5150_FIFO_RESET, 0x00 }, /* 0xc9 */
{ TVP5150_LINE_NUMBER_INT, 0x00 }, /* 0xca */
{ TVP5150_PIX_ALIGN_REG_LOW, 0x4e }, /* 0xcb */
{ TVP5150_PIX_ALIGN_REG_HIGH, 0x00 }, /* 0xcc */
{ TVP5150_FIFO_OUT_CTRL, 0x01 }, /* 0xcd */
{ TVP5150_FULL_FIELD_ENA, 0x00 }, /* 0xcf */
{ TVP5150_LINE_MODE_INI, 0x00 }, /* 0xd0 */
{ TVP5150_FULL_FIELD_MODE_REG, 0x7f }, /* 0xfc */
{ 0xff, 0xff } /* end of data */
};
/* Default values as sugested at TVP5150AM1 datasheet */
static const struct i2c_reg_value tvp5150_init_enable[] = {
{
TVP5150_CONF_SHARED_PIN, 2
},{ /* Automatic offset and AGC enabled */
TVP5150_ANAL_CHL_CTL, 0x15
},{ /* Activate YCrCb output 0x9 or 0xd ? */
TVP5150_MISC_CTL, 0x6f
},{ /* Activates video std autodetection for all standards */
TVP5150_AUTOSW_MSK, 0x0
},{ /* Default format: 0x47. For 4:2:2: 0x40 */
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
}
{ TVP5150_CONF_SHARED_PIN, 2 },
{ TVP5150_ANAL_CHL_CTL, 0x15 }, /* Automatic offset and AGC enabled */
{ TVP5150_MISC_CTL, 0x6f }, /* Activate YCrCb output 0x9 or 0xd ? */
{ TVP5150_AUTOSW_MSK, 0x0 }, /* Activates video std autodetection for all standards */
{ TVP5150_DATA_RATE_SEL, 0x47 }, /* Default format: 0x47. For 4:2:2: 0x40 */
{ TVP5150_CHROMA_PROC_CTL_1, 0x0c },
{ TVP5150_CHROMA_PROC_CTL_2, 0x54 },
{ 0x27, 0x20 }, /* Non documented, but initialized on WinTV USB2 */
{ 0xff, 0xff }
};
struct tvp5150_vbi_type {
......@@ -590,7 +492,7 @@ static struct i2c_vbi_ram_value vbi_ram_default[] =
};
static int tvp5150_write_inittab(struct i2c_client *c,
const struct i2c_reg_value *regs)
const struct i2c_reg_value *regs)
{
while (regs->reg != 0xff) {
tvp5150_write(c, regs->reg, regs->value);
......@@ -600,7 +502,7 @@ static int tvp5150_write_inittab(struct i2c_client *c,
}
static int tvp5150_vdp_init(struct i2c_client *c,
const struct i2c_vbi_ram_value *regs)
const struct i2c_vbi_ram_value *regs)
{
unsigned int i;
......@@ -608,16 +510,16 @@ static int tvp5150_vdp_init(struct i2c_client *c,
tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0);
/* 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);
/* Load Ram Table */
while (regs->reg != (u16)-1 ) {
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_HIGH, regs->reg>>8);
tvp5150_write(c, TVP5150_CONF_RAM_ADDR_LOW, regs->reg);
for (i=0;i<16;i++)
tvp5150_write(c, TVP5150_VDP_CONF_RAM_DATA,regs->values[i]);
for (i = 0; i < 16; i++)
tvp5150_write(c, TVP5150_VDP_CONF_RAM_DATA, regs->values[i]);
regs++;
}
......@@ -633,7 +535,7 @@ static void tvp5150_vbi_get_cap(const struct i2c_vbi_ram_value *regs,
memset(cap, 0, sizeof *cap);
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_set |= regs->type.vbi_type;
......@@ -656,14 +558,14 @@ static void tvp5150_vbi_get_cap(const struct i2c_vbi_ram_value *regs,
* MSB = field2
*/
static int tvp5150_set_vbi(struct i2c_client *c,
const struct i2c_vbi_ram_value *regs,
unsigned int type,u8 flags, int line,
const int fields)
const struct i2c_vbi_ram_value *regs,
unsigned int type,u8 flags, int line,
const int fields)
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
v4l2_std_id std=decoder->norm;
v4l2_std_id std = decoder->norm;
u8 reg;
int pos=0;
int pos = 0;
if (std == V4L2_STD_ALL) {
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,
line += 3;
}
if (line<6||line>27)
if (line < 6 || line > 27)
return 0;
while (regs->reg != (u16)-1 ) {
if ((type & regs->type.vbi_type) &&
(line>=regs->type.ini_line) &&
(line<=regs->type.end_line)) {
type=regs->type.vbi_type;
(line >= regs->type.ini_line) &&
(line <= regs->type.end_line)) {
type = regs->type.vbi_type;
break;
}
......@@ -690,27 +592,27 @@ static int tvp5150_set_vbi(struct i2c_client *c,
if (regs->reg == (u16)-1)
return 0;
type=pos | (flags & 0xf0);
reg=((line-6)<<1)+TVP5150_LINE_MODE_INI;
type = pos | (flags & 0xf0);
reg=((line - 6) << 1) + TVP5150_LINE_MODE_INI;
if (fields&1) {
if (fields & 1) {
tvp5150_write(c, reg, type);
}
if (fields&2) {
tvp5150_write(c, reg+1, type);
if (fields & 2) {
tvp5150_write(c, reg + 1, type);
}
return type;
}
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);
v4l2_std_id std=decoder->norm;
v4l2_std_id std = decoder->norm;
u8 reg;
int pos, type=0;
int pos, type = 0;
if (std == V4L2_STD_ALL) {
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,
line += 3;
}
if (line<6||line>27)
if (line < 6 || line > 27)
return 0;
reg=((line-6)<<1)+TVP5150_LINE_MODE_INI;
reg=((line - 6) << 1) + TVP5150_LINE_MODE_INI;
pos=tvp5150_read(c, reg)&0x0f;
if (pos<0x0f)
type=regs[pos].type.vbi_type;
pos = tvp5150_read(c, reg) & 0x0f;
if (pos < 0x0f)
type = regs[pos].type.vbi_type;
pos=tvp5150_read(c, reg+1)&0x0f;
if (pos<0x0f)
type|=regs[pos].type.vbi_type;
pos = tvp5150_read(c, reg + 1) & 0x0f;
if (pos < 0x0f)
type |= regs[pos].type.vbi_type;
return type;
}
static int tvp5150_set_std(struct i2c_client *c, v4l2_std_id std)
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
int fmt=0;
int fmt = 0;
decoder->norm=std;
/* First tests should be against specific std */
if (std == V4L2_STD_ALL) {
fmt=0; /* Autodetect mode */
fmt = 0; /* Autodetect mode */
} else if (std & V4L2_STD_NTSC_443) {
fmt=0xa;
fmt = 0xa;
} else if (std & V4L2_STD_PAL_M) {
fmt=0x6;
} else if (std & (V4L2_STD_PAL_N| V4L2_STD_PAL_Nc)) {
fmt=0x8;
fmt = 0x6;
} else if (std & (V4L2_STD_PAL_N | V4L2_STD_PAL_Nc)) {
fmt = 0x8;
} else {
/* Then, test against generic ones */
if (std & V4L2_STD_NTSC) {
fmt=0x2;
fmt = 0x2;
} else if (std & V4L2_STD_PAL) {
fmt=0x4;
fmt = 0x4;
} 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);
return 0;
......@@ -774,22 +676,22 @@ static inline void tvp5150_reset(struct i2c_client *c)
u8 msb_id, lsb_id, msb_rom, lsb_rom;
struct tvp5150 *decoder = i2c_get_clientdata(c);
msb_id=tvp5150_read(c,TVP5150_MSB_DEV_ID);
lsb_id=tvp5150_read(c,TVP5150_LSB_DEV_ID);
msb_rom=tvp5150_read(c,TVP5150_ROM_MAJOR_VER);
lsb_rom=tvp5150_read(c,TVP5150_ROM_MINOR_VER);
msb_id = tvp5150_read(c, TVP5150_MSB_DEV_ID);
lsb_id = tvp5150_read(c, TVP5150_LSB_DEV_ID);
msb_rom = tvp5150_read(c, TVP5150_ROM_MAJOR_VER);
lsb_rom = tvp5150_read(c, TVP5150_ROM_MINOR_VER);
if ((msb_rom==4)&&(lsb_rom==0)) { /* Is TVP5150AM1 */
tvp5150_info("tvp%02x%02xam1 detected.\n",msb_id, lsb_id);
if ((msb_rom == 4) && (lsb_rom == 0)) { /* Is TVP5150AM1 */
tvp5150_info("tvp%02x%02xam1 detected.\n", msb_id, lsb_id);
/* ITU-T BT.656.4 timing */
tvp5150_write(c,TVP5150_REV_SELECT,0);
tvp5150_write(c, TVP5150_REV_SELECT, 0);
} else {
if ((msb_rom==3)||(lsb_rom==0x21)) { /* Is TVP5150A */
tvp5150_info("tvp%02x%02xa detected.\n",msb_id, lsb_id);
if ((msb_rom == 3) || (lsb_rom == 0x21)) { /* Is TVP5150A */
tvp5150_info("tvp%02x%02xa detected.\n", msb_id, lsb_id);
} else {
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("*** unknown tvp%02x%02x chip detected.\n", msb_id, lsb_id);
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)
{
/* struct tvp5150 *decoder = i2c_get_clientdata(c); */
switch (ctrl->id) {
switch (ctrl->id)
{
case V4L2_CID_BRIGHTNESS:
ctrl->value = tvp5150_read(c, TVP5150_BRIGHT_CTL);
return 0;
......@@ -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);
fmt &= 0x0F;
switch (fmt) {
switch (fmt)
{
case 0x01:
*id = V4L2_STD_NTSC;
break;
......@@ -869,7 +773,8 @@ static int tvp5150_set_ctrl(struct i2c_client *c, struct v4l2_control *ctrl)
{
/* struct tvp5150 *decoder = i2c_get_clientdata(c); */
switch (ctrl->id) {
switch (ctrl->id)
{
case V4L2_CID_BRIGHTNESS:
tvp5150_write(c, TVP5150_BRIGHT_CTL, ctrl->value);
return 0;
......@@ -894,8 +799,8 @@ static int tvp5150_command(struct i2c_client *c,
{
struct tvp5150 *decoder = i2c_get_clientdata(c);
switch (cmd) {
switch (cmd)
{
case 0:
case VIDIOC_INT_RESET:
tvp5150_reset(c);
......@@ -956,10 +861,9 @@ static int tvp5150_command(struct i2c_client *c,
if (svbi->service_set != 0) {
for (i = 0; i <= 23; i++) {
svbi->service_lines[1][i] = 0;
svbi->service_lines[0][i]=tvp5150_set_vbi(c,
vbi_ram_default,
svbi->service_lines[0][i],0xf0,i,3);
svbi->service_lines[0][i] =
tvp5150_set_vbi(c, vbi_ram_default,
svbi->service_lines[0][i], 0xf0, i, 3);
}
/* Enables FIFO */
tvp5150_write(c, TVP5150_FIFO_OUT_CTRL,1);
......@@ -971,7 +875,7 @@ static int tvp5150_command(struct i2c_client *c,
tvp5150_write(c, TVP5150_FULL_FIELD_ENA, 0);
/* 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);
}
break;
......@@ -981,7 +885,7 @@ static int tvp5150_command(struct i2c_client *c,
struct v4l2_format *fmt;
struct v4l2_sliced_vbi_format *svbi;
int i, mask=0;
int i, mask = 0;
fmt = arg;
if (fmt->type != V4L2_BUF_TYPE_SLICED_VBI_CAPTURE)
......@@ -990,11 +894,10 @@ static int tvp5150_command(struct i2c_client *c,
memset(svbi, 0, sizeof(*svbi));
for (i = 0; i <= 23; i++) {
svbi->service_lines[0][i]=tvp5150_get_vbi(c,
vbi_ram_default,i);
mask|=svbi->service_lines[0][i];
svbi->service_lines[0][i] = tvp5150_get_vbi(c, vbi_ram_default, i);
mask |= svbi->service_lines[0][i];
}
svbi->service_set=mask;
svbi->service_set = mask;
break;
}
......@@ -1021,79 +924,75 @@ static int tvp5150_command(struct i2c_client *c,
break;
case VIDIOC_G_TUNER:
{
struct v4l2_tuner *vt = arg;
int status = tvp5150_read(c, 0x88);
{
struct v4l2_tuner *vt = arg;
int status = tvp5150_read(c, 0x88);
vt->signal = ((status & 0x04) && (status & 0x02)) ? 0xffff : 0x0;
break;
}
vt->signal = ((status & 0x04) && (status & 0x02)) ? 0xffff : 0x0;
break;
}
case VIDIOC_QUERYCTRL:
{
struct v4l2_queryctrl *qc = arg;
int i;
{
struct v4l2_queryctrl *qc = arg;
int i;
tvp5150_dbg(1, "VIDIOC_QUERYCTRL called\n");
tvp5150_dbg(1, "VIDIOC_QUERYCTRL called\n");
for (i = 0; i < ARRAY_SIZE(tvp5150_qctrl); i++)
if (qc->id && qc->id == tvp5150_qctrl[i].id) {
memcpy(qc, &(tvp5150_qctrl[i]),
sizeof(*qc));
return 0;
}
for (i = 0; i < ARRAY_SIZE(tvp5150_qctrl); i++)
if (qc->id && qc->id == tvp5150_qctrl[i].id) {
memcpy(qc, &(tvp5150_qctrl[i]),
sizeof(*qc));
return 0;
}
return -EINVAL;
}
return -EINVAL;
}
case VIDIOC_G_CTRL:
{
struct v4l2_control *ctrl = arg;
tvp5150_dbg(1, "VIDIOC_G_CTRL called\n");
{
struct v4l2_control *ctrl = arg;
tvp5150_dbg(1, "VIDIOC_G_CTRL called\n");
return tvp5150_get_ctrl(c, ctrl);
}
return tvp5150_get_ctrl(c, ctrl);
}
case VIDIOC_S_CTRL:
{
struct v4l2_control *ctrl = arg;
u8 i, n;
n = ARRAY_SIZE(tvp5150_qctrl);
for (i = 0; i < n; i++)
if (ctrl->id == tvp5150_qctrl[i].id) {
if (ctrl->value <
tvp5150_qctrl[i].minimum
|| ctrl->value >
tvp5150_qctrl[i].maximum)
return -ERANGE;
tvp5150_dbg(1,
"VIDIOC_S_CTRL: id=%d, value=%d\n",
ctrl->id, ctrl->value);
return tvp5150_set_ctrl(c, ctrl);
}
return -EINVAL;
}
{
struct v4l2_control *ctrl = arg;
u8 i, n;
n = ARRAY_SIZE(tvp5150_qctrl);
for (i = 0; i < n; i++)
if (ctrl->id == tvp5150_qctrl[i].id) {
if (ctrl->value < tvp5150_qctrl[i].minimum ||
ctrl->value > tvp5150_qctrl[i].maximum)
return -ERANGE;
tvp5150_dbg(1,
"VIDIOC_S_CTRL: id=%d, value=%d\n",
ctrl->id, ctrl->value);
return tvp5150_set_ctrl(c, ctrl);
}
return -EINVAL;
}
case VIDIOC_QUERYSTD:
{
v4l2_std_id *id = (v4l2_std_id *)arg;
tvp5150_get_std(c, id);
break;
}
{
v4l2_std_id *id = (v4l2_std_id *)arg;
tvp5150_get_std(c, id);
break;
}
case VPFE_CMD_CONFIG_CAPTURE:
{
struct vpfe_capture_params *params =
(struct vpfe_capture_params *)arg;
if (params->amuxmode == VPFE_AMUX_COMPOSITE0) {
decoder->route.input = TVP5150_COMPOSITE0;
} else if (params->amuxmode == VPFE_AMUX_COMPOSITE1) {
decoder->route.input = TVP5150_COMPOSITE1;
} else {
decoder->route.input = TVP5150_SVIDEO;
}
tvp5150_selmux(c);
tvp5150_set_std(c, params->mode);
decoder->norm = params->mode;
break;
}
{
struct vpfe_capture_params *params = (struct vpfe_capture_params *)arg;
if (params->amuxmode == VPFE_AMUX_COMPOSITE0) {
decoder->route.input = TVP5150_COMPOSITE0;
} else if (params->amuxmode == VPFE_AMUX_COMPOSITE1) {
decoder->route.input = TVP5150_COMPOSITE1;
} else {
decoder->route.input = TVP5150_SVIDEO;
}
tvp5150_selmux(c);
tvp5150_set_std(c, params->mode);
decoder->norm = params->mode;
break;
}
default:
return -EINVAL;
}
......@@ -1119,16 +1018,15 @@ static int tvp5150_detect_client(struct i2c_adapter *adapter,
if (debug)
printk( KERN_INFO
"tvp5150.c: detecting tvp5150 client on address 0x%x\n",
address << 1);
"tvp5150.c: detecting tvp5150 client on address 0x%x\n",
address << 1);
client_template.adapter = adapter;
client_template.addr = address;
/* Check if the adapter supports the needed features */
if (!i2c_check_functionality
(adapter,
I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
(adapter, I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE_DATA))
return 0;
tvp5150_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);
......@@ -1168,8 +1066,8 @@ static int tvp5150_attach_adapter(struct i2c_adapter *adapter)
{
if (debug)
printk( KERN_INFO
"tvp5150.c: starting probe for adapter %s (0x%x)\n",
adapter->name, adapter->id);
"tvp5150.c: starting probe for adapter %s (0x%x)\n",
adapter->name, adapter->id);
return i2c_probe(adapter, &addr_data, &tvp5150_detect_client);
}
......@@ -1179,8 +1077,8 @@ static int tvp5150_detach_client(struct i2c_client *c)
int err;
tvp5150_dbg(1,
"tvp5150.c: removing tvp5150 adapter on address 0x%x\n",
c->addr << 1);
"tvp5150.c: removing tvp5150 adapter on address 0x%x\n",
c->addr << 1);
err = i2c_detach_client(c);
if (err) {
......@@ -1259,7 +1157,7 @@ static struct vpfe_capture_device tvp5150_device = {
static int __init tvp5150_init(void)
{
i2c_add_driver(&driver);
return vpfe_capture_device_register(&tvp5150_device);
return vpfe_capture_device_register(&tvp5150_device);
}
static void __exit tvp5150_exit(void)
......
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