You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
V4L/DVB (10958): cx231xx: some additional CodingStyle and minor fixes
changed the pcb-config.c/h to pcb-cfg.c/h for short names. Signed-off-by: Srinivasa Deevi <srinivasa.deevi@conexant.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
b925517645
commit
6e4f574ba4
@@ -807,6 +807,8 @@ source "drivers/media/video/hdpvr/Kconfig"
|
||||
|
||||
source "drivers/media/video/em28xx/Kconfig"
|
||||
|
||||
source "drivers/media/video/cx231xx/Kconfig"
|
||||
|
||||
source "drivers/media/video/usbvision/Kconfig"
|
||||
|
||||
source "drivers/media/video/usbvideo/Kconfig"
|
||||
|
||||
@@ -1,35 +1,35 @@
|
||||
config VIDEO_CX231XX
|
||||
tristate "Conexant cx231xx USB video capture support"
|
||||
depends on VIDEO_DEV && I2C && INPUT
|
||||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
select VIDEO_IR
|
||||
select VIDEOBUF_VMALLOC
|
||||
select VIDEO_CX25840
|
||||
select VIDEO_CX231XX_ALSA
|
||||
tristate "Conexant cx231xx USB video capture support"
|
||||
depends on VIDEO_DEV && I2C && INPUT
|
||||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
select VIDEO_IR
|
||||
select VIDEOBUF_VMALLOC
|
||||
select VIDEO_CX25840
|
||||
select VIDEO_CX231XX_ALSA
|
||||
|
||||
---help---
|
||||
This is a video4linux driver for Conexant 231xx USB based TV cards.
|
||||
---help---
|
||||
This is a video4linux driver for Conexant 231xx USB based TV cards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called cx231xx
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called cx231xx
|
||||
|
||||
config VIDEO_CX231XX_ALSA
|
||||
tristate "Conexant Cx231xx ALSA audio module"
|
||||
depends on VIDEO_CX231XX && SND
|
||||
select SND_PCM
|
||||
depends on VIDEO_CX231XX && SND
|
||||
select SND_PCM
|
||||
|
||||
---help---
|
||||
This is an ALSA driver for Cx231xx USB based TV cards.
|
||||
---help---
|
||||
This is an ALSA driver for Cx231xx USB based TV cards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called cx231xx-alsa
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called cx231xx-alsa
|
||||
|
||||
config VIDEO_CX231XX_DVB
|
||||
tristate "DVB/ATSC Support for Cx231xx based TV cards"
|
||||
depends on VIDEO_CX231XX && DVB_CORE
|
||||
select VIDEOBUF_DVB
|
||||
select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMIZE
|
||||
---help---
|
||||
This adds support for DVB cards based on the
|
||||
Conexant cx231xx chips.
|
||||
tristate "DVB/ATSC Support for Cx231xx based TV cards"
|
||||
depends on VIDEO_CX231XX && DVB_CORE
|
||||
select VIDEOBUF_DVB
|
||||
select MEDIA_TUNER_XC5000 if !DVB_FE_CUSTOMISE
|
||||
---help---
|
||||
This adds support for DVB cards based on the
|
||||
Conexant cx231xx chips.
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
cx231xx-objs := cx231xx-video.o cx231xx-i2c.o cx231xx-cards.o cx231xx-core.o \
|
||||
cx231xx-avcore.o cx231xx-pcb-config.o cx231xx-vbi.o
|
||||
|
||||
cx231xx-alsa-objs := cx231xx-audio.o
|
||||
|
||||
cx231xx-avcore.o cx231xx-pcb-cfg.o cx231xx-vbi.o
|
||||
|
||||
obj-$(CONFIG_VIDEO_CX231XX) += cx231xx.o
|
||||
obj-$(CONFIG_VIDEO_CX231XX_ALSA) += cx231xx-alsa.o
|
||||
obj-$(CONFIG_VIDEO_CX231XX_ALSA) += cx231xx-audio.o
|
||||
obj-$(CONFIG_VIDEO_CX231XX_DVB) += cx231xx-dvb.o
|
||||
|
||||
EXTRA_CFLAGS += -Idrivers/media/video
|
||||
|
||||
@@ -38,16 +38,15 @@
|
||||
#include <sound/control.h>
|
||||
#include <media/v4l2-common.h>
|
||||
#include "cx231xx.h"
|
||||
#include "cx231xx-pcb-config.h"
|
||||
|
||||
static int debug;
|
||||
module_param(debug, int, 0644);
|
||||
MODULE_PARM_DESC(debug, "activates debug info");
|
||||
|
||||
#define dprintk(fmt, arg...) do { \
|
||||
if (debug) \
|
||||
printk(KERN_INFO "cx231xx-audio %s: " fmt, \
|
||||
__func__, ##arg); \
|
||||
if (debug) \
|
||||
printk(KERN_INFO "cx231xx-audio %s: " fmt, \
|
||||
__func__, ##arg); \
|
||||
} while (0)
|
||||
|
||||
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
|
||||
@@ -262,9 +261,10 @@ static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs,
|
||||
}
|
||||
|
||||
static struct snd_pcm_hardware snd_cx231xx_hw_capture = {
|
||||
.info = SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP_VALID,
|
||||
.info = SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -61,127 +61,108 @@ static struct cx231xx_reg_seq RDE250_XCV_TUNER[] = {
|
||||
* Board definitions
|
||||
*/
|
||||
struct cx231xx_board cx231xx_boards[] = {
|
||||
|
||||
[CX231XX_BOARD_UNKNOWN] = {
|
||||
.name = "Unknown CX231xx video grabber",
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.input = {{
|
||||
.type = CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_SVIDEO,
|
||||
.vmux =
|
||||
CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 << 8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux =
|
||||
CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
} },
|
||||
},
|
||||
|
||||
.name = "Unknown CX231xx video grabber",
|
||||
.tuner_type = TUNER_ABSENT,
|
||||
.input = {{
|
||||
.type = CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_SVIDEO,
|
||||
.vmux = CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 << 8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}
|
||||
},
|
||||
},
|
||||
[CX231XX_BOARD_CNXT_RDE_250] = {
|
||||
.name = "Conexant Hybrid TV - RDE250",
|
||||
.valid = CX231XX_BOARD_VALIDATED,
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_gpio = RDE250_XCV_TUNER,
|
||||
.tuner_sif_gpio = 0x05,
|
||||
.tuner_scl_gpio = 0x1a,
|
||||
.tuner_sda_gpio = 0x1b,
|
||||
.decoder = CX231XX_AVDECODER,
|
||||
.demod_xfer_mode = 0,
|
||||
.ctl_pin_status_mask = 0xFFFFFFC4,
|
||||
.agc_analog_digital_select_gpio = 0x0c,
|
||||
.gpio_pin_status_mask = 0x4001000,
|
||||
.tuner_i2c_master = 1,
|
||||
.demod_i2c_master = 2,
|
||||
.has_dvb = 1,
|
||||
.demod_addr = 0x02,
|
||||
.norm = V4L2_STD_PAL,
|
||||
.name = "Conexant Hybrid TV - RDE250",
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_gpio = RDE250_XCV_TUNER,
|
||||
.tuner_sif_gpio = 0x05,
|
||||
.tuner_scl_gpio = 0x1a,
|
||||
.tuner_sda_gpio = 0x1b,
|
||||
.decoder = CX231XX_AVDECODER,
|
||||
.demod_xfer_mode = 0,
|
||||
.ctl_pin_status_mask = 0xFFFFFFC4,
|
||||
.agc_analog_digital_select_gpio = 0x0c,
|
||||
.gpio_pin_status_mask = 0x4001000,
|
||||
.tuner_i2c_master = 1,
|
||||
.demod_i2c_master = 2,
|
||||
.has_dvb = 1,
|
||||
.demod_addr = 0x02,
|
||||
.norm = V4L2_STD_PAL,
|
||||
|
||||
.input = {{
|
||||
.type =
|
||||
CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux =
|
||||
CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_SVIDEO,
|
||||
.vmux =
|
||||
CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 <<
|
||||
8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux =
|
||||
CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
} },
|
||||
},
|
||||
.input = {{
|
||||
.type = CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_SVIDEO,
|
||||
.vmux = CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 << 8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
[CX231XX_BOARD_CNXT_RDU_250] = {
|
||||
.name = "Conexant Hybrid TV - RDU250",
|
||||
.valid = CX231XX_BOARD_VALIDATED,
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_gpio = RDE250_XCV_TUNER,
|
||||
.tuner_sif_gpio = 0x05,
|
||||
.tuner_scl_gpio = 0x1a,
|
||||
.tuner_sda_gpio = 0x1b,
|
||||
.decoder = CX231XX_AVDECODER,
|
||||
.demod_xfer_mode = 0,
|
||||
.ctl_pin_status_mask = 0xFFFFFFC4,
|
||||
.agc_analog_digital_select_gpio = 0x0c,
|
||||
.gpio_pin_status_mask = 0x4001000,
|
||||
.tuner_i2c_master = 1,
|
||||
.demod_i2c_master = 2,
|
||||
.has_dvb = 1,
|
||||
.demod_addr = 0x32,
|
||||
.norm = V4L2_STD_NTSC,
|
||||
.name = "Conexant Hybrid TV - RDU250",
|
||||
.tuner_type = TUNER_XC5000,
|
||||
.tuner_addr = 0x61,
|
||||
.tuner_gpio = RDE250_XCV_TUNER,
|
||||
.tuner_sif_gpio = 0x05,
|
||||
.tuner_scl_gpio = 0x1a,
|
||||
.tuner_sda_gpio = 0x1b,
|
||||
.decoder = CX231XX_AVDECODER,
|
||||
.demod_xfer_mode = 0,
|
||||
.ctl_pin_status_mask = 0xFFFFFFC4,
|
||||
.agc_analog_digital_select_gpio = 0x0c,
|
||||
.gpio_pin_status_mask = 0x4001000,
|
||||
.tuner_i2c_master = 1,
|
||||
.demod_i2c_master = 2,
|
||||
.has_dvb = 1,
|
||||
.demod_addr = 0x32,
|
||||
.norm = V4L2_STD_NTSC,
|
||||
|
||||
.input = {{
|
||||
.type =
|
||||
CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux =
|
||||
CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type =
|
||||
CX231XX_VMUX_SVIDEO,
|
||||
.vmux =
|
||||
CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 <<
|
||||
8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux =
|
||||
CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
} },
|
||||
},
|
||||
.input = {{
|
||||
.type = CX231XX_VMUX_TELEVISION,
|
||||
.vmux = CX231XX_VIN_3_1,
|
||||
.amux = CX231XX_AMUX_VIDEO,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_COMPOSITE1,
|
||||
.vmux = CX231XX_VIN_2_1,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}, {
|
||||
.type = CX231XX_VMUX_SVIDEO,
|
||||
.vmux = CX231XX_VIN_1_1 |
|
||||
(CX231XX_VIN_1_2 << 8) |
|
||||
CX25840_SVIDEO_ON,
|
||||
.amux = CX231XX_AMUX_LINE_IN,
|
||||
.gpio = 0,
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
const unsigned int cx231xx_bcount = ARRAY_SIZE(cx231xx_boards);
|
||||
|
||||
@@ -243,25 +224,11 @@ void cx231xx_pre_card_setup(struct cx231xx *dev)
|
||||
cx231xx_info("Identified as %s (card=%d)\n",
|
||||
dev->board.name, dev->model);
|
||||
|
||||
/* Do card specific if any */
|
||||
switch (dev->model) {
|
||||
case CX231XX_BOARD_CNXT_RDE_250:
|
||||
/* do card specific GPIO settings if required */
|
||||
cx231xx_info("Precard: Board is Conexnat RDE 250\n");
|
||||
/* set the direction for GPIO pins */
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1);
|
||||
break;
|
||||
case CX231XX_BOARD_CNXT_RDU_250:
|
||||
/* do card specific GPIO settings if required */
|
||||
cx231xx_info("Precard: Board is Conexnat RDU 250\n");
|
||||
/* set the direction for GPIO pins */
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1);
|
||||
break;
|
||||
}
|
||||
cx231xx_info("Precard: Board is %s\n", dev->board.name);
|
||||
/* set the direction for GPIO pins */
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_value(dev, dev->board.tuner_gpio->bit, 1);
|
||||
cx231xx_set_gpio_direction(dev, dev->board.tuner_sif_gpio, 1);
|
||||
|
||||
/* request some modules if any required */
|
||||
|
||||
@@ -362,15 +329,6 @@ void cx231xx_card_setup(struct cx231xx *dev)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->board.valid == CX231XX_BOARD_NOT_VALIDATED) {
|
||||
cx231xx_errdev("\n\n");
|
||||
cx231xx_errdev("The support for this board weren't "
|
||||
"valid yet.\n");
|
||||
cx231xx_errdev("Please send a report of having this working\n");
|
||||
cx231xx_errdev("not to V4L mailing list (and/or to other "
|
||||
"addresses)\n\n");
|
||||
}
|
||||
|
||||
/* request some modules */
|
||||
if (dev->board.decoder == CX231XX_AVDECODER) {
|
||||
cx231xx_info(": Requesting cx25840 module\n");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -54,7 +54,6 @@ static int alt = CX231XX_PINOUT;
|
||||
module_param(alt, int, 0644);
|
||||
MODULE_PARM_DESC(alt, "alternate setting to use for video endpoint");
|
||||
|
||||
/* FIXME */
|
||||
#define cx231xx_isocdbg(fmt, arg...) do {\
|
||||
if (core_debug) \
|
||||
printk(KERN_INFO "%s %s :"fmt, \
|
||||
@@ -308,7 +307,7 @@ int cx231xx_read_ctrl_reg(struct cx231xx *dev, u8 req, u16 reg,
|
||||
reg & 0xff, reg >> 8, len & 0xff, len >> 8);
|
||||
}
|
||||
|
||||
/* mutex_lock(&dev->ctrl_urb_lock); */
|
||||
mutex_lock(&dev->ctrl_urb_lock);
|
||||
ret = usb_control_msg(dev->udev, pipe, req,
|
||||
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||
val, reg, dev->urb_buf, len, HZ);
|
||||
@@ -321,7 +320,7 @@ int cx231xx_read_ctrl_reg(struct cx231xx *dev, u8 req, u16 reg,
|
||||
if (len)
|
||||
memcpy(buf, dev->urb_buf, len);
|
||||
|
||||
/* mutex_unlock(&dev->ctrl_urb_lock); */
|
||||
mutex_unlock(&dev->ctrl_urb_lock);
|
||||
|
||||
if (reg_debug) {
|
||||
int byte;
|
||||
@@ -369,13 +368,13 @@ int cx231xx_send_vendor_cmd(struct cx231xx *dev,
|
||||
cx231xx_isocdbg("\n");
|
||||
}
|
||||
|
||||
/* mutex_lock(&dev->ctrl_urb_lock); */
|
||||
mutex_lock(&dev->ctrl_urb_lock);
|
||||
ret = usb_control_msg(dev->udev, pipe, ven_req->bRequest,
|
||||
ven_req->
|
||||
direction | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||
ven_req->wValue, ven_req->wIndex, ven_req->pBuff,
|
||||
ven_req->wLength, HZ);
|
||||
/* mutex_unlock(&dev->ctrl_urb_lock); */
|
||||
mutex_unlock(&dev->ctrl_urb_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -432,12 +431,12 @@ int cx231xx_write_ctrl_reg(struct cx231xx *dev, u8 req, u16 reg, char *buf,
|
||||
cx231xx_isocdbg("\n");
|
||||
}
|
||||
|
||||
/* mutex_lock(&dev->ctrl_urb_lock); */
|
||||
mutex_lock(&dev->ctrl_urb_lock);
|
||||
memcpy(dev->urb_buf, buf, len);
|
||||
ret = usb_control_msg(dev->udev, pipe, req,
|
||||
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||
val, reg, dev->urb_buf, len, HZ);
|
||||
/* mutex_unlock(&dev->ctrl_urb_lock); */
|
||||
mutex_unlock(&dev->ctrl_urb_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ MODULE_PARM_DESC(i2c_debug, "enable debug messages [i2c]");
|
||||
#define dprintk1(lvl, fmt, args...) \
|
||||
do { \
|
||||
if (i2c_debug >= lvl) { \
|
||||
printk(fmt, ##args); \
|
||||
} \
|
||||
printk(fmt, ##args); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define dprintk2(lvl, fmt, args...) \
|
||||
@@ -77,13 +77,10 @@ int cx231xx_i2c_send_bytes(struct i2c_adapter *i2c_adap,
|
||||
size = msg->len;
|
||||
|
||||
if (size == 2) { /* register write sub addr */
|
||||
|
||||
/* Just writing sub address will cause problem to XC5000
|
||||
So ignore the request */
|
||||
/* Just writing sub address will cause problem
|
||||
* to XC5000. So ignore the request */
|
||||
return 0;
|
||||
|
||||
} else if (size == 4) { /* register write with sub addr */
|
||||
|
||||
if (msg->len >= 2)
|
||||
saddr = msg->buf[0] << 8 | msg->buf[1];
|
||||
else if (msg->len == 1)
|
||||
@@ -117,7 +114,6 @@ int cx231xx_i2c_send_bytes(struct i2c_adapter *i2c_adap,
|
||||
msg->buf,
|
||||
msg->len);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* special case for Xc5000 tuner case */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
cx231xx-pcb-cfg.h - driver for Conexant
|
||||
Cx23100/101/102 USB video capture devices
|
||||
|
||||
Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#ifndef _PCB_CONFIG_H_
|
||||
#define _PCB_CONFIG_H_
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
/***************************************************************************
|
||||
* Class Information *
|
||||
***************************************************************************/
|
||||
#define CLASS_DEFAULT 0xFF
|
||||
|
||||
enum VENDOR_REQUEST_TYPE {
|
||||
/* Set/Get I2C */
|
||||
VRT_SET_I2C0 = 0x0,
|
||||
VRT_SET_I2C1 = 0x1,
|
||||
VRT_SET_I2C2 = 0x2,
|
||||
VRT_GET_I2C0 = 0x4,
|
||||
VRT_GET_I2C1 = 0x5,
|
||||
VRT_GET_I2C2 = 0x6,
|
||||
|
||||
/* Set/Get GPIO */
|
||||
VRT_SET_GPIO = 0x8,
|
||||
VRT_GET_GPIO = 0x9,
|
||||
|
||||
/* Set/Get GPIE */
|
||||
VRT_SET_GPIE = 0xA,
|
||||
VRT_GET_GPIE = 0xB,
|
||||
|
||||
/* Set/Get Register Control/Status */
|
||||
VRT_SET_REGISTER = 0xC,
|
||||
VRT_GET_REGISTER = 0xD,
|
||||
|
||||
/* Get Extended Compat ID Descriptor */
|
||||
VRT_GET_EXTCID_DESC = 0xFF,
|
||||
};
|
||||
|
||||
enum BYTE_ENABLE_MASK {
|
||||
ENABLE_ONE_BYTE = 0x1,
|
||||
ENABLE_TWE_BYTE = 0x3,
|
||||
ENABLE_THREE_BYTE = 0x7,
|
||||
ENABLE_FOUR_BYTE = 0xF,
|
||||
};
|
||||
|
||||
#define SPEED_MASK 0x1
|
||||
enum USB_SPEED{
|
||||
FULL_SPEED = 0x0, /* 0: full speed */
|
||||
HIGH_SPEED = 0x1 /* 1: high speed */
|
||||
};
|
||||
|
||||
enum _true_false{
|
||||
FALSE = 0,
|
||||
TRUE = 1
|
||||
};
|
||||
|
||||
#define TS_MASK 0x6
|
||||
enum TS_PORT{
|
||||
NO_TS_PORT = 0x0, /* 2'b00: Neither port used. PCB not a Hybrid,
|
||||
only offers Analog TV or Video */
|
||||
TS1_PORT = 0x4, /* 2'b10: TS1 Input (Hybrid mode :
|
||||
Digital or External Analog/Compressed source) */
|
||||
TS1_TS2_PORT = 0x6, /* 2'b11: TS1 & TS2 Inputs
|
||||
(Dual inputs from Digital and/or
|
||||
External Analog/Compressed sources) */
|
||||
TS1_EXT_CLOCK = 0x6, /* 2'b11: TS1 & TS2 as selector
|
||||
to external clock */
|
||||
TS1VIP_TS2_PORT = 0x2 /* 2'b01: TS1 used as 656/VIP Output,
|
||||
TS2 Input (from Compressor) */
|
||||
};
|
||||
|
||||
#define EAVP_MASK 0x8
|
||||
enum EAV_PRESENT{
|
||||
NO_EXTERNAL_AV = 0x0, /* 0: No External A/V inputs
|
||||
(no need for Flatiron),
|
||||
Analog Tuner must be present */
|
||||
EXTERNAL_AV = 0x8 /* 1: External A/V inputs
|
||||
present (requires Flatiron) */
|
||||
};
|
||||
|
||||
#define ATM_MASK 0x30
|
||||
enum AT_MODE{
|
||||
DIF_TUNER = 0x30, /* 2'b11: IF Tuner (requires use of DIF) */
|
||||
BASEBAND_SOUND = 0x20, /* 2'b10: Baseband Composite &
|
||||
Sound-IF Signals present */
|
||||
NO_TUNER = 0x10 /* 2'b0x: No Analog Tuner present */
|
||||
};
|
||||
|
||||
#define PWR_SEL_MASK 0x40
|
||||
enum POWE_TYPE{
|
||||
SELF_POWER = 0x0, /* 0: self power */
|
||||
BUS_POWER = 0x40 /* 1: bus power */
|
||||
};
|
||||
|
||||
enum USB_POWE_TYPE{
|
||||
USB_SELF_POWER = 0,
|
||||
USB_BUS_POWER
|
||||
};
|
||||
|
||||
#define BO_0_MASK 0x80
|
||||
enum AVDEC_STATUS{
|
||||
AVDEC_DISABLE = 0x0, /* 0: A/V Decoder Disabled */
|
||||
AVDEC_ENABLE = 0x80 /* 1: A/V Decoder Enabled */
|
||||
};
|
||||
|
||||
#define BO_1_MASK 0x100
|
||||
enum HAMMERHEAD__STATUS{
|
||||
HAMMERHEAD_ONLY = 0x0, /* 0:Hammerhead Only */
|
||||
HAMMERHEAD_SC = 0x100 /* 1:Hammerhead and SC */
|
||||
};
|
||||
|
||||
#define BUSPOWER_MASK 0xC4 /* for Polaris spec 0.8 */
|
||||
#define SELFPOWER_MASK 0x86
|
||||
|
||||
/***************************************************************************/
|
||||
#define NOT_DECIDE_YET 0xFE
|
||||
#define NOT_SUPPORTED 0xFF
|
||||
|
||||
/***************************************************************************
|
||||
* for mod field use *
|
||||
***************************************************************************/
|
||||
#define MOD_DIGITAL 0x1
|
||||
#define MOD_ANALOG 0x2
|
||||
#define MOD_DIF 0x4
|
||||
#define MOD_EXTERNAL 0x8
|
||||
#define CAP_ALL_MOD 0x0f
|
||||
|
||||
/***************************************************************************
|
||||
* source define *
|
||||
***************************************************************************/
|
||||
#define SOURCE_DIGITAL 0x1
|
||||
#define SOURCE_ANALOG 0x2
|
||||
#define SOURCE_DIF 0x4
|
||||
#define SOURCE_EXTERNAL 0x8
|
||||
#define SOURCE_TS_BDA 0x10
|
||||
#define SOURCE_TS_ENCODE 0x20
|
||||
#define SOURCE_TS_EXTERNAL 0x40
|
||||
|
||||
/***************************************************************************
|
||||
* interface information define *
|
||||
***************************************************************************/
|
||||
struct INTERFACE_INFO {
|
||||
u8 interrupt_index;
|
||||
u8 ts1_index;
|
||||
u8 ts2_index;
|
||||
u8 audio_index;
|
||||
u8 video_index;
|
||||
u8 vanc_index; /* VBI */
|
||||
u8 hanc_index; /* Sliced CC */
|
||||
u8 ir_index;
|
||||
};
|
||||
|
||||
enum INDEX_INTERFACE_INFO{
|
||||
INDEX_INTERRUPT = 0x0,
|
||||
INDEX_TS1,
|
||||
INDEX_TS2,
|
||||
INDEX_AUDIO,
|
||||
INDEX_VIDEO,
|
||||
INDEX_VANC,
|
||||
INDEX_HANC,
|
||||
INDEX_IR,
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
* configuration information define *
|
||||
***************************************************************************/
|
||||
struct CONFIG_INFO {
|
||||
u8 config_index;
|
||||
struct INTERFACE_INFO interface_info;
|
||||
};
|
||||
|
||||
struct pcb_config {
|
||||
u8 index;
|
||||
u8 type; /* bus power or self power,
|
||||
self power--0, bus_power--1 */
|
||||
u8 speed; /* usb speed, 2.0--1, 1.1--0 */
|
||||
u8 mode; /* digital , anlog, dif or external A/V */
|
||||
u32 ts1_source; /* three source -- BDA,External,encode */
|
||||
u32 ts2_source;
|
||||
u32 analog_source;
|
||||
u8 digital_index; /* bus-power used */
|
||||
u8 analog_index; /* bus-power used */
|
||||
u8 dif_index; /* bus-power used */
|
||||
u8 external_index; /* bus-power used */
|
||||
u8 config_num; /* current config num, 0,1,2,
|
||||
for self-power, always 0 */
|
||||
struct CONFIG_INFO hs_config_info[3];
|
||||
struct CONFIG_INFO fs_config_info[3];
|
||||
};
|
||||
|
||||
enum INDEX_PCB_CONFIG{
|
||||
INDEX_SELFPOWER_DIGITAL_ONLY = 0x0,
|
||||
INDEX_SELFPOWER_DUAL_DIGITAL,
|
||||
INDEX_SELFPOWER_ANALOG_ONLY,
|
||||
INDEX_SELFPOWER_DUAL,
|
||||
INDEX_SELFPOWER_TRIPLE,
|
||||
INDEX_SELFPOWER_COMPRESSOR,
|
||||
INDEX_BUSPOWER_DIGITAL_ONLY,
|
||||
INDEX_BUSPOWER_ANALOG_ONLY,
|
||||
INDEX_BUSPOWER_DIF_ONLY,
|
||||
INDEX_BUSPOWER_EXTERNAL_ONLY,
|
||||
INDEX_BUSPOWER_EXTERNAL_ANALOG,
|
||||
INDEX_BUSPOWER_EXTERNAL_DIF,
|
||||
INDEX_BUSPOWER_EXTERNAL_DIGITAL,
|
||||
INDEX_BUSPOWER_DIGITAL_ANALOG,
|
||||
INDEX_BUSPOWER_DIGITAL_DIF,
|
||||
INDEX_BUSPOWER_DIGITAL_ANALOG_EXTERNAL,
|
||||
INDEX_BUSPOWER_DIGITAL_DIF_EXTERNAL,
|
||||
};
|
||||
|
||||
/***************************************************************************/
|
||||
struct cx231xx;
|
||||
|
||||
u32 initialize_cx231xx(struct cx231xx *p_dev);
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1655,10 +1655,12 @@ static int vidioc_querycap(struct file *file, void *priv,
|
||||
|
||||
cap->capabilities = V4L2_CAP_VBI_CAPTURE |
|
||||
#if 0
|
||||
V4L2_CAP_SLICED_VBI_CAPTURE |
|
||||
V4L2_CAP_SLICED_VBI_CAPTURE |
|
||||
#endif
|
||||
V4L2_CAP_VIDEO_CAPTURE |
|
||||
V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
|
||||
V4L2_CAP_VIDEO_CAPTURE |
|
||||
V4L2_CAP_AUDIO |
|
||||
V4L2_CAP_READWRITE |
|
||||
V4L2_CAP_STREAMING;
|
||||
|
||||
if (dev->tuner_type != TUNER_ABSENT)
|
||||
cap->capabilities |= V4L2_CAP_TUNER;
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#endif
|
||||
|
||||
#include "cx231xx-reg.h"
|
||||
#include "cx231xx-pcb-config.h"
|
||||
#include "cx231xx-pcb-cfg.h"
|
||||
#include "cx231xx-conf-reg.h"
|
||||
|
||||
#define DRIVER_NAME "cx231xx"
|
||||
@@ -389,7 +389,7 @@ struct cx231xx_i2c_xfer_data {
|
||||
u8 *p_buffer; /* pointer to the buffer */
|
||||
};
|
||||
|
||||
struct VENDOR_REQUEST_IN{
|
||||
struct VENDOR_REQUEST_IN {
|
||||
u8 bRequest;
|
||||
u16 wValue;
|
||||
u16 wIndex;
|
||||
@@ -407,7 +407,7 @@ struct cx231xx_ctrl {
|
||||
u32 shift;
|
||||
};
|
||||
|
||||
enum TRANSFER_TYPE{
|
||||
enum TRANSFER_TYPE {
|
||||
Raw_Video = 0,
|
||||
Audio,
|
||||
Vbi, /* VANC */
|
||||
@@ -581,12 +581,14 @@ int cx231xx_colibri_init_channels(struct cx231xx *dev);
|
||||
int cx231xx_colibri_setup_AFE_for_baseband(struct cx231xx *dev);
|
||||
int cx231xx_colibri_set_input_mux(struct cx231xx *dev, u32 input_mux);
|
||||
int cx231xx_colibri_set_mode(struct cx231xx *dev, enum AFE_MODE mode);
|
||||
int cx231xx_colibri_update_power_control(struct cx231xx *dev, AV_MODE avmode);
|
||||
int cx231xx_colibri_update_power_control(struct cx231xx *dev,
|
||||
enum AV_MODE avmode);
|
||||
int cx231xx_colibri_adjust_ref_count(struct cx231xx *dev, u32 video_input);
|
||||
|
||||
/* flatiron related functions */
|
||||
int cx231xx_flatiron_initialize(struct cx231xx *dev);
|
||||
int cx231xx_flatiron_update_power_control(struct cx231xx *dev, AV_MODE avmode);
|
||||
int cx231xx_flatiron_update_power_control(struct cx231xx *dev,
|
||||
enum AV_MODE avmode);
|
||||
int cx231xx_flatiron_set_audio_input(struct cx231xx *dev, u8 audio_input);
|
||||
|
||||
/* DIF related functions */
|
||||
@@ -692,7 +694,7 @@ int cx231xx_stop_stream(struct cx231xx *dev, u32 ep_mask);
|
||||
int cx231xx_initialize_stream_xfer(struct cx231xx *dev, u32 media_type);
|
||||
|
||||
/* Power control functions */
|
||||
int cx231xx_set_power_mode(struct cx231xx *dev, AV_MODE mode);
|
||||
int cx231xx_set_power_mode(struct cx231xx *dev, enum AV_MODE mode);
|
||||
int cx231xx_power_suspend(struct cx231xx *dev);
|
||||
|
||||
/* chip specific control functions */
|
||||
|
||||
Reference in New Issue
Block a user