Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 65742
b: refs/heads/master
c: 6a59d64
h: refs/heads/master
v: v3
  • Loading branch information
Trent Piepho authored and Mauro Carvalho Chehab committed Oct 10, 2007
1 parent 0f164e4 commit 27e587c
Show file tree
Hide file tree
Showing 12 changed files with 113 additions and 130 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b09a79f5848f2143a8ffc724910743027d5a70e0
refs/heads/master: 6a59d64c5cc302e0139ddb1f5e57afceecb14368
18 changes: 9 additions & 9 deletions trunk/drivers/media/video/cx88/cx88-blackbird.c
Original file line number Diff line number Diff line change
Expand Up @@ -734,14 +734,14 @@ static int vidioc_querycap (struct file *file, void *priv,
struct cx88_core *core = dev->core;

strcpy(cap->driver, "cx88_blackbird");
strlcpy(cap->card, cx88_boards[core->board].name,sizeof(cap->card));
strlcpy(cap->card, core->board.name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",pci_name(dev->pci));
cap->version = CX88_VERSION_CODE;
cap->capabilities =
V4L2_CAP_VIDEO_CAPTURE |
V4L2_CAP_READWRITE |
V4L2_CAP_STREAMING;
if (UNSET != core->tuner_type)
if (UNSET != core->board.tuner_type)
cap->capabilities |= V4L2_CAP_TUNER;
return 0;
}
Expand Down Expand Up @@ -990,7 +990,7 @@ static int vidioc_g_frequency (struct file *file, void *priv,
struct cx8802_fh *fh = priv;
struct cx88_core *core = fh->dev->core;

if (unlikely(UNSET == core->tuner_type))
if (unlikely(UNSET == core->board.tuner_type))
return -EINVAL;

f->type = V4L2_TUNER_ANALOG_TV;
Expand Down Expand Up @@ -1028,7 +1028,7 @@ static int vidioc_g_tuner (struct file *file, void *priv,
struct cx88_core *core = ((struct cx8802_fh *)priv)->dev->core;
u32 reg;

if (unlikely(UNSET == core->tuner_type))
if (unlikely(UNSET == core->board.tuner_type))
return -EINVAL;
if (0 != t->index)
return -EINVAL;
Expand All @@ -1049,7 +1049,7 @@ static int vidioc_s_tuner (struct file *file, void *priv,
{
struct cx88_core *core = ((struct cx8802_fh *)priv)->dev->core;

if (UNSET == core->tuner_type)
if (UNSET == core->board.tuner_type)
return -EINVAL;
if (0 != t->index)
return -EINVAL;
Expand Down Expand Up @@ -1246,7 +1246,7 @@ static int cx8802_blackbird_advise_acquire(struct cx8802_driver *drv)
struct cx88_core *core = drv->core;
int err = 0;

switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300:
/* By default, core setup will leave the cx22702 out of reset, on the bus.
* We left the hardware on power up with the cx22702 active.
Expand All @@ -1268,7 +1268,7 @@ static int cx8802_blackbird_advise_release(struct cx8802_driver *drv)
struct cx88_core *core = drv->core;
int err = 0;

switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300:
/* Exit leaving the cx23416 on the bus */
break;
Expand Down Expand Up @@ -1316,13 +1316,13 @@ static int cx8802_blackbird_probe(struct cx8802_driver *drv)

dprintk( 1, "%s\n", __FUNCTION__);
dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",
core->board,
core->boardnr,
core->name,
core->pci_bus,
core->pci_slot);

err = -ENODEV;
if (!(cx88_boards[core->board].mpeg & CX88_MPEG_BLACKBIRD))
if (!(core->board.mpeg & CX88_MPEG_BLACKBIRD))
goto fail_core;

dev->width = 720;
Expand Down
27 changes: 12 additions & 15 deletions trunk/drivers/media/video/cx88/cx88-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
/* ------------------------------------------------------------------ */
/* board config info */

struct cx88_board cx88_boards[] = {
const struct cx88_board cx88_boards[] = {
[CX88_BOARD_UNKNOWN] = {
.name = "UNKNOWN/GENERIC",
.tuner_type = UNSET,
Expand Down Expand Up @@ -1687,22 +1687,22 @@ static void leadtek_eeprom(struct cx88_core *core, u8 *eeprom_data)
return;
}

core->has_radio = 1;
core->tuner_type = (eeprom_data[6] == 0x13) ? 43 : 38;
core->board.tuner_type = (eeprom_data[6] == 0x13) ?
TUNER_PHILIPS_FM1236_MK3 : TUNER_PHILIPS_FM1216ME_MK3;

printk(KERN_INFO "%s: Leadtek Winfast 2000XP Expert config: "
"tuner=%d, eeprom[0]=0x%02x\n",
core->name, core->tuner_type, eeprom_data[0]);
core->name, core->board.tuner_type, eeprom_data[0]);
}

static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
{
struct tveeprom tv;

tveeprom_hauppauge_analog(&core->i2c_client, &tv, eeprom_data);
core->tuner_type = tv.tuner_type;
core->board.tuner_type = tv.tuner_type;
core->tuner_formats = tv.tuner_formats;
core->has_radio = tv.has_radio;
core->board.radio.type = tv.has_radio ? CX88_RADIO : 0;

/* Make sure we support the board model */
switch (tv.model)
Expand Down Expand Up @@ -1792,8 +1792,9 @@ static void gdi_eeprom(struct cx88_core *core, u8 *eeprom_data)
name ? name : "unknown");
if (NULL == name)
return;
core->tuner_type = gdi_tuner[eeprom_data[0x0d]].id;
core->has_radio = gdi_tuner[eeprom_data[0x0d]].fm;
core->board.tuner_type = gdi_tuner[eeprom_data[0x0d]].id;
core->board.radio.type = gdi_tuner[eeprom_data[0x0d]].fm ?
CX88_RADIO : 0;
}

/* ----------------------------------------------------------------------- */
Expand Down Expand Up @@ -1860,7 +1861,7 @@ void cx88_card_list(struct cx88_core *core, struct pci_dev *pci)

void cx88_card_setup_pre_i2c(struct cx88_core *core)
{
switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300:
/* Bring the 702 demod up before i2c scanning/attach or devices are hidden */
/* We leave here with the 702 on the bus */
Expand All @@ -1883,7 +1884,7 @@ void cx88_card_setup(struct cx88_core *core)
tveeprom_read(&core->i2c_client,eeprom,sizeof(eeprom));
}

switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE:
case CX88_BOARD_HAUPPAUGE_ROSLYN:
if (0 == core->i2c_rc)
Expand Down Expand Up @@ -1927,7 +1928,7 @@ void cx88_card_setup(struct cx88_core *core)
msleep(1);
cx_set(MO_GP0_IO, 0x00000101);
if (0 == core->i2c_rc &&
core->board == CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID)
core->boardnr == CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_HYBRID)
dvico_fusionhdtv_hybrid_init(core);
break;
case CX88_BOARD_KWORLD_DVB_T:
Expand Down Expand Up @@ -1965,14 +1966,10 @@ void cx88_card_setup(struct cx88_core *core)
}
break;
}
if (cx88_boards[core->board].radio.type == CX88_RADIO)
core->has_radio = 1;
}

/* ------------------------------------------------------------------ */

EXPORT_SYMBOL(cx88_boards);

/*
* Local variables:
* c-basic-offset: 8
Expand Down
45 changes: 20 additions & 25 deletions trunk/drivers/media/video/cx88/cx88-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -738,7 +738,7 @@ int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int heig
value |= (1 << 15);
value |= (1 << 16);
}
if (INPUT(core->input)->type == CX88_VMUX_SVIDEO)
if (INPUT(core->input).type == CX88_VMUX_SVIDEO)
value |= (1 << 13) | (1 << 5);
if (V4L2_FIELD_INTERLACED == field)
value |= (1 << 3); // VINT (interlaced vertical scaling)
Expand Down Expand Up @@ -833,7 +833,7 @@ static int set_tvaudio(struct cx88_core *core)
{
v4l2_std_id norm = core->tvnorm;

if (CX88_VMUX_TELEVISION != INPUT(core->input)->type)
if (CX88_VMUX_TELEVISION != INPUT(core->input).type)
return 0;

if (V4L2_STD_PAL_BG & norm) {
Expand Down Expand Up @@ -1067,7 +1067,7 @@ struct video_device *cx88_vdev_init(struct cx88_core *core,
vfd->dev = &pci->dev;
vfd->release = video_device_release;
snprintf(vfd->name, sizeof(vfd->name), "%s %s (%s)",
core->name, type, cx88_boards[core->board].name);
core->name, type, core->board.name);
return vfd;
}

Expand Down Expand Up @@ -1130,39 +1130,34 @@ struct cx88_core* cx88_core_get(struct pci_dev *pci)
core->bmmio = (u8 __iomem *)core->lmmio;

/* board config */
core->board = UNSET;
core->boardnr = UNSET;
if (card[core->nr] < cx88_bcount)
core->board = card[core->nr];
for (i = 0; UNSET == core->board && i < cx88_idcount; i++)
core->boardnr = card[core->nr];
for (i = 0; UNSET == core->boardnr && i < cx88_idcount; i++)
if (pci->subsystem_vendor == cx88_subids[i].subvendor &&
pci->subsystem_device == cx88_subids[i].subdevice)
core->board = cx88_subids[i].card;
if (UNSET == core->board) {
core->board = CX88_BOARD_UNKNOWN;
core->boardnr = cx88_subids[i].card;
if (UNSET == core->boardnr) {
core->boardnr = CX88_BOARD_UNKNOWN;
cx88_card_list(core,pci);
}

memcpy(&core->board, &cx88_boards[core->boardnr], sizeof(core->board));

printk(KERN_INFO "CORE %s: subsystem: %04x:%04x, board: %s [card=%d,%s]\n",
core->name,pci->subsystem_vendor,
pci->subsystem_device,cx88_boards[core->board].name,
core->board, card[core->nr] == core->board ?
pci->subsystem_device, core->board.name,
core->boardnr, card[core->nr] == core->boardnr ?
"insmod option" : "autodetected");

core->tuner_type = tuner[core->nr];
core->radio_type = radio[core->nr];
if (UNSET == core->tuner_type)
core->tuner_type = cx88_boards[core->board].tuner_type;
if (UNSET == core->radio_type)
core->radio_type = cx88_boards[core->board].radio_type;
if (!core->tuner_addr)
core->tuner_addr = cx88_boards[core->board].tuner_addr;
if (!core->radio_addr)
core->radio_addr = cx88_boards[core->board].radio_addr;
if (tuner[core->nr] != UNSET)
core->board.tuner_type = tuner[core->nr];
if (radio[core->nr] != UNSET)
core->board.radio_type = radio[core->nr];

printk(KERN_INFO "TV tuner %d at 0x%02x, Radio tuner %d at 0x%02x\n",
core->tuner_type, core->tuner_addr<<1,
core->radio_type, core->radio_addr<<1);

core->tda9887_conf = cx88_boards[core->board].tda9887_conf;
core->board.tuner_type, core->board.tuner_addr<<1,
core->board.radio_type, core->board.radio_addr<<1);

/* init hardware */
cx88_reset(core);
Expand Down
10 changes: 5 additions & 5 deletions trunk/drivers/media/video/cx88/cx88-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ static int dvb_register(struct cx8802_dev *dev)
dev->ts_gen_cntrl = 0x0c;

/* init frontend */
switch (dev->core->board) {
switch (dev->core->boardnr) {
case CX88_BOARD_HAUPPAUGE_DVB_T1:
dev->dvb.frontend = dvb_attach(cx22702_attach,
&connexant_refboard_config,
Expand Down Expand Up @@ -653,7 +653,7 @@ static int cx8802_dvb_advise_acquire(struct cx8802_driver *drv)
int err = 0;
dprintk( 1, "%s\n", __FUNCTION__);

switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300:
/* We arrive here with either the cx23416 or the cx22702
* on the bus. Take the bus from the cx23416 and enable the
Expand All @@ -676,7 +676,7 @@ static int cx8802_dvb_advise_release(struct cx8802_driver *drv)
int err = 0;
dprintk( 1, "%s\n", __FUNCTION__);

switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_HAUPPAUGE_HVR1300:
/* Do Nothing, leave the cx22702 on the bus. */
break;
Expand All @@ -694,13 +694,13 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)

dprintk( 1, "%s\n", __FUNCTION__);
dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",
core->board,
core->boardnr,
core->name,
core->pci_bus,
core->pci_slot);

err = -ENODEV;
if (!(cx88_boards[core->board].mpeg & CX88_MPEG_DVB))
if (!(core->board.mpeg & CX88_MPEG_DVB))
goto fail_core;

/* If vp3054 isn't enabled, a stub will just return 0 */
Expand Down
24 changes: 12 additions & 12 deletions trunk/drivers/media/video/cx88/cx88-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,28 +108,28 @@ static int attach_inform(struct i2c_client *client)
if (!client->driver->command)
return 0;

if (core->radio_type != UNSET) {
if ((core->radio_addr==ADDR_UNSET)||(core->radio_addr==client->addr)) {
if (core->board.radio_type != UNSET) {
if ((core->board.radio_addr==ADDR_UNSET)||(core->board.radio_addr==client->addr)) {
tun_setup.mode_mask = T_RADIO;
tun_setup.type = core->radio_type;
tun_setup.addr = core->radio_addr;
tun_setup.type = core->board.radio_type;
tun_setup.addr = core->board.radio_addr;

client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup);
}
}
if (core->tuner_type != UNSET) {
if ((core->tuner_addr==ADDR_UNSET)||(core->tuner_addr==client->addr)) {
if (core->board.tuner_type != UNSET) {
if ((core->board.tuner_addr==ADDR_UNSET)||(core->board.tuner_addr==client->addr)) {

tun_setup.mode_mask = T_ANALOG_TV;
tun_setup.type = core->tuner_type;
tun_setup.addr = core->tuner_addr;
tun_setup.type = core->board.tuner_type;
tun_setup.addr = core->board.tuner_addr;

client->driver->command (client,TUNER_SET_TYPE_ADDR, &tun_setup);
}
}

if (core->tda9887_conf)
client->driver->command(client, TDA9887_SET_CONFIG, &core->tda9887_conf);
if (core->board.tda9887_conf)
client->driver->command(client, TDA9887_SET_CONFIG, &core->board.tda9887_conf);
return 0;
}

Expand Down Expand Up @@ -204,9 +204,9 @@ int cx88_i2c_init(struct cx88_core *core, struct pci_dev *pci)
memcpy(&core->i2c_algo, &cx8800_i2c_algo_template,
sizeof(core->i2c_algo));

if (core->tuner_type != TUNER_ABSENT)
if (core->board.tuner_type != TUNER_ABSENT)
core->i2c_adap.class |= I2C_CLASS_TV_ANALOG;
if (cx88_boards[core->board].mpeg & CX88_MPEG_DVB)
if (core->board.mpeg & CX88_MPEG_DVB)
core->i2c_adap.class |= I2C_CLASS_TV_DIGITAL;

core->i2c_adap.dev.parent = &pci->dev;
Expand Down
11 changes: 5 additions & 6 deletions trunk/drivers/media/video/cx88/cx88-input.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)

/* read gpio value */
gpio = cx_read(ir->gpio_addr);
switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_NPGTECH_REALTV_TOP10FM:
/* This board apparently uses a combination of 2 GPIO
to represent the keys. Additionally, the second GPIO
Expand Down Expand Up @@ -113,7 +113,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
(gpio & ir->mask_keydown) ? " down" : "",
(gpio & ir->mask_keyup) ? " up" : "");

if (ir->core->board == CX88_BOARD_NORWOOD_MICRO) {
if (ir->core->boardnr == CX88_BOARD_NORWOOD_MICRO) {
u32 gpio_key = cx_read(MO_GP0_IO);

data = (data << 4) | ((gpio_key & 0xf0) >> 4);
Expand Down Expand Up @@ -204,7 +204,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
ir->input = input_dev;

/* detect & configure */
switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_DNTV_LIVE_DVB_T:
case CX88_BOARD_KWORLD_DVB_T:
case CX88_BOARD_KWORLD_DVB_T_CX22702:
Expand Down Expand Up @@ -314,8 +314,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
}

/* init input device */
snprintf(ir->name, sizeof(ir->name), "cx88 IR (%s)",
cx88_boards[core->board].name);
snprintf(ir->name, sizeof(ir->name), "cx88 IR (%s)", core->board.name);
snprintf(ir->phys, sizeof(ir->phys), "pci-%s/ir0", pci_name(pci));

ir_input_init(input_dev, &ir->ir, ir_type, ir_codes);
Expand Down Expand Up @@ -406,7 +405,7 @@ void cx88_ir_irq(struct cx88_core *core)
ir_dump_samples(ir->samples, ir->scount);

/* decode it */
switch (core->board) {
switch (core->boardnr) {
case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1:
case CX88_BOARD_DNTV_LIVE_DVB_T_PRO:
ircode = ir_decode_pulsedistance(ir->samples, ir->scount, 1, 4);
Expand Down
Loading

0 comments on commit 27e587c

Please sign in to comment.