Commit 41ef7c1e authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Linus Torvalds

[PATCH] v4l: CX88 Update

- Removed unused structures.
- Removed BTTV version check.
- Some debug structs moved to their own .c file and converted to static
- Comment changed to express better when attach_inform is running
- set_freq removed from set_mode at tuner-core.c.
- I2C cleanups and converged to a basic reference structure.
- Rename tuner structures fields.
- It calls VIDIOC_G_FREQUENCY to get tuner freq from tuner.
- added missing contrast offset value, set to 0.
- Let Kconfig decide whether to include frontend-specific code.
Signed-Off-By: default avatarNickolay V. Shmyrev <nshmyrev@yandex.ru>
Signed-off-by: default avatarMichael Krufky <mkrufky@m1k.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent fa9846a8
...@@ -690,11 +690,9 @@ static void blackbird_codec_settings(struct cx8802_dev *dev) ...@@ -690,11 +690,9 @@ static void blackbird_codec_settings(struct cx8802_dev *dev)
int bitrate_mode = 1; int bitrate_mode = 1;
int bitrate = 7500000; int bitrate = 7500000;
int bitrate_peak = 7500000; int bitrate_peak = 7500000;
#if 1
bitrate_mode = BLACKBIRD_VIDEO_CBR; bitrate_mode = BLACKBIRD_VIDEO_CBR;
bitrate = 4000*1024; bitrate = 4000*1024;
bitrate_peak = 4000*1024; bitrate_peak = 4000*1024;
#endif
/* assign stream type */ /* assign stream type */
blackbird_api_cmd(dev, BLACKBIRD_API_SET_STREAM_TYPE, 1, 0, BLACKBIRD_STREAM_PROGRAM); blackbird_api_cmd(dev, BLACKBIRD_API_SET_STREAM_TYPE, 1, 0, BLACKBIRD_STREAM_PROGRAM);
...@@ -810,9 +808,6 @@ static int blackbird_initialize_codec(struct cx8802_dev *dev) ...@@ -810,9 +808,6 @@ static int blackbird_initialize_codec(struct cx8802_dev *dev)
cx_write(MO_VBOS_CONTROL, 0x84A00); /* no 656 mode, 8-bit pixels, disable VBI */ cx_write(MO_VBOS_CONTROL, 0x84A00); /* no 656 mode, 8-bit pixels, disable VBI */
cx_clear(MO_OUTPUT_FORMAT, 0x0008); /* Normal Y-limits to let the mpeg encoder sync */ cx_clear(MO_OUTPUT_FORMAT, 0x0008); /* Normal Y-limits to let the mpeg encoder sync */
#if 0 /* FIXME */
set_scale(dev, 720, 480, V4L2_FIELD_INTERLACED);
#endif
blackbird_codec_settings(dev); blackbird_codec_settings(dev);
msleep(1); msleep(1);
......
/* /*
* $Id: cx88-core.c,v 1.31 2005/06/22 22:58:04 mchehab Exp $ * $Id: cx88-core.c,v 1.33 2005/07/07 14:17:47 mchehab Exp $
* *
* device driver for Conexant 2388x based TV cards * device driver for Conexant 2388x based TV cards
* driver core * driver core
...@@ -470,25 +470,6 @@ int cx88_risc_decode(u32 risc) ...@@ -470,25 +470,6 @@ int cx88_risc_decode(u32 risc)
return incr[risc >> 28] ? incr[risc >> 28] : 1; return incr[risc >> 28] ? incr[risc >> 28] : 1;
} }
#if 0 /* currently unused, but useful for debugging */
void cx88_risc_disasm(struct cx88_core *core,
struct btcx_riscmem *risc)
{
unsigned int i,j,n;
printk("%s: risc disasm: %p [dma=0x%08lx]\n",
core->name, risc->cpu, (unsigned long)risc->dma);
for (i = 0; i < (risc->size >> 2); i += n) {
printk("%s: %04d: ", core->name, i);
n = cx88_risc_decode(risc->cpu[i]);
for (j = 1; j < n; j++)
printk("%s: %04d: 0x%08x [ arg #%d ]\n",
core->name, i+j, risc->cpu[i+j], j);
if (risc->cpu[i] == RISC_JUMP)
break;
}
}
#endif
void cx88_sram_channel_dump(struct cx88_core *core, void cx88_sram_channel_dump(struct cx88_core *core,
struct sram_channel *ch) struct sram_channel *ch)
...@@ -545,30 +526,12 @@ void cx88_sram_channel_dump(struct cx88_core *core, ...@@ -545,30 +526,12 @@ void cx88_sram_channel_dump(struct cx88_core *core,
core->name,cx_read(ch->cnt2_reg)); core->name,cx_read(ch->cnt2_reg));
} }
/* Used only on cx88-core */
static char *cx88_pci_irqs[32] = { static char *cx88_pci_irqs[32] = {
"vid", "aud", "ts", "vip", "hst", "5", "6", "tm1", "vid", "aud", "ts", "vip", "hst", "5", "6", "tm1",
"src_dma", "dst_dma", "risc_rd_err", "risc_wr_err", "src_dma", "dst_dma", "risc_rd_err", "risc_wr_err",
"brdg_err", "src_dma_err", "dst_dma_err", "ipb_dma_err", "brdg_err", "src_dma_err", "dst_dma_err", "ipb_dma_err",
"i2c", "i2c_rack", "ir_smp", "gpio0", "gpio1" "i2c", "i2c_rack", "ir_smp", "gpio0", "gpio1"
}; };
/* Used only on cx88-video */
char *cx88_vid_irqs[32] = {
"y_risci1", "u_risci1", "v_risci1", "vbi_risc1",
"y_risci2", "u_risci2", "v_risci2", "vbi_risc2",
"y_oflow", "u_oflow", "v_oflow", "vbi_oflow",
"y_sync", "u_sync", "v_sync", "vbi_sync",
"opc_err", "par_err", "rip_err", "pci_abort",
};
/* Used only on cx88-mpeg */
char *cx88_mpeg_irqs[32] = {
"ts_risci1", NULL, NULL, NULL,
"ts_risci2", NULL, NULL, NULL,
"ts_oflow", NULL, NULL, NULL,
"ts_sync", NULL, NULL, NULL,
"opc_err", "par_err", "rip_err", "pci_abort",
"ts_err?",
};
void cx88_print_irqbits(char *name, char *tag, char **strings, void cx88_print_irqbits(char *name, char *tag, char **strings,
u32 bits, u32 mask) u32 bits, u32 mask)
...@@ -618,16 +581,11 @@ void cx88_wakeup(struct cx88_core *core, ...@@ -618,16 +581,11 @@ void cx88_wakeup(struct cx88_core *core,
break; break;
buf = list_entry(q->active.next, buf = list_entry(q->active.next,
struct cx88_buffer, vb.queue); struct cx88_buffer, vb.queue);
#if 0
if (buf->count > count)
break;
#else
/* count comes from the hw and is is 16bit wide -- /* count comes from the hw and is is 16bit wide --
* this trick handles wrap-arounds correctly for * this trick handles wrap-arounds correctly for
* up to 32767 buffers in flight... */ * up to 32767 buffers in flight... */
if ((s16) (count - buf->count) < 0) if ((s16) (count - buf->count) < 0)
break; break;
#endif
do_gettimeofday(&buf->vb.ts); do_gettimeofday(&buf->vb.ts);
dprintk(2,"[%p/%d] wakeup reg=%d buf=%d\n",buf,buf->vb.i, dprintk(2,"[%p/%d] wakeup reg=%d buf=%d\n",buf,buf->vb.i,
count, buf->count); count, buf->count);
...@@ -955,12 +913,10 @@ int cx88_set_tvnorm(struct cx88_core *core, struct cx88_tvnorm *norm) ...@@ -955,12 +913,10 @@ int cx88_set_tvnorm(struct cx88_core *core, struct cx88_tvnorm *norm)
norm->cxiformat, cx_read(MO_INPUT_FORMAT) & 0x0f); norm->cxiformat, cx_read(MO_INPUT_FORMAT) & 0x0f);
cx_andor(MO_INPUT_FORMAT, 0xf, norm->cxiformat); cx_andor(MO_INPUT_FORMAT, 0xf, norm->cxiformat);
#if 1
// FIXME: as-is from DScaler // FIXME: as-is from DScaler
dprintk(1,"set_tvnorm: MO_OUTPUT_FORMAT 0x%08x [old=0x%08x]\n", dprintk(1,"set_tvnorm: MO_OUTPUT_FORMAT 0x%08x [old=0x%08x]\n",
norm->cxoformat, cx_read(MO_OUTPUT_FORMAT)); norm->cxoformat, cx_read(MO_OUTPUT_FORMAT));
cx_write(MO_OUTPUT_FORMAT, norm->cxoformat); cx_write(MO_OUTPUT_FORMAT, norm->cxoformat);
#endif
// MO_SCONV_REG = adc clock / video dec clock * 2^17 // MO_SCONV_REG = adc clock / video dec clock * 2^17
tmp64 = adc_clock * (u64)(1 << 17); tmp64 = adc_clock * (u64)(1 << 17);
...@@ -1219,8 +1175,6 @@ void cx88_core_put(struct cx88_core *core, struct pci_dev *pci) ...@@ -1219,8 +1175,6 @@ void cx88_core_put(struct cx88_core *core, struct pci_dev *pci)
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
EXPORT_SYMBOL(cx88_print_ioctl); EXPORT_SYMBOL(cx88_print_ioctl);
EXPORT_SYMBOL(cx88_vid_irqs);
EXPORT_SYMBOL(cx88_mpeg_irqs);
EXPORT_SYMBOL(cx88_print_irqbits); EXPORT_SYMBOL(cx88_print_irqbits);
EXPORT_SYMBOL(cx88_core_irq); EXPORT_SYMBOL(cx88_core_irq);
......
/* /*
* $Id: cx88-dvb.c,v 1.39 2005/07/02 20:00:46 mkrufky Exp $ * $Id: cx88-dvb.c,v 1.41 2005/07/04 19:35:05 mkrufky Exp $
* *
* device driver for Conexant 2388x based TV cards * device driver for Conexant 2388x based TV cards
* MPEG Transport Stream (DVB) routines * MPEG Transport Stream (DVB) routines
...@@ -30,22 +30,20 @@ ...@@ -30,22 +30,20 @@
#include <linux/file.h> #include <linux/file.h>
#include <linux/suspend.h> #include <linux/suspend.h>
/* these three frontends need merging via linuxtv cvs ... */
#define HAVE_CX22702 1
#define HAVE_OR51132 1
#define HAVE_LGDT3302 1
#include "cx88.h" #include "cx88.h"
#include "dvb-pll.h" #include "dvb-pll.h"
#include "mt352.h"
#include "mt352_priv.h" #if CONFIG_DVB_MT352
#if HAVE_CX22702 # include "mt352.h"
# include "mt352_priv.h"
#endif
#if CONFIG_DVB_CX22702
# include "cx22702.h" # include "cx22702.h"
#endif #endif
#if HAVE_OR51132 #if CONFIG_DVB_OR51132
# include "or51132.h" # include "or51132.h"
#endif #endif
#if HAVE_LGDT3302 #if CONFIG_DVB_LGDT3302
# include "lgdt3302.h" # include "lgdt3302.h"
#endif #endif
...@@ -104,6 +102,7 @@ static struct videobuf_queue_ops dvb_qops = { ...@@ -104,6 +102,7 @@ static struct videobuf_queue_ops dvb_qops = {
/* ------------------------------------------------------------------ */ /* ------------------------------------------------------------------ */
#if CONFIG_DVB_MT352
static int dvico_fusionhdtv_demod_init(struct dvb_frontend* fe) static int dvico_fusionhdtv_demod_init(struct dvb_frontend* fe)
{ {
static u8 clock_config [] = { CLOCK_CTL, 0x38, 0x39 }; static u8 clock_config [] = { CLOCK_CTL, 0x38, 0x39 };
...@@ -171,8 +170,9 @@ static struct mt352_config dntv_live_dvbt_config = { ...@@ -171,8 +170,9 @@ static struct mt352_config dntv_live_dvbt_config = {
.demod_init = dntv_live_dvbt_demod_init, .demod_init = dntv_live_dvbt_demod_init,
.pll_set = mt352_pll_set, .pll_set = mt352_pll_set,
}; };
#endif
#if HAVE_CX22702 #if CONFIG_DVB_CX22702
static struct cx22702_config connexant_refboard_config = { static struct cx22702_config connexant_refboard_config = {
.demod_address = 0x43, .demod_address = 0x43,
.pll_address = 0x60, .pll_address = 0x60,
...@@ -186,7 +186,7 @@ static struct cx22702_config hauppauge_novat_config = { ...@@ -186,7 +186,7 @@ static struct cx22702_config hauppauge_novat_config = {
}; };
#endif #endif
#if HAVE_OR51132 #if CONFIG_DVB_OR51132
static int or51132_set_ts_param(struct dvb_frontend* fe, static int or51132_set_ts_param(struct dvb_frontend* fe,
int is_punctured) int is_punctured)
{ {
...@@ -203,7 +203,7 @@ static struct or51132_config pchdtv_hd3000 = { ...@@ -203,7 +203,7 @@ static struct or51132_config pchdtv_hd3000 = {
}; };
#endif #endif
#if HAVE_LGDT3302 #if CONFIG_DVB_LGDT3302
static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured) static int lgdt3302_set_ts_param(struct dvb_frontend* fe, int is_punctured)
{ {
struct cx8802_dev *dev= fe->dvb->priv; struct cx8802_dev *dev= fe->dvb->priv;
...@@ -237,7 +237,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -237,7 +237,7 @@ static int dvb_register(struct cx8802_dev *dev)
/* init frontend */ /* init frontend */
switch (dev->core->board) { switch (dev->core->board) {
#if HAVE_CX22702 #if CONFIG_DVB_CX22702
case CX88_BOARD_HAUPPAUGE_DVB_T1: case CX88_BOARD_HAUPPAUGE_DVB_T1:
dev->dvb.frontend = cx22702_attach(&hauppauge_novat_config, dev->dvb.frontend = cx22702_attach(&hauppauge_novat_config,
&dev->core->i2c_adap); &dev->core->i2c_adap);
...@@ -248,6 +248,7 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -248,6 +248,7 @@ static int dvb_register(struct cx8802_dev *dev)
&dev->core->i2c_adap); &dev->core->i2c_adap);
break; break;
#endif #endif
#if CONFIG_DVB_MT352
case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1: case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1:
dev->core->pll_addr = 0x61; dev->core->pll_addr = 0x61;
dev->core->pll_desc = &dvb_pll_lg_z201; dev->core->pll_desc = &dvb_pll_lg_z201;
...@@ -268,13 +269,14 @@ static int dvb_register(struct cx8802_dev *dev) ...@@ -268,13 +269,14 @@ static int dvb_register(struct cx8802_dev *dev)
dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_config, dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_config,
&dev->core->i2c_adap); &dev->core->i2c_adap);
break; break;
#if HAVE_OR51132 #endif
#if CONFIG_DVB_OR51132
case CX88_BOARD_PCHDTV_HD3000: case CX88_BOARD_PCHDTV_HD3000:
dev->dvb.frontend = or51132_attach(&pchdtv_hd3000, dev->dvb.frontend = or51132_attach(&pchdtv_hd3000,
&dev->core->i2c_adap); &dev->core->i2c_adap);
break; break;
#endif #endif
#if HAVE_LGDT3302 #if CONFIG_DVB_LGDT3302
case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q: case CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q:
dev->ts_gen_cntrl = 0x08; dev->ts_gen_cntrl = 0x08;
{ {
......
/* /*
$Id: cx88-i2c.c,v 1.24 2005/06/17 18:46:23 mkrufky Exp $ $Id: cx88-i2c.c,v 1.28 2005/07/05 17:37:35 nsh Exp $
cx88-i2c.c -- all the i2c code is here cx88-i2c.c -- all the i2c code is here
...@@ -91,25 +91,32 @@ static int cx8800_bit_getsda(void *data) ...@@ -91,25 +91,32 @@ static int cx8800_bit_getsda(void *data)
static int attach_inform(struct i2c_client *client) static int attach_inform(struct i2c_client *client)
{ {
struct tuner_addr tun_addr; struct tuner_setup tun_setup;
struct cx88_core *core = i2c_get_adapdata(client->adapter); struct cx88_core *core = i2c_get_adapdata(client->adapter);
dprintk(1, "i2c attach [addr=0x%x,client=%s]\n", dprintk(1, "%s i2c attach [addr=0x%x,client=%s]\n",
client->addr, i2c_clientname(client)); client->driver->name,client->addr,i2c_clientname(client));
if (!client->driver->command) if (!client->driver->command)
return 0; return 0;
if (core->radio_type != UNSET) { if (core->radio_type != UNSET) {
tun_addr.v4l2_tuner = V4L2_TUNER_RADIO; if ((core->radio_addr==ADDR_UNSET)||(core->radio_addr==client->addr)) {
tun_addr.type = core->radio_type; tun_setup.mode_mask = T_RADIO;
tun_addr.addr = core->radio_addr; tun_setup.type = core->radio_type;
client->driver->command(client,TUNER_SET_TYPE_ADDR, &tun_addr); tun_setup.addr = core->radio_addr;
client->driver->command (client, TUNER_SET_TYPE_ADDR, &tun_setup);
}
} }
if (core->tuner_type != UNSET) { if (core->tuner_type != UNSET) {
tun_addr.v4l2_tuner = V4L2_TUNER_ANALOG_TV; if ((core->tuner_addr==ADDR_UNSET)||(core->tuner_addr==client->addr)) {
tun_addr.type = core->tuner_type;
tun_addr.addr = core->tuner_addr; tun_setup.mode_mask = T_ANALOG_TV;
client->driver->command(client,TUNER_SET_TYPE_ADDR, &tun_addr); tun_setup.type = core->tuner_type;
tun_setup.addr = core->tuner_addr;
client->driver->command (client,TUNER_SET_TYPE_ADDR, &tun_setup);
}
} }
if (core->tda9887_conf) if (core->tda9887_conf)
......
This diff is collapsed.
/* /*
* $Id: cx88-mpeg.c,v 1.30 2005/07/05 19:44:40 mkrufky Exp $ * $Id: cx88-mpeg.c,v 1.31 2005/07/07 14:17:47 mchehab Exp $
* *
* Support for the mpeg transport stream transfers * Support for the mpeg transport stream transfers
* PCI function #2 of the cx2388x. * PCI function #2 of the cx2388x.
...@@ -64,7 +64,6 @@ static int cx8802_start_dma(struct cx8802_dev *dev, ...@@ -64,7 +64,6 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
/* write TS length to chip */ /* write TS length to chip */
cx_write(MO_TS_LNGTH, buf->vb.width); cx_write(MO_TS_LNGTH, buf->vb.width);
#if 1
/* FIXME: this needs a review. /* FIXME: this needs a review.
* also: move to cx88-blackbird + cx88-dvb source files? */ * also: move to cx88-blackbird + cx88-dvb source files? */
...@@ -76,9 +75,9 @@ static int cx8802_start_dma(struct cx8802_dev *dev, ...@@ -76,9 +75,9 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
cx_write(TS_HW_SOP_CNTRL,0x47<<16|188<<4|0x01); cx_write(TS_HW_SOP_CNTRL,0x47<<16|188<<4|0x01);
if ((core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q) || if ((core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q) ||
(core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T)) { (core->board == CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T)) {
cx_write(TS_SOP_STAT, 0<<16 | 0<<14 | 1<<13 | 0<<12); cx_write(TS_SOP_STAT, 1<<13);
} else { } else {
cx_write(TS_SOP_STAT,0x00); cx_write(TS_SOP_STAT, 0x00);
} }
cx_write(TS_GEN_CNTRL, dev->ts_gen_cntrl); cx_write(TS_GEN_CNTRL, dev->ts_gen_cntrl);
udelay(100); udelay(100);
...@@ -98,7 +97,6 @@ static int cx8802_start_dma(struct cx8802_dev *dev, ...@@ -98,7 +97,6 @@ static int cx8802_start_dma(struct cx8802_dev *dev,
cx_write(TS_GEN_CNTRL, 0x06); /* punctured clock TS & posedge driven */ cx_write(TS_GEN_CNTRL, 0x06); /* punctured clock TS & posedge driven */
udelay(100); udelay(100);
} }
#endif
/* reset counter */ /* reset counter */
cx_write(MO_TS_GPCNTRL, GP_COUNT_CONTROL_RESET); cx_write(MO_TS_GPCNTRL, GP_COUNT_CONTROL_RESET);
...@@ -270,6 +268,15 @@ static void cx8802_timeout(unsigned long data) ...@@ -270,6 +268,15 @@ static void cx8802_timeout(unsigned long data)
do_cancel_buffers(dev,"timeout",1); do_cancel_buffers(dev,"timeout",1);
} }
static char *cx88_mpeg_irqs[32] = {
"ts_risci1", NULL, NULL, NULL,
"ts_risci2", NULL, NULL, NULL,
"ts_oflow", NULL, NULL, NULL,
"ts_sync", NULL, NULL, NULL,
"opc_err", "par_err", "rip_err", "pci_abort",
"ts_err?",
};
static void cx8802_mpeg_irq(struct cx8802_dev *dev) static void cx8802_mpeg_irq(struct cx8802_dev *dev)
{ {
struct cx88_core *core = dev->core; struct cx88_core *core = dev->core;
...@@ -282,10 +289,7 @@ static void cx8802_mpeg_irq(struct cx8802_dev *dev) ...@@ -282,10 +289,7 @@ static void cx8802_mpeg_irq(struct cx8802_dev *dev)
return; return;
cx_write(MO_TS_INTSTAT, status); cx_write(MO_TS_INTSTAT, status);
#if 0
cx88_print_irqbits(core->name, "irq mpeg ",
cx88_mpeg_irqs, status, mask);
#endif
if (debug || (status & mask & ~0xff)) if (debug || (status & mask & ~0xff))
cx88_print_irqbits(core->name, "irq mpeg ", cx88_print_irqbits(core->name, "irq mpeg ",
cx88_mpeg_irqs, status, mask); cx88_mpeg_irqs, status, mask);
...@@ -441,10 +445,8 @@ int cx8802_suspend_common(struct pci_dev *pci_dev, pm_message_t state) ...@@ -441,10 +445,8 @@ int cx8802_suspend_common(struct pci_dev *pci_dev, pm_message_t state)
} }
spin_unlock(&dev->slock); spin_unlock(&dev->slock);
#if 1
/* FIXME -- shutdown device */ /* FIXME -- shutdown device */
cx88_shutdown(dev->core); cx88_shutdown(dev->core);
#endif
pci_save_state(pci_dev); pci_save_state(pci_dev);
if (0 != pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state))) { if (0 != pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state))) {
...@@ -466,10 +468,8 @@ int cx8802_resume_common(struct pci_dev *pci_dev) ...@@ -466,10 +468,8 @@ int cx8802_resume_common(struct pci_dev *pci_dev)
pci_set_power_state(pci_dev, PCI_D0); pci_set_power_state(pci_dev, PCI_D0);
pci_restore_state(pci_dev); pci_restore_state(pci_dev);
#if 1
/* FIXME: re-initialize hardware */ /* FIXME: re-initialize hardware */
cx88_reset(dev->core); cx88_reset(dev->core);
#endif
/* restart video+vbi capture */ /* restart video+vbi capture */
spin_lock(&dev->slock); spin_lock(&dev->slock);
......
/* /*
$Id: cx88-reg.h,v 1.7 2005/06/03 13:31:51 mchehab Exp $ $Id: cx88-reg.h,v 1.8 2005/07/07 13:58:38 mchehab Exp $
cx88x-hw.h - CX2388x register offsets cx88x-hw.h - CX2388x register offsets
...@@ -604,20 +604,11 @@ ...@@ -604,20 +604,11 @@
#define EN_I2SIN_STR2DAC 0x00004000 #define EN_I2SIN_STR2DAC 0x00004000
#define EN_I2SIN_ENABLE 0x00008000 #define EN_I2SIN_ENABLE 0x00008000
#if 0
/* old */
#define EN_DMTRX_SUMDIFF 0x00000800
#define EN_DMTRX_SUMR 0x00000880
#define EN_DMTRX_LR 0x00000900
#define EN_DMTRX_MONO 0x00000980
#else
/* dscaler cvs */
#define EN_DMTRX_SUMDIFF (0 << 7) #define EN_DMTRX_SUMDIFF (0 << 7)
#define EN_DMTRX_SUMR (1 << 7) #define EN_DMTRX_SUMR (1 << 7)
#define EN_DMTRX_LR (2 << 7) #define EN_DMTRX_LR (2 << 7)
#define EN_DMTRX_MONO (3 << 7) #define EN_DMTRX_MONO (3 << 7)
#define EN_DMTRX_BYPASS (1 << 11) #define EN_DMTRX_BYPASS (1 << 11)
#endif
// Video // Video
#define VID_CAPTURE_CONTROL 0x310180 #define VID_CAPTURE_CONTROL 0x310180
......
/* /*
$Id: cx88-tvaudio.c,v 1.36 2005/06/05 05:53:45 mchehab Exp $ $Id: cx88-tvaudio.c,v 1.37 2005/07/07 13:58:38 mchehab Exp $
cx88x-audio.c - Conexant CX23880/23881 audio downstream driver driver cx88x-audio.c - Conexant CX23880/23881 audio downstream driver driver
...@@ -278,80 +278,6 @@ static void set_audio_standard_BTSC(struct cx88_core *core, unsigned int sap) ...@@ -278,80 +278,6 @@ static void set_audio_standard_BTSC(struct cx88_core *core, unsigned int sap)
set_audio_finish(core); set_audio_finish(core);
} }
#if 0
static void set_audio_standard_NICAM(struct cx88_core *core)
{
static const struct rlist nicam_common[] = {
/* from dscaler */
{ AUD_RATE_ADJ1, 0x00000010 },
{ AUD_RATE_ADJ2, 0x00000040 },
{ AUD_RATE_ADJ3, 0x00000100 },
{ AUD_RATE_ADJ4, 0x00000400 },
{ AUD_RATE_ADJ5, 0x00001000 },
// { AUD_DMD_RA_DDS, 0x00c0d5ce },
// Deemphasis 1:
{ AUD_DEEMPHGAIN_R, 0x000023c2 },
{ AUD_DEEMPHNUMER1_R, 0x0002a7bc },
{ AUD_DEEMPHNUMER2_R, 0x0003023e },
{ AUD_DEEMPHDENOM1_R, 0x0000f3d0 },
{ AUD_DEEMPHDENOM2_R, 0x00000000 },
#if 0
// Deemphasis 2: (other tv norm?)
{ AUD_DEEMPHGAIN_R, 0x0000c600 },
{ AUD_DEEMPHNUMER1_R, 0x00066738 },
{ AUD_DEEMPHNUMER2_R, 0x00066739 },
{ AUD_DEEMPHDENOM1_R, 0x0001e88c },
{ AUD_DEEMPHDENOM2_R, 0x0001e88c },
#endif
{ AUD_DEEMPHDENOM2_R, 0x00000000 },
{ AUD_ERRLOGPERIOD_R, 0x00000fff },
{ AUD_ERRINTRPTTHSHLD1_R, 0x000003ff },
{ AUD_ERRINTRPTTHSHLD2_R, 0x000000ff },
{ AUD_ERRINTRPTTHSHLD3_R, 0x0000003f },
{ AUD_POLYPH80SCALEFAC, 0x00000003 },
// setup QAM registers
{ AUD_PDF_DDS_CNST_BYTE2, 0x06 },
{ AUD_PDF_DDS_CNST_BYTE1, 0x82 },
{ AUD_PDF_DDS_CNST_BYTE0, 0x16 },
{ AUD_QAM_MODE, 0x05 },
{ /* end of list */ },
};
static const struct rlist nicam_pal_i[] = {
{ AUD_PDF_DDS_CNST_BYTE0, 0x12 },
{ AUD_PHACC_FREQ_8MSB, 0x3a },
{ AUD_PHACC_FREQ_8LSB, 0x93 },
{ /* end of list */ },
};
static const struct rlist nicam_default[] = {
{ AUD_PDF_DDS_CNST_BYTE0, 0x16 },
{ AUD_PHACC_FREQ_8MSB, 0x34 },
{ AUD_PHACC_FREQ_8LSB, 0x4c },
{ /* end of list */ },
};
set_audio_start(core, 0x0010,
EN_DMTRX_LR | EN_DMTRX_BYPASS | EN_NICAM_AUTO_STEREO);
set_audio_registers(core, nicam_common);
switch (core->tvaudio) {
case WW_NICAM_I:
dprintk("%s PAL-I NICAM (status: unknown)\n",__FUNCTION__);
set_audio_registers(core, nicam_pal_i);
break;
case WW_NICAM_BGDKL:
dprintk("%s PAL-BGDK NICAM (status: unknown)\n",__FUNCTION__);
set_audio_registers(core, nicam_default);
break;
};
set_audio_finish(core);
}
#endif
static void set_audio_standard_NICAM_L(struct cx88_core *core, int stereo) static void set_audio_standard_NICAM_L(struct cx88_core *core, int stereo)
{ {
......
This diff is collapsed.
/* /*
* $Id: cx88.h,v 1.67 2005/07/01 12:10:07 mkrufky Exp $ * $Id: cx88.h,v 1.68 2005/07/07 14:17:47 mchehab Exp $
* *
* v4l2 device driver for cx2388x based TV cards * v4l2 device driver for cx2388x based TV cards
* *
...@@ -82,9 +82,9 @@ struct cx88_tvnorm { ...@@ -82,9 +82,9 @@ struct cx88_tvnorm {
static unsigned int inline norm_maxw(struct cx88_tvnorm *norm) static unsigned int inline norm_maxw(struct cx88_tvnorm *norm)
{ {
return (norm->id & V4L2_STD_625_50) ? 768 : 640; return (norm->id & V4L2_STD_625_50) ? 768 : 640;
// return (norm->id & V4L2_STD_625_50) ? 720 : 640;
} }
static unsigned int inline norm_maxh(struct cx88_tvnorm *norm) static unsigned int inline norm_maxh(struct cx88_tvnorm *norm)
{ {
return (norm->id & V4L2_STD_625_50) ? 576 : 480; return (norm->id & V4L2_STD_625_50) ? 576 : 480;
...@@ -220,7 +220,6 @@ struct cx88_subid { ...@@ -220,7 +220,6 @@ struct cx88_subid {
#define RESOURCE_VBI 4 #define RESOURCE_VBI 4
#define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */ #define BUFFER_TIMEOUT (HZ/2) /* 0.5 seconds */
//#define BUFFER_TIMEOUT (HZ*2)
/* buffer for one video frame */ /* buffer for one video frame */
struct cx88_buffer { struct cx88_buffer {
...@@ -336,11 +335,6 @@ struct cx8800_dev { ...@@ -336,11 +335,6 @@ struct cx8800_dev {
struct pci_dev *pci; struct pci_dev *pci;
unsigned char pci_rev,pci_lat; unsigned char pci_rev,pci_lat;
#if 0
/* video overlay */
struct v4l2_framebuffer fbuf;
struct cx88_buffer *screen;
#endif
/* capture queues */ /* capture queues */
struct cx88_dmaqueue vidq; struct cx88_dmaqueue vidq;
...@@ -435,8 +429,6 @@ struct cx8802_dev { ...@@ -435,8 +429,6 @@ struct cx8802_dev {
/* ----------------------------------------------------------- */ /* ----------------------------------------------------------- */
/* cx88-core.c */ /* cx88-core.c */
extern char *cx88_vid_irqs[32];
extern char *cx88_mpeg_irqs[32];
extern void cx88_print_irqbits(char *name, char *tag, char **strings, extern void cx88_print_irqbits(char *name, char *tag, char **strings,
u32 bits, u32 mask); u32 bits, u32 mask);
extern void cx88_print_ioctl(char *name, unsigned int cmd); extern void cx88_print_ioctl(char *name, unsigned int cmd);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment