mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-18 06:50:08 +00:00
V4L/DVB (9752): Remove duplicated fields on em28xx_board and em28xx structs
Several fields are duplicated on both structs. Let's just copy em28xx_board instead. A later cleanup could just copy the fields that are changed, in order to keep em28xx_board const. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
d4d889e329
commit
505b6d0b77
@ -1262,19 +1262,9 @@ int em28xx_tuner_callback(void *ptr, int component, int command, int arg)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(em28xx_tuner_callback);
|
||||
|
||||
static void em28xx_set_model(struct em28xx *dev)
|
||||
static void inline em28xx_set_model(struct em28xx *dev)
|
||||
{
|
||||
dev->is_em2800 = em28xx_boards[dev->model].is_em2800;
|
||||
dev->has_msp34xx = em28xx_boards[dev->model].has_msp34xx;
|
||||
dev->tda9887_conf = em28xx_boards[dev->model].tda9887_conf;
|
||||
dev->decoder = em28xx_boards[dev->model].decoder;
|
||||
dev->xclk = em28xx_boards[dev->model].xclk;
|
||||
dev->i2c_speed = em28xx_boards[dev->model].i2c_speed;
|
||||
dev->max_range_640_480 = em28xx_boards[dev->model].max_range_640_480;
|
||||
dev->has_dvb = em28xx_boards[dev->model].has_dvb;
|
||||
dev->has_snapshot_button = em28xx_boards[dev->model].has_snapshot_button;
|
||||
dev->ir_codes = em28xx_boards[dev->model].ir_codes;
|
||||
dev->valid = em28xx_boards[dev->model].valid;
|
||||
memcpy(&dev->board, &em28xx_boards[dev->model], sizeof(dev->board));
|
||||
}
|
||||
|
||||
/* Since em28xx_pre_card_setup() requires a proper dev->model,
|
||||
@ -1331,16 +1321,16 @@ void em28xx_pre_card_setup(struct em28xx *dev)
|
||||
/* Those are the default values for the majority of boards
|
||||
Use those values if not specified otherwise at boards entry
|
||||
*/
|
||||
if (!dev->xclk)
|
||||
dev->xclk = EM28XX_XCLK_IR_RC5_MODE |
|
||||
EM28XX_XCLK_FREQUENCY_12MHZ;
|
||||
if (!dev->board.xclk)
|
||||
dev->board.xclk = EM28XX_XCLK_IR_RC5_MODE |
|
||||
EM28XX_XCLK_FREQUENCY_12MHZ;
|
||||
|
||||
if (!dev->i2c_speed)
|
||||
dev->i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
|
||||
EM28XX_I2C_FREQ_100_KHZ;
|
||||
if (!dev->board.i2c_speed)
|
||||
dev->board.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
|
||||
EM28XX_I2C_FREQ_100_KHZ;
|
||||
|
||||
em28xx_write_reg(dev, EM28XX_R0F_XCLK, dev->xclk & 0x7f);
|
||||
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, dev->i2c_speed);
|
||||
em28xx_write_reg(dev, EM28XX_R0F_XCLK, dev->board.xclk & 0x7f);
|
||||
em28xx_write_reg(dev, EM28XX_R06_I2C_CLK, dev->board.i2c_speed);
|
||||
msleep(50);
|
||||
|
||||
/* request some modules */
|
||||
@ -1694,7 +1684,7 @@ void em28xx_card_setup(struct em28xx *dev)
|
||||
|
||||
if (tv.audio_processor == V4L2_IDENT_MSPX4XX) {
|
||||
dev->i2s_speed = 2048000;
|
||||
dev->has_msp34xx = 1;
|
||||
dev->board.has_msp34xx = 1;
|
||||
}
|
||||
#ifdef CONFIG_MODULES
|
||||
if (tv.has_ir)
|
||||
@ -1727,10 +1717,10 @@ void em28xx_card_setup(struct em28xx *dev)
|
||||
break;
|
||||
}
|
||||
|
||||
if (dev->has_snapshot_button)
|
||||
if (dev->board.has_snapshot_button)
|
||||
em28xx_register_snapshot_button(dev);
|
||||
|
||||
if (dev->valid == EM28XX_BOARD_NOT_VALIDATED) {
|
||||
if (dev->board.valid == EM28XX_BOARD_NOT_VALIDATED) {
|
||||
em28xx_errdev("\n\n");
|
||||
em28xx_errdev("The support for this board weren't "
|
||||
"valid yet.\n");
|
||||
@ -1745,13 +1735,13 @@ void em28xx_card_setup(struct em28xx *dev)
|
||||
|
||||
#ifdef CONFIG_MODULES
|
||||
/* request some modules */
|
||||
if (dev->has_msp34xx)
|
||||
if (dev->board.has_msp34xx)
|
||||
request_module("msp3400");
|
||||
if (dev->decoder == EM28XX_SAA7113 || dev->decoder == EM28XX_SAA7114)
|
||||
if (dev->board.decoder == EM28XX_SAA7113 || dev->board.decoder == EM28XX_SAA7114)
|
||||
request_module("saa7115");
|
||||
if (dev->decoder == EM28XX_TVP5150)
|
||||
if (dev->board.decoder == EM28XX_TVP5150)
|
||||
request_module("tvp5150");
|
||||
if (dev->tuner_type != TUNER_ABSENT)
|
||||
if (dev->board.tuner_type != TUNER_ABSENT)
|
||||
request_module("tuner");
|
||||
#endif
|
||||
|
||||
|
@ -349,7 +349,7 @@ static int em28xx_set_audio_source(struct em28xx *dev)
|
||||
int ret;
|
||||
u8 input;
|
||||
|
||||
if (dev->is_em2800) {
|
||||
if (dev->board.is_em2800) {
|
||||
if (dev->ctl_ainput == EM28XX_AMUX_VIDEO)
|
||||
input = EM2800_AUDIO_SRC_TUNER;
|
||||
else
|
||||
@ -360,7 +360,7 @@ static int em28xx_set_audio_source(struct em28xx *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dev->has_msp34xx)
|
||||
if (dev->board.has_msp34xx)
|
||||
input = EM28XX_AUDIO_SRC_TUNER;
|
||||
else {
|
||||
switch (dev->ctl_ainput) {
|
||||
@ -417,7 +417,7 @@ int em28xx_audio_analog_set(struct em28xx *dev)
|
||||
}
|
||||
}
|
||||
|
||||
xclk = dev->xclk & 0x7f;
|
||||
xclk = dev->board.xclk & 0x7f;
|
||||
if (!dev->mute)
|
||||
xclk |= 0x80;
|
||||
|
||||
@ -658,7 +658,7 @@ static int em28xx_scaler_set(struct em28xx *dev, u16 h, u16 v)
|
||||
{
|
||||
u8 mode;
|
||||
/* the em2800 scaler only supports scaling down to 50% */
|
||||
if (dev->is_em2800)
|
||||
if (dev->board.is_em2800)
|
||||
mode = (v ? 0x20 : 0x00) | (h ? 0x10 : 0x00);
|
||||
else {
|
||||
u8 buf[2];
|
||||
|
@ -393,7 +393,7 @@ static int dvb_init(struct em28xx *dev)
|
||||
int result = 0;
|
||||
struct em28xx_dvb *dvb;
|
||||
|
||||
if (!dev->has_dvb) {
|
||||
if (!dev->board.has_dvb) {
|
||||
/* This device does not support the extension */
|
||||
return 0;
|
||||
}
|
||||
@ -479,7 +479,7 @@ out_free:
|
||||
|
||||
static int dvb_fini(struct em28xx *dev)
|
||||
{
|
||||
if (!dev->has_dvb) {
|
||||
if (!dev->board.has_dvb) {
|
||||
/* This device does not support the extension */
|
||||
return 0;
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ static int em28xx_i2c_xfer(struct i2c_adapter *i2c_adap,
|
||||
(msgs[i].flags & I2C_M_RD) ? "read" : "write",
|
||||
i == num - 1 ? "stop" : "nonstop", addr, msgs[i].len);
|
||||
if (!msgs[i].len) { /* no len: check only for device presence */
|
||||
if (dev->is_em2800)
|
||||
if (dev->board.is_em2800)
|
||||
rc = em2800_i2c_check_for_device(dev, addr);
|
||||
else
|
||||
rc = em28xx_i2c_check_for_device(dev, addr);
|
||||
@ -261,7 +261,7 @@ static int em28xx_i2c_xfer(struct i2c_adapter *i2c_adap,
|
||||
|
||||
} else if (msgs[i].flags & I2C_M_RD) {
|
||||
/* read bytes */
|
||||
if (dev->is_em2800)
|
||||
if (dev->board.is_em2800)
|
||||
rc = em2800_i2c_recv_bytes(dev, addr,
|
||||
msgs[i].buf,
|
||||
msgs[i].len);
|
||||
@ -279,7 +279,7 @@ static int em28xx_i2c_xfer(struct i2c_adapter *i2c_adap,
|
||||
for (byte = 0; byte < msgs[i].len; byte++)
|
||||
printk(" %02x", msgs[i].buf[byte]);
|
||||
}
|
||||
if (dev->is_em2800)
|
||||
if (dev->board.is_em2800)
|
||||
rc = em2800_i2c_send_bytes(dev, addr,
|
||||
msgs[i].buf,
|
||||
msgs[i].len);
|
||||
|
@ -327,7 +327,7 @@ int em28xx_ir_init(struct em28xx *dev)
|
||||
u8 ir_config;
|
||||
int err = -ENOMEM;
|
||||
|
||||
if (dev->ir_codes == NULL) {
|
||||
if (dev->board.ir_codes == NULL) {
|
||||
/* No remote control support */
|
||||
return 0;
|
||||
}
|
||||
@ -366,7 +366,7 @@ int em28xx_ir_init(struct em28xx *dev)
|
||||
usb_make_path(dev->udev, ir->phys, sizeof(ir->phys));
|
||||
strlcat(ir->phys, "/input0", sizeof(ir->phys));
|
||||
|
||||
ir_input_init(input_dev, &ir->ir, IR_TYPE_OTHER, dev->ir_codes);
|
||||
ir_input_init(input_dev, &ir->ir, IR_TYPE_OTHER, dev->board.ir_codes);
|
||||
input_dev->name = ir->name;
|
||||
input_dev->phys = ir->phys;
|
||||
input_dev->id.bustype = BUS_USB;
|
||||
|
@ -517,7 +517,7 @@ static int em28xx_config(struct em28xx *dev)
|
||||
int retval;
|
||||
|
||||
/* Sets I2C speed to 100 KHz */
|
||||
if (!dev->is_em2800) {
|
||||
if (!dev->board.is_em2800) {
|
||||
retval = em28xx_write_regs_req(dev, 0x00, 0x06, "\x40", 1);
|
||||
if (retval < 0) {
|
||||
em28xx_errdev("%s: em28xx_write_regs_req failed! retval [%d]\n",
|
||||
@ -573,7 +573,7 @@ static void video_mux(struct em28xx *dev, int index)
|
||||
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_INT_S_VIDEO_ROUTING, &route);
|
||||
|
||||
if (dev->has_msp34xx) {
|
||||
if (dev->board.has_msp34xx) {
|
||||
if (dev->i2s_speed) {
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_INT_I2S_CLOCK_FREQ,
|
||||
&dev->i2s_speed);
|
||||
@ -747,7 +747,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
if (dev->is_em2800) {
|
||||
if (dev->board.is_em2800) {
|
||||
/* the em2800 can only scale down to 50% */
|
||||
if (height % (maxh / 2))
|
||||
height = maxh;
|
||||
@ -998,7 +998,7 @@ static int vidioc_queryctrl(struct file *file, void *priv,
|
||||
|
||||
qc->id = id;
|
||||
|
||||
if (!dev->has_msp34xx) {
|
||||
if (!dev->board.has_msp34xx) {
|
||||
for (i = 0; i < ARRAY_SIZE(em28xx_qctrl); i++) {
|
||||
if (qc->id && qc->id == em28xx_qctrl[i].id) {
|
||||
memcpy(qc, &(em28xx_qctrl[i]), sizeof(*qc));
|
||||
@ -1028,7 +1028,7 @@ static int vidioc_g_ctrl(struct file *file, void *priv,
|
||||
return rc;
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
if (!dev->has_msp34xx)
|
||||
if (!dev->board.has_msp34xx)
|
||||
rc = em28xx_get_ctrl(dev, ctrl);
|
||||
else
|
||||
rc = -EINVAL;
|
||||
@ -1056,7 +1056,7 @@ static int vidioc_s_ctrl(struct file *file, void *priv,
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
if (dev->has_msp34xx)
|
||||
if (dev->board.has_msp34xx)
|
||||
em28xx_i2c_call_clients(dev, VIDIOC_S_CTRL, ctrl);
|
||||
else {
|
||||
rc = 1;
|
||||
@ -2035,7 +2035,7 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
dev->em28xx_read_reg_req_len = em28xx_read_reg_req_len;
|
||||
dev->em28xx_write_regs_req = em28xx_write_regs_req;
|
||||
dev->em28xx_read_reg_req = em28xx_read_reg_req;
|
||||
dev->is_em2800 = em28xx_boards[dev->model].is_em2800;
|
||||
dev->board.is_em2800 = em28xx_boards[dev->model].is_em2800;
|
||||
|
||||
em28xx_pre_card_setup(dev);
|
||||
|
||||
@ -2092,7 +2092,7 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
INIT_LIST_HEAD(&dev->vidq.queued);
|
||||
|
||||
|
||||
if (dev->has_msp34xx) {
|
||||
if (dev->board.has_msp34xx) {
|
||||
/* Send a reset to other chips via gpio */
|
||||
errCode = em28xx_write_regs_req(dev, 0x00, 0x08, "\xf7", 1);
|
||||
if (errCode < 0) {
|
||||
@ -2150,7 +2150,7 @@ static void request_module_async(struct work_struct *work)
|
||||
else if (dev->has_alsa_audio)
|
||||
request_module("em28xx-alsa");
|
||||
|
||||
if (dev->has_dvb)
|
||||
if (dev->board.has_dvb)
|
||||
request_module("em28xx-dvb");
|
||||
}
|
||||
|
||||
|
@ -328,6 +328,7 @@ struct em28xx_reg_seq {
|
||||
|
||||
struct em28xx_board {
|
||||
char *name;
|
||||
int vchannels;
|
||||
int tuner_type;
|
||||
int tuner_addr;
|
||||
|
||||
@ -416,18 +417,12 @@ struct em28xx {
|
||||
int model; /* index in the device_data struct */
|
||||
int devno; /* marks the number of this device */
|
||||
enum em28xx_chip_id chip_id;
|
||||
unsigned int is_em2800:1;
|
||||
unsigned int has_msp34xx:1;
|
||||
unsigned int has_tda9887:1;
|
||||
|
||||
struct em28xx_board board;
|
||||
|
||||
unsigned int stream_on:1; /* Locks streams */
|
||||
unsigned int has_audio_class:1;
|
||||
unsigned int has_alsa_audio:1;
|
||||
unsigned int max_range_640_480:1;
|
||||
unsigned int has_dvb:1;
|
||||
unsigned int has_snapshot_button:1;
|
||||
unsigned int valid:1; /* report for validated boards */
|
||||
|
||||
unsigned char xclk, i2c_speed;
|
||||
|
||||
struct em28xx_IR *ir;
|
||||
|
||||
@ -444,7 +439,6 @@ struct em28xx {
|
||||
|
||||
u32 i2s_speed; /* I2S speed for audio digital stream */
|
||||
|
||||
enum em28xx_decoder decoder;
|
||||
struct em28xx_audio_mode audio_mode;
|
||||
|
||||
int tuner_type; /* type of the tuner */
|
||||
@ -527,9 +521,6 @@ struct em28xx {
|
||||
/* Caches GPO and GPIO registers */
|
||||
unsigned char reg_gpo, reg_gpio;
|
||||
|
||||
/* Infrared remote control support */
|
||||
IR_KEYTAB_TYPE *ir_codes;
|
||||
|
||||
/* Snapshot button */
|
||||
char snapshot_button_path[30]; /* path of the input dev */
|
||||
struct input_dev *sbutton_input_dev;
|
||||
@ -699,7 +690,7 @@ static inline int em28xx_gamma_set(struct em28xx *dev, s32 val)
|
||||
/*FIXME: maxw should be dependent of alt mode */
|
||||
static inline unsigned int norm_maxw(struct em28xx *dev)
|
||||
{
|
||||
if (dev->max_range_640_480)
|
||||
if (dev->board.max_range_640_480)
|
||||
return 640;
|
||||
else
|
||||
return 720;
|
||||
@ -707,7 +698,7 @@ static inline unsigned int norm_maxw(struct em28xx *dev)
|
||||
|
||||
static inline unsigned int norm_maxh(struct em28xx *dev)
|
||||
{
|
||||
if (dev->max_range_640_480)
|
||||
if (dev->board.max_range_640_480)
|
||||
return 480;
|
||||
else
|
||||
return (dev->norm & V4L2_STD_625_50) ? 576 : 480;
|
||||
|
Loading…
Reference in New Issue
Block a user