V4L/DVB (9251): cx23885: Checkpatch compliance
cx23885: Checkpatch compliance Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
2af03eeadf
commit
9c8ced511e
|
@ -39,16 +39,16 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.input = {{
|
||||
.type = CX23885_VMUX_COMPOSITE1,
|
||||
.vmux = 0,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE2,
|
||||
.vmux = 1,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE3,
|
||||
.vmux = 2,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE4,
|
||||
.vmux = 3,
|
||||
}},
|
||||
} },
|
||||
},
|
||||
[CX23885_BOARD_HAUPPAUGE_HVR1800lp] = {
|
||||
.name = "Hauppauge WinTV-HVR1800lp",
|
||||
|
@ -57,19 +57,19 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.type = CX23885_VMUX_TELEVISION,
|
||||
.vmux = 0,
|
||||
.gpio0 = 0xff00,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_DEBUG,
|
||||
.vmux = 0,
|
||||
.gpio0 = 0xff01,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE1,
|
||||
.vmux = 1,
|
||||
.gpio0 = 0xff02,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_SVIDEO,
|
||||
.vmux = 2,
|
||||
.gpio0 = 0xff02,
|
||||
}},
|
||||
} },
|
||||
},
|
||||
[CX23885_BOARD_HAUPPAUGE_HVR1800] = {
|
||||
.name = "Hauppauge WinTV-HVR1800",
|
||||
|
@ -84,20 +84,20 @@ struct cx23885_board cx23885_boards[] = {
|
|||
CX25840_VIN5_CH2 |
|
||||
CX25840_VIN2_CH1,
|
||||
.gpio0 = 0,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE1,
|
||||
.vmux = CX25840_VIN7_CH3 |
|
||||
CX25840_VIN4_CH2 |
|
||||
CX25840_VIN6_CH1,
|
||||
.gpio0 = 0,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_SVIDEO,
|
||||
.vmux = CX25840_VIN7_CH3 |
|
||||
CX25840_VIN4_CH2 |
|
||||
CX25840_VIN8_CH1 |
|
||||
CX25840_SVIDEO_ON,
|
||||
.gpio0 = 0,
|
||||
}},
|
||||
} },
|
||||
},
|
||||
[CX23885_BOARD_HAUPPAUGE_HVR1250] = {
|
||||
.name = "Hauppauge WinTV-HVR1250",
|
||||
|
@ -106,19 +106,19 @@ struct cx23885_board cx23885_boards[] = {
|
|||
.type = CX23885_VMUX_TELEVISION,
|
||||
.vmux = 0,
|
||||
.gpio0 = 0xff00,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_DEBUG,
|
||||
.vmux = 0,
|
||||
.gpio0 = 0xff01,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_COMPOSITE1,
|
||||
.vmux = 1,
|
||||
.gpio0 = 0xff02,
|
||||
},{
|
||||
}, {
|
||||
.type = CX23885_VMUX_SVIDEO,
|
||||
.vmux = 2,
|
||||
.gpio0 = 0xff02,
|
||||
}},
|
||||
} },
|
||||
},
|
||||
[CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP] = {
|
||||
.name = "DViCO FusionHDTV5 Express",
|
||||
|
@ -169,43 +169,43 @@ struct cx23885_subid cx23885_subids[] = {
|
|||
.subvendor = 0x0070,
|
||||
.subdevice = 0x3400,
|
||||
.card = CX23885_BOARD_UNKNOWN,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7600,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1800lp,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7800,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1800,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7801,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1800,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7809,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1800,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7911,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1250,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x18ac,
|
||||
.subdevice = 0xd500,
|
||||
.card = CX23885_BOARD_DVICO_FUSIONHDTV_5_EXP,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7790,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1500Q,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7797,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1500Q,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7710,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1500,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x0070,
|
||||
.subdevice = 0x7717,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1500,
|
||||
|
@ -225,11 +225,11 @@ struct cx23885_subid cx23885_subids[] = {
|
|||
.subvendor = 0x0070,
|
||||
.subdevice = 0x8010,
|
||||
.card = CX23885_BOARD_HAUPPAUGE_HVR1400,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x18ac,
|
||||
.subdevice = 0xd618,
|
||||
.card = CX23885_BOARD_DVICO_FUSIONHDTV_7_DUAL_EXP,
|
||||
},{
|
||||
}, {
|
||||
.subvendor = 0x18ac,
|
||||
.subdevice = 0xdb78,
|
||||
.card = CX23885_BOARD_DVICO_FUSIONHDTV_DVB_T_DUAL_EXP,
|
||||
|
@ -247,23 +247,25 @@ void cx23885_card_list(struct cx23885_dev *dev)
|
|||
|
||||
if (0 == dev->pci->subsystem_vendor &&
|
||||
0 == dev->pci->subsystem_device) {
|
||||
printk("%s: Your board has no valid PCIe Subsystem ID and thus can't\n"
|
||||
"%s: be autodetected. Please pass card=<n> insmod option to\n"
|
||||
"%s: workaround that. Redirect complaints to the vendor of\n"
|
||||
"%s: the TV card. Best regards,\n"
|
||||
printk(KERN_INFO
|
||||
"%s: Board has no valid PCIe Subsystem ID and can't\n"
|
||||
"%s: be autodetected. Pass card=<n> insmod option\n"
|
||||
"%s: to workaround that. Redirect complaints to the\n"
|
||||
"%s: vendor of the TV card. Best regards,\n"
|
||||
"%s: -- tux\n",
|
||||
dev->name, dev->name, dev->name, dev->name, dev->name);
|
||||
} else {
|
||||
printk("%s: Your board isn't known (yet) to the driver. You can\n"
|
||||
"%s: try to pick one of the existing card configs via\n"
|
||||
printk(KERN_INFO
|
||||
"%s: Your board isn't known (yet) to the driver.\n"
|
||||
"%s: Try to pick one of the existing card configs via\n"
|
||||
"%s: card=<n> insmod option. Updating to the latest\n"
|
||||
"%s: version might help as well.\n",
|
||||
dev->name, dev->name, dev->name, dev->name);
|
||||
}
|
||||
printk("%s: Here is a list of valid choices for the card=<n> insmod option:\n",
|
||||
printk(KERN_INFO "%s: Here is a list of valid choices for the card=<n> insmod option:\n",
|
||||
dev->name);
|
||||
for (i = 0; i < cx23885_bcount; i++)
|
||||
printk("%s: card=%d -> %s\n",
|
||||
printk(KERN_INFO "%s: card=%d -> %s\n",
|
||||
dev->name, i, cx23885_boards[i].name);
|
||||
}
|
||||
|
||||
|
@ -271,11 +273,11 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
|
|||
{
|
||||
struct tveeprom tv;
|
||||
|
||||
tveeprom_hauppauge_analog(&dev->i2c_bus[0].i2c_client, &tv, eeprom_data);
|
||||
tveeprom_hauppauge_analog(&dev->i2c_bus[0].i2c_client, &tv,
|
||||
eeprom_data);
|
||||
|
||||
/* Make sure we support the board model */
|
||||
switch (tv.model)
|
||||
{
|
||||
switch (tv.model) {
|
||||
case 71009:
|
||||
/* WinTV-HVR1200 (PCIe, Retail, full height)
|
||||
* DVB-T and basic analog */
|
||||
|
@ -303,21 +305,51 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
|
|||
case 71999:
|
||||
/* WinTV-HVR1200 (PCIe, OEM, full height)
|
||||
* DVB-T and basic analog */
|
||||
case 76601: /* WinTV-HVR1800lp (PCIe, Retail, No IR, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 77001: /* WinTV-HVR1500 (Express Card, OEM, No IR, ATSC and Basic analog */
|
||||
case 77011: /* WinTV-HVR1500 (Express Card, Retail, No IR, ATSC and Basic analog */
|
||||
case 77041: /* WinTV-HVR1500Q (Express Card, OEM, No IR, ATSC/QAM and Basic analog */
|
||||
case 77051: /* WinTV-HVR1500Q (Express Card, Retail, No IR, ATSC/QAM and Basic analog */
|
||||
case 78011: /* WinTV-HVR1800 (PCIe, Retail, 3.5mm in, IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78501: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78521: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78531: /* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78631: /* WinTV-HVR1800 (PCIe, OEM, No IR, No FM, Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 79001: /* WinTV-HVR1250 (PCIe, Retail, IR, full height, ATSC and Basic analog */
|
||||
case 79101: /* WinTV-HVR1250 (PCIe, Retail, IR, half height, ATSC and Basic analog */
|
||||
case 79561: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */
|
||||
case 79571: /* WinTV-HVR1250 (PCIe, OEM, No IR, full height, ATSC and Basic analog */
|
||||
case 79671: /* WinTV-HVR1250 (PCIe, OEM, No IR, half height, ATSC and Basic analog */
|
||||
case 76601:
|
||||
/* WinTV-HVR1800lp (PCIe, Retail, No IR, Dual
|
||||
channel ATSC and MPEG2 HW Encoder */
|
||||
case 77001:
|
||||
/* WinTV-HVR1500 (Express Card, OEM, No IR, ATSC
|
||||
and Basic analog */
|
||||
case 77011:
|
||||
/* WinTV-HVR1500 (Express Card, Retail, No IR, ATSC
|
||||
and Basic analog */
|
||||
case 77041:
|
||||
/* WinTV-HVR1500Q (Express Card, OEM, No IR, ATSC/QAM
|
||||
and Basic analog */
|
||||
case 77051:
|
||||
/* WinTV-HVR1500Q (Express Card, Retail, No IR, ATSC/QAM
|
||||
and Basic analog */
|
||||
case 78011:
|
||||
/* WinTV-HVR1800 (PCIe, Retail, 3.5mm in, IR, No FM,
|
||||
Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78501:
|
||||
/* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM,
|
||||
Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78521:
|
||||
/* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, FM,
|
||||
Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78531:
|
||||
/* WinTV-HVR1800 (PCIe, OEM, RCA in, No IR, No FM,
|
||||
Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 78631:
|
||||
/* WinTV-HVR1800 (PCIe, OEM, No IR, No FM,
|
||||
Dual channel ATSC and MPEG2 HW Encoder */
|
||||
case 79001:
|
||||
/* WinTV-HVR1250 (PCIe, Retail, IR, full height,
|
||||
ATSC and Basic analog */
|
||||
case 79101:
|
||||
/* WinTV-HVR1250 (PCIe, Retail, IR, half height,
|
||||
ATSC and Basic analog */
|
||||
case 79561:
|
||||
/* WinTV-HVR1250 (PCIe, OEM, No IR, half height,
|
||||
ATSC and Basic analog */
|
||||
case 79571:
|
||||
/* WinTV-HVR1250 (PCIe, OEM, No IR, full height,
|
||||
ATSC and Basic analog */
|
||||
case 79671:
|
||||
/* WinTV-HVR1250 (PCIe, OEM, No IR, half height,
|
||||
ATSC and Basic analog */
|
||||
case 80019:
|
||||
/* WinTV-HVR1400 (Express Card, Retail, IR,
|
||||
* DVB-T and Basic analog */
|
||||
|
@ -329,7 +361,8 @@ static void hauppauge_eeprom(struct cx23885_dev *dev, u8 *eeprom_data)
|
|||
* DVB-T and MPEG2 HW Encoder */
|
||||
break;
|
||||
default:
|
||||
printk("%s: warning: unknown hauppauge model #%d\n", dev->name, tv.model);
|
||||
printk(KERN_WARNING "%s: warning: unknown hauppauge model #%d\n",
|
||||
dev->name, tv.model);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -352,7 +385,7 @@ int cx23885_tuner_callback(void *priv, int component, int command, int arg)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch(dev->board) {
|
||||
switch (dev->board) {
|
||||
case CX23885_BOARD_HAUPPAUGE_HVR1400:
|
||||
case CX23885_BOARD_HAUPPAUGE_HVR1500:
|
||||
case CX23885_BOARD_HAUPPAUGE_HVR1500Q:
|
||||
|
@ -383,7 +416,7 @@ int cx23885_tuner_callback(void *priv, int component, int command, int arg)
|
|||
|
||||
void cx23885_gpio_setup(struct cx23885_dev *dev)
|
||||
{
|
||||
switch(dev->board) {
|
||||
switch (dev->board) {
|
||||
case CX23885_BOARD_HAUPPAUGE_HVR1250:
|
||||
/* GPIO-0 cx24227 demodulator reset */
|
||||
cx_set(GP0_IO, 0x00010001); /* Bring the part out of reset */
|
||||
|
@ -617,10 +650,3 @@ void cx23885_card_setup(struct cx23885_dev *dev)
|
|||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
* kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
|
||||
*/
|
||||
|
|
|
@ -37,12 +37,12 @@ MODULE_AUTHOR("Steven Toth <stoth@linuxtv.org>");
|
|||
MODULE_LICENSE("GPL");
|
||||
|
||||
static unsigned int debug;
|
||||
module_param(debug,int,0644);
|
||||
MODULE_PARM_DESC(debug,"enable debug messages");
|
||||
module_param(debug, int, 0644);
|
||||
MODULE_PARM_DESC(debug, "enable debug messages");
|
||||
|
||||
static unsigned int card[] = {[0 ... (CX23885_MAXBOARDS - 1)] = UNSET };
|
||||
module_param_array(card, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(card,"card type");
|
||||
MODULE_PARM_DESC(card, "card type");
|
||||
|
||||
#define dprintk(level, fmt, arg...)\
|
||||
do { if (debug >= level)\
|
||||
|
@ -364,13 +364,12 @@ void cx23885_wakeup(struct cx23885_tsport *port,
|
|||
list_del(&buf->vb.queue);
|
||||
wake_up(&buf->vb.done);
|
||||
}
|
||||
if (list_empty(&q->active)) {
|
||||
if (list_empty(&q->active))
|
||||
del_timer(&q->timeout);
|
||||
} else {
|
||||
else
|
||||
mod_timer(&q->timeout, jiffies + BUFFER_TIMEOUT);
|
||||
}
|
||||
if (bc != 1)
|
||||
printk("%s: %d buffers handled (should be 1)\n",
|
||||
printk(KERN_WARNING "%s: %d buffers handled (should be 1)\n",
|
||||
__func__, bc);
|
||||
}
|
||||
|
||||
|
@ -381,8 +380,7 @@ int cx23885_sram_channel_setup(struct cx23885_dev *dev,
|
|||
unsigned int i, lines;
|
||||
u32 cdt;
|
||||
|
||||
if (ch->cmds_start == 0)
|
||||
{
|
||||
if (ch->cmds_start == 0) {
|
||||
dprintk(1, "%s() Erasing channel [%s]\n", __func__,
|
||||
ch->name);
|
||||
cx_write(ch->ptr1_reg, 0);
|
||||
|
@ -418,15 +416,15 @@ int cx23885_sram_channel_setup(struct cx23885_dev *dev,
|
|||
|
||||
/* write CMDS */
|
||||
if (ch->jumponly)
|
||||
cx_write(ch->cmds_start + 0, 8);
|
||||
cx_write(ch->cmds_start + 0, 8);
|
||||
else
|
||||
cx_write(ch->cmds_start + 0, risc);
|
||||
cx_write(ch->cmds_start + 0, risc);
|
||||
cx_write(ch->cmds_start + 4, 0); /* 64 bits 63-32 */
|
||||
cx_write(ch->cmds_start + 8, cdt);
|
||||
cx_write(ch->cmds_start + 12, (lines*16) >> 3);
|
||||
cx_write(ch->cmds_start + 16, ch->ctrl_start);
|
||||
if (ch->jumponly)
|
||||
cx_write(ch->cmds_start + 20, 0x80000000 | (64 >> 2) );
|
||||
cx_write(ch->cmds_start + 20, 0x80000000 | (64 >> 2));
|
||||
else
|
||||
cx_write(ch->cmds_start + 20, 64 >> 2);
|
||||
for (i = 24; i < 80; i += 4)
|
||||
|
@ -436,9 +434,9 @@ int cx23885_sram_channel_setup(struct cx23885_dev *dev,
|
|||
cx_write(ch->ptr1_reg, ch->fifo_start);
|
||||
cx_write(ch->ptr2_reg, cdt);
|
||||
cx_write(ch->cnt2_reg, (lines*16) >> 3);
|
||||
cx_write(ch->cnt1_reg, (bpl >> 3) -1);
|
||||
cx_write(ch->cnt1_reg, (bpl >> 3) - 1);
|
||||
|
||||
dprintk(2,"[bridge %d] sram setup %s: bpl=%d lines=%d\n",
|
||||
dprintk(2, "[bridge %d] sram setup %s: bpl=%d lines=%d\n",
|
||||
dev->bridge,
|
||||
ch->name,
|
||||
bpl,
|
||||
|
@ -469,43 +467,43 @@ void cx23885_sram_channel_dump(struct cx23885_dev *dev,
|
|||
u32 risc;
|
||||
unsigned int i, j, n;
|
||||
|
||||
printk("%s: %s - dma channel status dump\n",
|
||||
printk(KERN_WARNING "%s: %s - dma channel status dump\n",
|
||||
dev->name, ch->name);
|
||||
for (i = 0; i < ARRAY_SIZE(name); i++)
|
||||
printk("%s: cmds: %-15s: 0x%08x\n",
|
||||
printk(KERN_WARNING "%s: cmds: %-15s: 0x%08x\n",
|
||||
dev->name, name[i],
|
||||
cx_read(ch->cmds_start + 4*i));
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
risc = cx_read(ch->cmds_start + 4 * (i + 14));
|
||||
printk("%s: risc%d: ", dev->name, i);
|
||||
printk(KERN_WARNING "%s: risc%d: ", dev->name, i);
|
||||
cx23885_risc_decode(risc);
|
||||
}
|
||||
for (i = 0; i < (64 >> 2); i += n) {
|
||||
risc = cx_read(ch->ctrl_start + 4 * i);
|
||||
/* No consideration for bits 63-32 */
|
||||
|
||||
printk("%s: (0x%08x) iq %x: ", dev->name,
|
||||
printk(KERN_WARNING "%s: (0x%08x) iq %x: ", dev->name,
|
||||
ch->ctrl_start + 4 * i, i);
|
||||
n = cx23885_risc_decode(risc);
|
||||
for (j = 1; j < n; j++) {
|
||||
risc = cx_read(ch->ctrl_start + 4 * (i + j));
|
||||
printk("%s: iq %x: 0x%08x [ arg #%d ]\n",
|
||||
printk(KERN_WARNING "%s: iq %x: 0x%08x [ arg #%d ]\n",
|
||||
dev->name, i+j, risc, j);
|
||||
}
|
||||
}
|
||||
|
||||
printk("%s: fifo: 0x%08x -> 0x%x\n",
|
||||
printk(KERN_WARNING "%s: fifo: 0x%08x -> 0x%x\n",
|
||||
dev->name, ch->fifo_start, ch->fifo_start+ch->fifo_size);
|
||||
printk("%s: ctrl: 0x%08x -> 0x%x\n",
|
||||
printk(KERN_WARNING "%s: ctrl: 0x%08x -> 0x%x\n",
|
||||
dev->name, ch->ctrl_start, ch->ctrl_start + 6*16);
|
||||
printk("%s: ptr1_reg: 0x%08x\n",
|
||||
printk(KERN_WARNING "%s: ptr1_reg: 0x%08x\n",
|
||||
dev->name, cx_read(ch->ptr1_reg));
|
||||
printk("%s: ptr2_reg: 0x%08x\n",
|
||||
printk(KERN_WARNING "%s: ptr2_reg: 0x%08x\n",
|
||||
dev->name, cx_read(ch->ptr2_reg));
|
||||
printk("%s: cnt1_reg: 0x%08x\n",
|
||||
printk(KERN_WARNING "%s: cnt1_reg: 0x%08x\n",
|
||||
dev->name, cx_read(ch->cnt1_reg));
|
||||
printk("%s: cnt2_reg: 0x%08x\n",
|
||||
printk(KERN_WARNING "%s: cnt2_reg: 0x%08x\n",
|
||||
dev->name, cx_read(ch->cnt2_reg));
|
||||
}
|
||||
|
||||
|
@ -515,13 +513,13 @@ static void cx23885_risc_disasm(struct cx23885_tsport *port,
|
|||
struct cx23885_dev *dev = port->dev;
|
||||
unsigned int i, j, n;
|
||||
|
||||
printk("%s: risc disasm: %p [dma=0x%08lx]\n",
|
||||
printk(KERN_INFO "%s: risc disasm: %p [dma=0x%08lx]\n",
|
||||
dev->name, risc->cpu, (unsigned long)risc->dma);
|
||||
for (i = 0; i < (risc->size >> 2); i += n) {
|
||||
printk("%s: %04d: ", dev->name, i);
|
||||
printk(KERN_INFO "%s: %04d: ", dev->name, i);
|
||||
n = cx23885_risc_decode(le32_to_cpu(risc->cpu[i]));
|
||||
for (j = 1; j < n; j++)
|
||||
printk("%s: %04d: 0x%08x [ arg #%d ]\n",
|
||||
printk(KERN_INFO "%s: %04d: 0x%08x [ arg #%d ]\n",
|
||||
dev->name, i + j, risc->cpu[i + j], j);
|
||||
if (risc->cpu[i] == cpu_to_le32(RISC_JUMP))
|
||||
break;
|
||||
|
@ -600,7 +598,7 @@ static int cx23885_pci_quirks(struct cx23885_dev *dev)
|
|||
* when DMA begins if RDR_TLCTL0 bit4 is not cleared. It does not
|
||||
* occur on the cx23887 bridge.
|
||||
*/
|
||||
if(dev->bridge == CX23885_BRIDGE_885)
|
||||
if (dev->bridge == CX23885_BRIDGE_885)
|
||||
cx_clear(RDR_TLCTL0, 1 << 4);
|
||||
|
||||
return 0;
|
||||
|
@ -608,13 +606,13 @@ static int cx23885_pci_quirks(struct cx23885_dev *dev)
|
|||
|
||||
static int get_resources(struct cx23885_dev *dev)
|
||||
{
|
||||
if (request_mem_region(pci_resource_start(dev->pci,0),
|
||||
pci_resource_len(dev->pci,0),
|
||||
if (request_mem_region(pci_resource_start(dev->pci, 0),
|
||||
pci_resource_len(dev->pci, 0),
|
||||
dev->name))
|
||||
return 0;
|
||||
|
||||
printk(KERN_ERR "%s: can't get MMIO memory @ 0x%llx\n",
|
||||
dev->name, (unsigned long long)pci_resource_start(dev->pci,0));
|
||||
dev->name, (unsigned long long)pci_resource_start(dev->pci, 0));
|
||||
|
||||
return -EBUSY;
|
||||
}
|
||||
|
@ -623,7 +621,8 @@ static void cx23885_timeout(unsigned long data);
|
|||
int cx23885_risc_stopper(struct pci_dev *pci, struct btcx_riscmem *risc,
|
||||
u32 reg, u32 mask, u32 value);
|
||||
|
||||
static int cx23885_init_tsport(struct cx23885_dev *dev, struct cx23885_tsport *port, int portno)
|
||||
static int cx23885_init_tsport(struct cx23885_dev *dev,
|
||||
struct cx23885_tsport *port, int portno)
|
||||
{
|
||||
dprintk(1, "%s(portno=%d)\n", __func__, portno);
|
||||
|
||||
|
@ -651,10 +650,10 @@ static int cx23885_init_tsport(struct cx23885_dev *dev, struct cx23885_tsport *p
|
|||
* attachment to this tsport, keeping the -dvb.c
|
||||
* code clean and safe.
|
||||
*/
|
||||
if(!port->num_frontends)
|
||||
if (!port->num_frontends)
|
||||
port->num_frontends = 1;
|
||||
|
||||
switch(portno) {
|
||||
switch (portno) {
|
||||
case 1:
|
||||
port->reg_gpcnt = VID_B_GPCNT;
|
||||
port->reg_gpcnt_ctl = VID_B_GPCNT_CTL;
|
||||
|
@ -755,13 +754,13 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
mutex_unlock(&devlist);
|
||||
|
||||
/* Configure the internal memory */
|
||||
if(dev->pci->device == 0x8880) {
|
||||
if (dev->pci->device == 0x8880) {
|
||||
dev->bridge = CX23885_BRIDGE_887;
|
||||
/* Apply a sensible clock frequency for the PCIe bridge */
|
||||
dev->clk_freq = 25000000;
|
||||
dev->sram_channels = cx23887_sram_channels;
|
||||
} else
|
||||
if(dev->pci->device == 0x8852) {
|
||||
if (dev->pci->device == 0x8852) {
|
||||
dev->bridge = CX23885_BRIDGE_885;
|
||||
/* Apply a sensible clock frequency for the PCIe bridge */
|
||||
dev->clk_freq = 28000000;
|
||||
|
@ -842,8 +841,8 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
}
|
||||
|
||||
/* PCIe stuff */
|
||||
dev->lmmio = ioremap(pci_resource_start(dev->pci,0),
|
||||
pci_resource_len(dev->pci,0));
|
||||
dev->lmmio = ioremap(pci_resource_start(dev->pci, 0),
|
||||
pci_resource_len(dev->pci, 0));
|
||||
|
||||
dev->bmmio = (u8 __iomem *)dev->lmmio;
|
||||
|
||||
|
@ -873,7 +872,7 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
cx23885_i2c_register(&dev->i2c_bus[1]);
|
||||
cx23885_i2c_register(&dev->i2c_bus[2]);
|
||||
cx23885_card_setup(dev);
|
||||
cx23885_call_i2c_clients (&dev->i2c_bus[0], TUNER_SET_STANDBY, NULL);
|
||||
cx23885_call_i2c_clients(&dev->i2c_bus[0], TUNER_SET_STANDBY, NULL);
|
||||
cx23885_ir_init(dev);
|
||||
|
||||
if (cx23885_boards[dev->board].porta == CX23885_ANALOG_VIDEO) {
|
||||
|
@ -919,8 +918,8 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
|
||||
static void cx23885_dev_unregister(struct cx23885_dev *dev)
|
||||
{
|
||||
release_mem_region(pci_resource_start(dev->pci,0),
|
||||
pci_resource_len(dev->pci,0));
|
||||
release_mem_region(pci_resource_start(dev->pci, 0),
|
||||
pci_resource_len(dev->pci, 0));
|
||||
|
||||
if (!atomic_dec_and_test(&dev->refcount))
|
||||
return;
|
||||
|
@ -947,7 +946,7 @@ static void cx23885_dev_unregister(struct cx23885_dev *dev)
|
|||
iounmap(dev->lmmio);
|
||||
}
|
||||
|
||||
static __le32* cx23885_risc_field(__le32 *rp, struct scatterlist *sglist,
|
||||
static __le32 *cx23885_risc_field(__le32 *rp, struct scatterlist *sglist,
|
||||
unsigned int offset, u32 sync_line,
|
||||
unsigned int bpl, unsigned int padding,
|
||||
unsigned int lines)
|
||||
|
@ -968,31 +967,31 @@ static __le32* cx23885_risc_field(__le32 *rp, struct scatterlist *sglist,
|
|||
}
|
||||
if (bpl <= sg_dma_len(sg)-offset) {
|
||||
/* fits into current chunk */
|
||||
*(rp++)=cpu_to_le32(RISC_WRITE|RISC_SOL|RISC_EOL|bpl);
|
||||
*(rp++)=cpu_to_le32(sg_dma_address(sg)+offset);
|
||||
*(rp++)=cpu_to_le32(0); /* bits 63-32 */
|
||||
offset+=bpl;
|
||||
*(rp++) = cpu_to_le32(RISC_WRITE|RISC_SOL|RISC_EOL|bpl);
|
||||
*(rp++) = cpu_to_le32(sg_dma_address(sg)+offset);
|
||||
*(rp++) = cpu_to_le32(0); /* bits 63-32 */
|
||||
offset += bpl;
|
||||
} else {
|
||||
/* scanline needs to be split */
|
||||
todo = bpl;
|
||||
*(rp++)=cpu_to_le32(RISC_WRITE|RISC_SOL|
|
||||
*(rp++) = cpu_to_le32(RISC_WRITE|RISC_SOL|
|
||||
(sg_dma_len(sg)-offset));
|
||||
*(rp++)=cpu_to_le32(sg_dma_address(sg)+offset);
|
||||
*(rp++)=cpu_to_le32(0); /* bits 63-32 */
|
||||
*(rp++) = cpu_to_le32(sg_dma_address(sg)+offset);
|
||||
*(rp++) = cpu_to_le32(0); /* bits 63-32 */
|
||||
todo -= (sg_dma_len(sg)-offset);
|
||||
offset = 0;
|
||||
sg++;
|
||||
while (todo > sg_dma_len(sg)) {
|
||||
*(rp++)=cpu_to_le32(RISC_WRITE|
|
||||
*(rp++) = cpu_to_le32(RISC_WRITE|
|
||||
sg_dma_len(sg));
|
||||
*(rp++)=cpu_to_le32(sg_dma_address(sg));
|
||||
*(rp++)=cpu_to_le32(0); /* bits 63-32 */
|
||||
*(rp++) = cpu_to_le32(sg_dma_address(sg));
|
||||
*(rp++) = cpu_to_le32(0); /* bits 63-32 */
|
||||
todo -= sg_dma_len(sg);
|
||||
sg++;
|
||||
}
|
||||
*(rp++)=cpu_to_le32(RISC_WRITE|RISC_EOL|todo);
|
||||
*(rp++)=cpu_to_le32(sg_dma_address(sg));
|
||||
*(rp++)=cpu_to_le32(0); /* bits 63-32 */
|
||||
*(rp++) = cpu_to_le32(RISC_WRITE|RISC_EOL|todo);
|
||||
*(rp++) = cpu_to_le32(sg_dma_address(sg));
|
||||
*(rp++) = cpu_to_le32(0); /* bits 63-32 */
|
||||
offset += todo;
|
||||
}
|
||||
offset += padding;
|
||||
|
@ -1021,9 +1020,11 @@ int cx23885_risc_buffer(struct pci_dev *pci, struct btcx_riscmem *risc,
|
|||
can cause next bpl to start close to a page border. First DMA
|
||||
region may be smaller than PAGE_SIZE */
|
||||
/* write and jump need and extra dword */
|
||||
instructions = fields * (1 + ((bpl + padding) * lines) / PAGE_SIZE + lines);
|
||||
instructions = fields * (1 + ((bpl + padding) * lines)
|
||||
/ PAGE_SIZE + lines);
|
||||
instructions += 2;
|
||||
if ((rc = btcx_riscmem_alloc(pci,risc,instructions*12)) < 0)
|
||||
rc = btcx_riscmem_alloc(pci, risc, instructions*12);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
/* write risc instructions */
|
||||
|
@ -1037,7 +1038,7 @@ int cx23885_risc_buffer(struct pci_dev *pci, struct btcx_riscmem *risc,
|
|||
|
||||
/* save pointer to jmp instruction address */
|
||||
risc->jmp = rp;
|
||||
BUG_ON((risc->jmp - risc->cpu + 2) * sizeof (*risc->cpu) > risc->size);
|
||||
BUG_ON((risc->jmp - risc->cpu + 2) * sizeof(*risc->cpu) > risc->size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1059,7 +1060,8 @@ static int cx23885_risc_databuffer(struct pci_dev *pci,
|
|||
instructions = 1 + (bpl * lines) / PAGE_SIZE + lines;
|
||||
instructions += 1;
|
||||
|
||||
if ((rc = btcx_riscmem_alloc(pci,risc,instructions*12)) < 0)
|
||||
rc = btcx_riscmem_alloc(pci, risc, instructions*12);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
/* write risc instructions */
|
||||
|
@ -1068,7 +1070,7 @@ static int cx23885_risc_databuffer(struct pci_dev *pci,
|
|||
|
||||
/* save pointer to jmp instruction address */
|
||||
risc->jmp = rp;
|
||||
BUG_ON((risc->jmp - risc->cpu + 2) * sizeof (*risc->cpu) > risc->size);
|
||||
BUG_ON((risc->jmp - risc->cpu + 2) * sizeof(*risc->cpu) > risc->size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1078,7 +1080,8 @@ int cx23885_risc_stopper(struct pci_dev *pci, struct btcx_riscmem *risc,
|
|||
__le32 *rp;
|
||||
int rc;
|
||||
|
||||
if ((rc = btcx_riscmem_alloc(pci, risc, 4*16)) < 0)
|
||||
rc = btcx_riscmem_alloc(pci, risc, 4*16);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
/* write risc instructions */
|
||||
|
@ -1172,22 +1175,23 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
|
|||
|
||||
/* setup fifo + format */
|
||||
cx23885_sram_channel_setup(dev,
|
||||
&dev->sram_channels[ port->sram_chno ],
|
||||
&dev->sram_channels[port->sram_chno],
|
||||
port->ts_packet_size, buf->risc.dma);
|
||||
if(debug > 5) {
|
||||
cx23885_sram_channel_dump(dev, &dev->sram_channels[ port->sram_chno ] );
|
||||
if (debug > 5) {
|
||||
cx23885_sram_channel_dump(dev,
|
||||
&dev->sram_channels[port->sram_chno]);
|
||||
cx23885_risc_disasm(port, &buf->risc);
|
||||
}
|
||||
|
||||
/* write TS length to chip */
|
||||
cx_write(port->reg_lngth, buf->vb.width);
|
||||
|
||||
if ( (!(cx23885_boards[dev->board].portb & CX23885_MPEG_DVB)) &&
|
||||
(!(cx23885_boards[dev->board].portc & CX23885_MPEG_DVB)) ) {
|
||||
printk( "%s() Failed. Unsupported value in .portb/c (0x%08x)/(0x%08x)\n",
|
||||
if ((!(cx23885_boards[dev->board].portb & CX23885_MPEG_DVB)) &&
|
||||
(!(cx23885_boards[dev->board].portc & CX23885_MPEG_DVB))) {
|
||||
printk("%s() Unsupported .portb/c (0x%08x)/(0x%08x)\n",
|
||||
__func__,
|
||||
cx23885_boards[dev->board].portb,
|
||||
cx23885_boards[dev->board].portc );
|
||||
cx23885_boards[dev->board].portc);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -1197,7 +1201,7 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
|
|||
udelay(100);
|
||||
|
||||
/* If the port supports SRC SELECT, configure it */
|
||||
if(port->reg_src_sel)
|
||||
if (port->reg_src_sel)
|
||||
cx_write(port->reg_src_sel, port->src_sel_val);
|
||||
|
||||
cx_write(port->reg_hw_sop_ctrl, port->hw_sop_ctrl_val);
|
||||
|
@ -1206,7 +1210,7 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
|
|||
cx_write(port->reg_gen_ctrl, port->gen_ctrl_val);
|
||||
udelay(100);
|
||||
|
||||
// NOTE: this is 2 (reserved) for portb, does it matter?
|
||||
/* NOTE: this is 2 (reserved) for portb, does it matter? */
|
||||
/* reset counter to zero */
|
||||
cx_write(port->reg_gpcnt_ctl, 3);
|
||||
q->count = 1;
|
||||
|
@ -1240,11 +1244,11 @@ static int cx23885_start_dma(struct cx23885_tsport *port,
|
|||
cx_write(ALT_PIN_OUT_SEL, 0x10100045);
|
||||
}
|
||||
|
||||
switch(dev->bridge) {
|
||||
switch (dev->bridge) {
|
||||
case CX23885_BRIDGE_885:
|
||||
case CX23885_BRIDGE_887:
|
||||
/* enable irqs */
|
||||
dprintk(1, "%s() enabling TS int's and DMA\n", __func__ );
|
||||
dprintk(1, "%s() enabling TS int's and DMA\n", __func__);
|
||||
cx_set(port->reg_ts_int_msk, port->ts_int_msk_val);
|
||||
cx_set(port->reg_dma_ctl, port->dma_ctl_val);
|
||||
cx_set(PCI_INT_MSK, dev->pci_irqmask | port->pci_irqmask);
|
||||
|
@ -1303,8 +1307,7 @@ int cx23885_restart_queue(struct cx23885_tsport *port,
|
|||
struct cx23885_buffer *buf;
|
||||
|
||||
dprintk(5, "%s()\n", __func__);
|
||||
if (list_empty(&q->active))
|
||||
{
|
||||
if (list_empty(&q->active)) {
|
||||
struct cx23885_buffer *prev;
|
||||
prev = NULL;
|
||||
|
||||
|
@ -1322,7 +1325,7 @@ int cx23885_restart_queue(struct cx23885_tsport *port,
|
|||
buf->vb.state = VIDEOBUF_ACTIVE;
|
||||
buf->count = q->count++;
|
||||
mod_timer(&q->timeout, jiffies+BUFFER_TIMEOUT);
|
||||
dprintk(5, "[%p/%d] restart_queue - first active\n",
|
||||
dprintk(5, "[%p/%d] restart_queue - f/active\n",
|
||||
buf, buf->vb.i);
|
||||
|
||||
} else if (prev->vb.width == buf->vb.width &&
|
||||
|
@ -1333,8 +1336,9 @@ int cx23885_restart_queue(struct cx23885_tsport *port,
|
|||
buf->vb.state = VIDEOBUF_ACTIVE;
|
||||
buf->count = q->count++;
|
||||
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
||||
prev->risc.jmp[2] = cpu_to_le32(0); /* 64 bit bits 63-32 */
|
||||
dprintk(5,"[%p/%d] restart_queue - move to active\n",
|
||||
/* 64 bit bits 63-32 */
|
||||
prev->risc.jmp[2] = cpu_to_le32(0);
|
||||
dprintk(5, "[%p/%d] restart_queue - m/active\n",
|
||||
buf, buf->vb.i);
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -1373,7 +1377,8 @@ int cx23885_buf_prepare(struct videobuf_queue *q, struct cx23885_tsport *port,
|
|||
buf->vb.size = size;
|
||||
buf->vb.field = field /*V4L2_FIELD_TOP*/;
|
||||
|
||||
if (0 != (rc = videobuf_iolock(q, &buf->vb, NULL)))
|
||||
rc = videobuf_iolock(q, &buf->vb, NULL);
|
||||
if (0 != rc)
|
||||
goto fail;
|
||||
cx23885_risc_databuffer(dev->pci, &buf->risc,
|
||||
videobuf_to_dma(&buf->vb)->sglist,
|
||||
|
@ -1399,7 +1404,7 @@ void cx23885_buf_queue(struct cx23885_tsport *port, struct cx23885_buffer *buf)
|
|||
buf->risc.jmp[2] = cpu_to_le32(0); /* bits 63-32 */
|
||||
|
||||
if (list_empty(&cx88q->active)) {
|
||||
dprintk( 1, "queue is empty - first active\n" );
|
||||
dprintk(1, "queue is empty - first active\n");
|
||||
list_add_tail(&buf->vb.queue, &cx88q->active);
|
||||
cx23885_start_dma(port, cx88q, buf);
|
||||
buf->vb.state = VIDEOBUF_ACTIVE;
|
||||
|
@ -1408,7 +1413,7 @@ void cx23885_buf_queue(struct cx23885_tsport *port, struct cx23885_buffer *buf)
|
|||
dprintk(1, "[%p/%d] %s - first active\n",
|
||||
buf, buf->vb.i, __func__);
|
||||
} else {
|
||||
dprintk( 1, "queue is not empty - append to active\n" );
|
||||
dprintk(1, "queue is not empty - append to active\n");
|
||||
prev = list_entry(cx88q->active.prev, struct cx23885_buffer,
|
||||
vb.queue);
|
||||
list_add_tail(&buf->vb.queue, &cx88q->active);
|
||||
|
@ -1416,7 +1421,7 @@ void cx23885_buf_queue(struct cx23885_tsport *port, struct cx23885_buffer *buf)
|
|||
buf->count = cx88q->count++;
|
||||
prev->risc.jmp[1] = cpu_to_le32(buf->risc.dma);
|
||||
prev->risc.jmp[2] = cpu_to_le32(0); /* 64 bit bits 63-32 */
|
||||
dprintk( 1, "[%p/%d] %s - append to active\n",
|
||||
dprintk(1, "[%p/%d] %s - append to active\n",
|
||||
buf, buf->vb.i, __func__);
|
||||
}
|
||||
}
|
||||
|
@ -1442,7 +1447,7 @@ static void do_cancel_buffers(struct cx23885_tsport *port, char *reason,
|
|||
buf, buf->vb.i, reason, (unsigned long)buf->risc.dma);
|
||||
}
|
||||
if (restart) {
|
||||
dprintk(1, "restarting queue\n" );
|
||||
dprintk(1, "restarting queue\n");
|
||||
cx23885_restart_queue(port, q);
|
||||
}
|
||||
spin_unlock_irqrestore(&port->slock, flags);
|
||||
|
@ -1464,10 +1469,11 @@ static void cx23885_timeout(unsigned long data)
|
|||
struct cx23885_tsport *port = (struct cx23885_tsport *)data;
|
||||
struct cx23885_dev *dev = port->dev;
|
||||
|
||||
dprintk(1, "%s()\n",__func__);
|
||||
dprintk(1, "%s()\n", __func__);
|
||||
|
||||
if (debug > 5)
|
||||
cx23885_sram_channel_dump(dev, &dev->sram_channels[ port->sram_chno ]);
|
||||
cx23885_sram_channel_dump(dev,
|
||||
&dev->sram_channels[port->sram_chno]);
|
||||
|
||||
cx23885_stop_dma(port);
|
||||
do_cancel_buffers(port, "timeout", 1);
|
||||
|
@ -1543,16 +1549,23 @@ static int cx23885_irq_ts(struct cx23885_tsport *port, u32 status)
|
|||
if ((status & VID_BC_MSK_OPC_ERR) ||
|
||||
(status & VID_BC_MSK_BAD_PKT) ||
|
||||
(status & VID_BC_MSK_SYNC) ||
|
||||
(status & VID_BC_MSK_OF))
|
||||
{
|
||||
(status & VID_BC_MSK_OF)) {
|
||||
|
||||
if (status & VID_BC_MSK_OPC_ERR)
|
||||
dprintk(7, " (VID_BC_MSK_OPC_ERR 0x%08x)\n", VID_BC_MSK_OPC_ERR);
|
||||
dprintk(7, " (VID_BC_MSK_OPC_ERR 0x%08x)\n",
|
||||
VID_BC_MSK_OPC_ERR);
|
||||
|
||||
if (status & VID_BC_MSK_BAD_PKT)
|
||||
dprintk(7, " (VID_BC_MSK_BAD_PKT 0x%08x)\n", VID_BC_MSK_BAD_PKT);
|
||||
dprintk(7, " (VID_BC_MSK_BAD_PKT 0x%08x)\n",
|
||||
VID_BC_MSK_BAD_PKT);
|
||||
|
||||
if (status & VID_BC_MSK_SYNC)
|
||||
dprintk(7, " (VID_BC_MSK_SYNC 0x%08x)\n", VID_BC_MSK_SYNC);
|
||||
dprintk(7, " (VID_BC_MSK_SYNC 0x%08x)\n",
|
||||
VID_BC_MSK_SYNC);
|
||||
|
||||
if (status & VID_BC_MSK_OF)
|
||||
dprintk(7, " (VID_BC_MSK_OF 0x%08x)\n", VID_BC_MSK_OF);
|
||||
dprintk(7, " (VID_BC_MSK_OF 0x%08x)\n",
|
||||
VID_BC_MSK_OF);
|
||||
|
||||
printk(KERN_ERR "%s: mpeg risc op code error\n", dev->name);
|
||||
|
||||
|
@ -1606,7 +1619,7 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
|
|||
ts2_status = cx_read(VID_C_INT_STAT);
|
||||
ts2_mask = cx_read(VID_C_INT_MSK);
|
||||
|
||||
if ( (pci_status == 0) && (ts2_status == 0) && (ts1_status == 0) )
|
||||
if ((pci_status == 0) && (ts2_status == 0) && (ts1_status == 0))
|
||||
goto out;
|
||||
|
||||
vida_count = cx_read(VID_A_GPCNT);
|
||||
|
@ -1621,38 +1634,56 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
|
|||
dprintk(7, "ts2_status: 0x%08x ts2_mask: 0x%08x count: 0x%x\n",
|
||||
ts2_status, ts2_mask, ts2_count);
|
||||
|
||||
if ( (pci_status & PCI_MSK_RISC_RD) ||
|
||||
(pci_status & PCI_MSK_RISC_WR) ||
|
||||
(pci_status & PCI_MSK_AL_RD) ||
|
||||
(pci_status & PCI_MSK_AL_WR) ||
|
||||
(pci_status & PCI_MSK_APB_DMA) ||
|
||||
(pci_status & PCI_MSK_VID_C) ||
|
||||
(pci_status & PCI_MSK_VID_B) ||
|
||||
(pci_status & PCI_MSK_VID_A) ||
|
||||
(pci_status & PCI_MSK_AUD_INT) ||
|
||||
(pci_status & PCI_MSK_AUD_EXT) )
|
||||
{
|
||||
if ((pci_status & PCI_MSK_RISC_RD) ||
|
||||
(pci_status & PCI_MSK_RISC_WR) ||
|
||||
(pci_status & PCI_MSK_AL_RD) ||
|
||||
(pci_status & PCI_MSK_AL_WR) ||
|
||||
(pci_status & PCI_MSK_APB_DMA) ||
|
||||
(pci_status & PCI_MSK_VID_C) ||
|
||||
(pci_status & PCI_MSK_VID_B) ||
|
||||
(pci_status & PCI_MSK_VID_A) ||
|
||||
(pci_status & PCI_MSK_AUD_INT) ||
|
||||
(pci_status & PCI_MSK_AUD_EXT)) {
|
||||
|
||||
if (pci_status & PCI_MSK_RISC_RD)
|
||||
dprintk(7, " (PCI_MSK_RISC_RD 0x%08x)\n", PCI_MSK_RISC_RD);
|
||||
dprintk(7, " (PCI_MSK_RISC_RD 0x%08x)\n",
|
||||
PCI_MSK_RISC_RD);
|
||||
|
||||
if (pci_status & PCI_MSK_RISC_WR)
|
||||
dprintk(7, " (PCI_MSK_RISC_WR 0x%08x)\n", PCI_MSK_RISC_WR);
|
||||
dprintk(7, " (PCI_MSK_RISC_WR 0x%08x)\n",
|
||||
PCI_MSK_RISC_WR);
|
||||
|
||||
if (pci_status & PCI_MSK_AL_RD)
|
||||
dprintk(7, " (PCI_MSK_AL_RD 0x%08x)\n", PCI_MSK_AL_RD);
|
||||
dprintk(7, " (PCI_MSK_AL_RD 0x%08x)\n",
|
||||
PCI_MSK_AL_RD);
|
||||
|
||||
if (pci_status & PCI_MSK_AL_WR)
|
||||
dprintk(7, " (PCI_MSK_AL_WR 0x%08x)\n", PCI_MSK_AL_WR);
|
||||
dprintk(7, " (PCI_MSK_AL_WR 0x%08x)\n",
|
||||
PCI_MSK_AL_WR);
|
||||
|
||||
if (pci_status & PCI_MSK_APB_DMA)
|
||||
dprintk(7, " (PCI_MSK_APB_DMA 0x%08x)\n", PCI_MSK_APB_DMA);
|
||||
dprintk(7, " (PCI_MSK_APB_DMA 0x%08x)\n",
|
||||
PCI_MSK_APB_DMA);
|
||||
|
||||
if (pci_status & PCI_MSK_VID_C)
|
||||
dprintk(7, " (PCI_MSK_VID_C 0x%08x)\n", PCI_MSK_VID_C);
|
||||
dprintk(7, " (PCI_MSK_VID_C 0x%08x)\n",
|
||||
PCI_MSK_VID_C);
|
||||
|
||||
if (pci_status & PCI_MSK_VID_B)
|
||||
dprintk(7, " (PCI_MSK_VID_B 0x%08x)\n", PCI_MSK_VID_B);
|
||||
dprintk(7, " (PCI_MSK_VID_B 0x%08x)\n",
|
||||
PCI_MSK_VID_B);
|
||||
|
||||
if (pci_status & PCI_MSK_VID_A)
|
||||
dprintk(7, " (PCI_MSK_VID_A 0x%08x)\n", PCI_MSK_VID_A);
|
||||
dprintk(7, " (PCI_MSK_VID_A 0x%08x)\n",
|
||||
PCI_MSK_VID_A);
|
||||
|
||||
if (pci_status & PCI_MSK_AUD_INT)
|
||||
dprintk(7, " (PCI_MSK_AUD_INT 0x%08x)\n", PCI_MSK_AUD_INT);
|
||||
dprintk(7, " (PCI_MSK_AUD_INT 0x%08x)\n",
|
||||
PCI_MSK_AUD_INT);
|
||||
|
||||
if (pci_status & PCI_MSK_AUD_EXT)
|
||||
dprintk(7, " (PCI_MSK_AUD_EXT 0x%08x)\n", PCI_MSK_AUD_EXT);
|
||||
dprintk(7, " (PCI_MSK_AUD_EXT 0x%08x)\n",
|
||||
PCI_MSK_AUD_EXT);
|
||||
|
||||
}
|
||||
|
||||
|
@ -1764,13 +1795,13 @@ static struct pci_device_id cx23885_pci_tbl[] = {
|
|||
.device = 0x8852,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
},{
|
||||
}, {
|
||||
/* CX23887 Rev 2 */
|
||||
.vendor = 0x14f1,
|
||||
.device = 0x8880,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
},{
|
||||
}, {
|
||||
/* --- end of list --- */
|
||||
}
|
||||
};
|
||||
|
@ -1808,9 +1839,3 @@ module_init(cx23885_init);
|
|||
module_exit(cx23885_fini);
|
||||
|
||||
/* ----------------------------------------------------------- */
|
||||
/*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
* kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
|
||||
*/
|
||||
|
|
|
@ -78,19 +78,19 @@ static int dvb_buf_prepare(struct videobuf_queue *q,
|
|||
struct videobuf_buffer *vb, enum v4l2_field field)
|
||||
{
|
||||
struct cx23885_tsport *port = q->priv_data;
|
||||
return cx23885_buf_prepare(q, port, (struct cx23885_buffer*)vb, field);
|
||||
return cx23885_buf_prepare(q, port, (struct cx23885_buffer *)vb, field);
|
||||
}
|
||||
|
||||
static void dvb_buf_queue(struct videobuf_queue *q, struct videobuf_buffer *vb)
|
||||
{
|
||||
struct cx23885_tsport *port = q->priv_data;
|
||||
cx23885_buf_queue(port, (struct cx23885_buffer*)vb);
|
||||
cx23885_buf_queue(port, (struct cx23885_buffer *)vb);
|
||||
}
|
||||
|
||||
static void dvb_buf_release(struct videobuf_queue *q,
|
||||
struct videobuf_buffer *vb)
|
||||
{
|
||||
cx23885_free_buffer(q, (struct cx23885_buffer*)vb);
|
||||
cx23885_free_buffer(q, (struct cx23885_buffer *)vb);
|
||||
}
|
||||
|
||||
static struct videobuf_queue_ops dvb_qops = {
|
||||
|
@ -450,7 +450,8 @@ static int dvb_register(struct cx23885_tsport *port)
|
|||
.fname = XC3028L_DEFAULT_FIRMWARE,
|
||||
.max_len = 64,
|
||||
.demod = 5000,
|
||||
/* This is true for all demods with v36 firmware? */
|
||||
/* This is true for all demods with
|
||||
v36 firmware? */
|
||||
.type = XC2028_D2633,
|
||||
};
|
||||
|
||||
|
@ -525,12 +526,14 @@ static int dvb_register(struct cx23885_tsport *port)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
printk("%s: The frontend of your DVB/ATSC card isn't supported yet\n",
|
||||
printk(KERN_INFO "%s: The frontend of your DVB/ATSC card "
|
||||
" isn't supported yet\n",
|
||||
dev->name);
|
||||
break;
|
||||
}
|
||||
if (NULL == fe0->dvb.frontend) {
|
||||
printk("%s: frontend initialization failed\n", dev->name);
|
||||
printk(KERN_ERR "%s: frontend initialization failed\n",
|
||||
dev->name);
|
||||
return -1;
|
||||
}
|
||||
/* define general-purpose callback pointer */
|
||||
|
@ -568,7 +571,8 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
|
|||
port->num_frontends);
|
||||
|
||||
for (i = 1; i <= port->num_frontends; i++) {
|
||||
if (videobuf_dvb_alloc_frontend(dev, &port->frontends, i) == NULL) {
|
||||
if (videobuf_dvb_alloc_frontend(dev,
|
||||
&port->frontends, i) == NULL) {
|
||||
printk(KERN_ERR "%s() failed to alloc\n", __func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
@ -578,7 +582,7 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
|
|||
err = -EINVAL;
|
||||
|
||||
dprintk(1, "%s\n", __func__);
|
||||
dprintk(1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",
|
||||
dprintk(1, " ->probed by Card=%d Name=%s, PCI %02x:%02x\n",
|
||||
dev->board,
|
||||
dev->name,
|
||||
dev->pci_bus,
|
||||
|
@ -588,14 +592,16 @@ int cx23885_dvb_register(struct cx23885_tsport *port)
|
|||
|
||||
/* dvb stuff */
|
||||
/* We have to init the queue for each frontend on a port. */
|
||||
printk("%s: cx23885 based dvb card\n", dev->name);
|
||||
videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops, &dev->pci->dev, &port->slock,
|
||||
printk(KERN_INFO "%s: cx23885 based dvb card\n", dev->name);
|
||||
videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
|
||||
&dev->pci->dev, &port->slock,
|
||||
V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP,
|
||||
sizeof(struct cx23885_buffer), port);
|
||||
}
|
||||
err = dvb_register(port);
|
||||
if (err != 0)
|
||||
printk("%s() dvb_register failed err = %d\n", __func__, err);
|
||||
printk(KERN_ERR "%s() dvb_register failed err = %d\n",
|
||||
__func__, err);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
@ -612,15 +618,9 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
|
|||
* implement MFE support.
|
||||
*/
|
||||
fe0 = videobuf_dvb_get_frontend(&port->frontends, 1);
|
||||
if(fe0->dvb.frontend)
|
||||
if (fe0->dvb.frontend)
|
||||
videobuf_dvb_unregister_bus(&port->frontends);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
* kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
|
||||
*/
|
||||
|
|
|
@ -131,7 +131,7 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap,
|
|||
printk(" >\n");
|
||||
}
|
||||
|
||||
for (cnt = 1; cnt < msg->len; cnt++ ) {
|
||||
for (cnt = 1; cnt < msg->len; cnt++) {
|
||||
/* following bytes */
|
||||
wdata = msg->buf[cnt];
|
||||
ctrl = bus->i2c_period | (1 << 12) | (1 << 2);
|
||||
|
@ -151,9 +151,9 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap,
|
|||
if (retval == 0)
|
||||
goto eio;
|
||||
if (i2c_debug) {
|
||||
printk(" %02x", msg->buf[cnt]);
|
||||
dprintk(1, " %02x", msg->buf[cnt]);
|
||||
if (!(ctrl & I2C_NOSTOP))
|
||||
printk(" >\n");
|
||||
dprintk(1, " >\n");
|
||||
}
|
||||
}
|
||||
return msg->len;
|
||||
|
@ -162,7 +162,7 @@ static int i2c_sendbytes(struct i2c_adapter *i2c_adap,
|
|||
retval = -EIO;
|
||||
err:
|
||||
if (i2c_debug)
|
||||
printk(" ERR: %d\n", retval);
|
||||
printk(KERN_ERR " ERR: %d\n", retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -194,12 +194,12 @@ static int i2c_readbytes(struct i2c_adapter *i2c_adap,
|
|||
|
||||
if (i2c_debug) {
|
||||
if (joined)
|
||||
printk(" R");
|
||||
dprintk(1, " R");
|
||||
else
|
||||
printk(" <R %02x", (msg->addr << 1) + 1);
|
||||
dprintk(1, " <R %02x", (msg->addr << 1) + 1);
|
||||
}
|
||||
|
||||
for(cnt = 0; cnt < msg->len; cnt++) {
|
||||
for (cnt = 0; cnt < msg->len; cnt++) {
|
||||
|
||||
ctrl = bus->i2c_period | (1 << 12) | (1 << 2) | 1;
|
||||
|
||||
|
@ -216,9 +216,9 @@ static int i2c_readbytes(struct i2c_adapter *i2c_adap,
|
|||
goto eio;
|
||||
msg->buf[cnt] = cx_read(bus->reg_rdata) & 0xff;
|
||||
if (i2c_debug) {
|
||||
printk(" %02x", msg->buf[cnt]);
|
||||
dprintk(1, " %02x", msg->buf[cnt]);
|
||||
if (!(ctrl & I2C_NOSTOP))
|
||||
printk(" >\n");
|
||||
dprintk(1, " >\n");
|
||||
}
|
||||
}
|
||||
return msg->len;
|
||||
|
@ -227,7 +227,7 @@ static int i2c_readbytes(struct i2c_adapter *i2c_adap,
|
|||
retval = -EIO;
|
||||
err:
|
||||
if (i2c_debug)
|
||||
printk(" ERR: %d\n", retval);
|
||||
printk(KERN_ERR " ERR: %d\n", retval);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -353,17 +353,17 @@ static struct i2c_client cx23885_i2c_client_template = {
|
|||
};
|
||||
|
||||
static char *i2c_devs[128] = {
|
||||
[0x10 >> 1] = "tda10048",
|
||||
[0x12 >> 1] = "dib7000pc",
|
||||
[ 0x1c >> 1 ] = "lgdt3303",
|
||||
[ 0x86 >> 1 ] = "tda9887",
|
||||
[ 0x32 >> 1 ] = "cx24227",
|
||||
[ 0x88 >> 1 ] = "cx25837",
|
||||
[ 0x84 >> 1 ] = "tda8295",
|
||||
[ 0xa0 >> 1 ] = "eeprom",
|
||||
[ 0xc0 >> 1 ] = "tuner/mt2131/tda8275",
|
||||
[0x10 >> 1] = "tda10048",
|
||||
[0x12 >> 1] = "dib7000pc",
|
||||
[0x1c >> 1] = "lgdt3303",
|
||||
[0x86 >> 1] = "tda9887",
|
||||
[0x32 >> 1] = "cx24227",
|
||||
[0x88 >> 1] = "cx25837",
|
||||
[0x84 >> 1] = "tda8295",
|
||||
[0xa0 >> 1] = "eeprom",
|
||||
[0xc0 >> 1] = "tuner/mt2131/tda8275",
|
||||
[0xc2 >> 1] = "tuner/mt2131/tda8275/xc5000/xc3028",
|
||||
[0xc8 >> 1] = "tuner/xc3028L",
|
||||
[0xc8 >> 1] = "tuner/xc3028L",
|
||||
};
|
||||
|
||||
static void do_i2c_scan(char *name, struct i2c_client *c)
|
||||
|
@ -376,7 +376,7 @@ static void do_i2c_scan(char *name, struct i2c_client *c)
|
|||
rc = i2c_master_recv(c, &buf, 0);
|
||||
if (rc < 0)
|
||||
continue;
|
||||
printk("%s: i2c scan: found device @ 0x%x [%s]\n",
|
||||
printk(KERN_INFO "%s: i2c scan: found device @ 0x%x [%s]\n",
|
||||
name, i << 1, i2c_devs[i] ? i2c_devs[i] : "???");
|
||||
}
|
||||
}
|
||||
|
@ -408,11 +408,12 @@ int cx23885_i2c_register(struct cx23885_i2c *bus)
|
|||
bus->i2c_client.adapter = &bus->i2c_adap;
|
||||
|
||||
if (0 == bus->i2c_rc) {
|
||||
printk("%s: i2c bus %d registered\n", dev->name, bus->nr);
|
||||
dprintk(1, "%s: i2c bus %d registered\n", dev->name, bus->nr);
|
||||
if (i2c_scan)
|
||||
do_i2c_scan(dev->name, &bus->i2c_client);
|
||||
} else
|
||||
printk("%s: i2c bus %d register FAILED\n", dev->name, bus->nr);
|
||||
printk(KERN_WARNING "%s: i2c bus %d register FAILED\n",
|
||||
dev->name, bus->nr);
|
||||
|
||||
return bus->i2c_rc;
|
||||
}
|
||||
|
|
|
@ -285,11 +285,10 @@ static void cx23885_video_wakeup(struct cx23885_dev *dev,
|
|||
list_del(&buf->vb.queue);
|
||||
wake_up(&buf->vb.done);
|
||||
}
|
||||
if (list_empty(&q->active)) {
|
||||
if (list_empty(&q->active))
|
||||
del_timer(&q->timeout);
|
||||
} else {
|
||||
else
|
||||
mod_timer(&q->timeout, jiffies+BUFFER_TIMEOUT);
|
||||
}
|
||||
if (bc != 1)
|
||||
printk(KERN_ERR "%s: %d buffers handled (should be 1)\n",
|
||||
__func__, bc);
|
||||
|
@ -379,12 +378,12 @@ static int res_get(struct cx23885_dev *dev, struct cx23885_fh *fh,
|
|||
|
||||
static int res_check(struct cx23885_fh *fh, unsigned int bit)
|
||||
{
|
||||
return (fh->resources & bit);
|
||||
return fh->resources & bit;
|
||||
}
|
||||
|
||||
static int res_locked(struct cx23885_dev *dev, unsigned int bit)
|
||||
{
|
||||
return (dev->resources & bit);
|
||||
return dev->resources & bit;
|
||||
}
|
||||
|
||||
static void res_free(struct cx23885_dev *dev, struct cx23885_fh *fh,
|
||||
|
@ -887,14 +886,16 @@ static int video_mmap(struct file *file, struct vm_area_struct *vma)
|
|||
/* ------------------------------------------------------------------ */
|
||||
/* VIDEO CTRL IOCTLS */
|
||||
|
||||
static int cx23885_get_control(struct cx23885_dev *dev, struct v4l2_control *ctl)
|
||||
static int cx23885_get_control(struct cx23885_dev *dev,
|
||||
struct v4l2_control *ctl)
|
||||
{
|
||||
dprintk(1, "%s() calling cx25840(VIDIOC_G_CTRL)\n", __func__);
|
||||
cx23885_call_i2c_clients(&dev->i2c_bus[2], VIDIOC_G_CTRL, ctl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cx23885_set_control(struct cx23885_dev *dev, struct v4l2_control *ctl)
|
||||
static int cx23885_set_control(struct cx23885_dev *dev,
|
||||
struct v4l2_control *ctl)
|
||||
{
|
||||
dprintk(1, "%s() calling cx25840(VIDIOC_S_CTRL)"
|
||||
" (disabled - no action)\n", __func__);
|
||||
|
@ -1073,29 +1074,29 @@ static int vidioc_reqbufs(struct file *file, void *priv,
|
|||
struct v4l2_requestbuffers *p)
|
||||
{
|
||||
struct cx23885_fh *fh = priv;
|
||||
return (videobuf_reqbufs(get_queue(fh), p));
|
||||
return videobuf_reqbufs(get_queue(fh), p);
|
||||
}
|
||||
|
||||
static int vidioc_querybuf(struct file *file, void *priv,
|
||||
struct v4l2_buffer *p)
|
||||
{
|
||||
struct cx23885_fh *fh = priv;
|
||||
return (videobuf_querybuf(get_queue(fh), p));
|
||||
return videobuf_querybuf(get_queue(fh), p);
|
||||
}
|
||||
|
||||
static int vidioc_qbuf(struct file *file, void *priv,
|
||||
struct v4l2_buffer *p)
|
||||
{
|
||||
struct cx23885_fh *fh = priv;
|
||||
return (videobuf_qbuf(get_queue(fh), p));
|
||||
return videobuf_qbuf(get_queue(fh), p);
|
||||
}
|
||||
|
||||
static int vidioc_dqbuf(struct file *file, void *priv,
|
||||
struct v4l2_buffer *p)
|
||||
{
|
||||
struct cx23885_fh *fh = priv;
|
||||
return (videobuf_dqbuf(get_queue(fh), p,
|
||||
file->f_flags & O_NONBLOCK));
|
||||
return videobuf_dqbuf(get_queue(fh), p,
|
||||
file->f_flags & O_NONBLOCK);
|
||||
}
|
||||
|
||||
static int vidioc_streamon(struct file *file, void *priv,
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
#include <linux/version.h>
|
||||
#include <linux/mutex.h>
|
||||
|
||||
#define CX23885_VERSION_CODE KERNEL_VERSION(0,0,1)
|
||||
#define CX23885_VERSION_CODE KERNEL_VERSION(0, 0, 1)
|
||||
|
||||
#define UNSET (-1U)
|
||||
|
||||
|
@ -370,14 +370,14 @@ struct sram_channel {
|
|||
/* ----------------------------------------------------------- */
|
||||
|
||||
#define cx_read(reg) readl(dev->lmmio + ((reg)>>2))
|
||||
#define cx_write(reg,value) writel((value), dev->lmmio + ((reg)>>2))
|
||||
#define cx_write(reg, value) writel((value), dev->lmmio + ((reg)>>2))
|
||||
|
||||
#define cx_andor(reg,mask,value) \
|
||||
#define cx_andor(reg, mask, value) \
|
||||
writel((readl(dev->lmmio+((reg)>>2)) & ~(mask)) |\
|
||||
((value) & (mask)), dev->lmmio+((reg)>>2))
|
||||
|
||||
#define cx_set(reg,bit) cx_andor((reg),(bit),(bit))
|
||||
#define cx_clear(reg,bit) cx_andor((reg),(bit),0)
|
||||
#define cx_set(reg, bit) cx_andor((reg), (bit), (bit))
|
||||
#define cx_clear(reg, bit) cx_andor((reg), (bit), 0)
|
||||
|
||||
/* ----------------------------------------------------------- */
|
||||
/* cx23885-core.c */
|
||||
|
@ -414,7 +414,8 @@ extern const unsigned int cx23885_bcount;
|
|||
extern struct cx23885_subid cx23885_subids[];
|
||||
extern const unsigned int cx23885_idcount;
|
||||
|
||||
extern int cx23885_tuner_callback(void *priv, int component, int command, int arg);
|
||||
extern int cx23885_tuner_callback(void *priv, int component,
|
||||
int command, int arg);
|
||||
extern void cx23885_card_list(struct cx23885_dev *dev);
|
||||
extern int cx23885_ir_init(struct cx23885_dev *dev);
|
||||
extern void cx23885_gpio_setup(struct cx23885_dev *dev);
|
||||
|
@ -482,11 +483,3 @@ static inline unsigned int norm_swidth(v4l2_std_id norm)
|
|||
{
|
||||
return (norm & (V4L2_STD_MN & ~V4L2_STD_PAL_Nc)) ? 754 : 922;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* c-basic-offset: 8
|
||||
* End:
|
||||
* kate: eol "unix"; indent-width 3; remove-trailing-space on; replace-trailing-space-save on; tab-width 8; replace-tabs off; space-indent off; mixed-indent off
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue