Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 73168
b: refs/heads/master
c: afda5e4
h: refs/heads/master
v: v3
  • Loading branch information
sebdeg@ngi.it authored and Bartlomiej Zolnierkiewicz committed Nov 5, 2007
1 parent d85954a commit 83c9cf5
Show file tree
Hide file tree
Showing 29 changed files with 78 additions and 242 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: 41557e7c56dc96ddd0b068fe76d5118d516d4f04
refs/heads/master: afda5e4da5abf7366ba8ac49e7634b3c85a143ae
3 changes: 0 additions & 3 deletions trunk/Documentation/video4linux/CARDLIST.em28xx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,4 @@
7 -> Leadtek Winfast USB II (em2800)
8 -> Kworld USB2800 (em2800)
9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207]
10 -> Hauppauge WinTV HVR 900 (em2880)
11 -> Terratec Hybrid XS (em2880)
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
13 -> Terratec Prodigy XS (em2880)
19 changes: 3 additions & 16 deletions trunk/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -528,22 +528,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)

# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
# But warn user when we do so
warn-assign = \
$(warning "WARNING: Appending $$K$(1) ($(K$(1))) from $(origin K$(1)) to kernel $$$(1)")

ifneq ($(KCPPFLAGS),)
$(call warn-assign,CPPFLAGS)
KBUILD_CPPFLAGS += $(KCPPFLAGS)
endif
ifneq ($(KAFLAGS),)
$(call warn-assign,AFLAGS)
KBUILD_AFLAGS += $(KAFLAGS)
endif
ifneq ($(KCFLAGS),)
$(call warn-assign,CFLAGS)
KBUILD_CFLAGS += $(KCFLAGS)
endif
KBUILD_CPPFLAGS += $(CPPFLAGS)
KBUILD_AFLAGS += $(AFLAGS)
KBUILD_CFLAGS += $(CFLAGS)

# Use --build-id when available.
LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/ide/pci/piix.c
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ struct ich_laptop {

static const struct ich_laptop ich_laptop[] = {
/* devid, subvendor, subdev */
{ 0x27DF, 0x1025, 0x0102 }, /* ICH7 on Acer 5602aWLMi */
{ 0x27DF, 0x0005, 0x0280 }, /* ICH7 on Acer 5602WLMi */
{ 0x27DF, 0x1025, 0x0110 }, /* ICH7 on Acer 3682WLMi */
{ 0x27DF, 0x1043, 0x1267 }, /* ICH7 on Asus W5F */
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/media/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ config VIDEO_IR_I2C

config VIDEO_IR
tristate
depends on INPUT
select VIDEO_IR_I2C if I2C

config VIDEO_TVEEPROM
Expand Down
70 changes: 12 additions & 58 deletions trunk/drivers/media/common/saa7146_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,89 +59,43 @@ void saa7146_setgpio(struct saa7146_dev *dev, int port, u32 data)
}

/* This DEBI code is based on the saa7146 Stradis driver by Nathan Laredo */
static inline int saa7146_wait_for_debi_done_sleep(struct saa7146_dev *dev,
unsigned long us1, unsigned long us2)
int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop)
{
unsigned long timeout;
unsigned long start;
int err;

/* wait for registers to be programmed */
timeout = jiffies + usecs_to_jiffies(us1);
start = jiffies;
while (1) {
err = time_after(jiffies, timeout);
err = time_after(jiffies, start + HZ/20);
if (saa7146_read(dev, MC2) & 2)
break;
if (err) {
printk(KERN_ERR "%s: %s timed out while waiting for "
"registers getting programmed\n",
dev->name, __FUNCTION__);
DEB_S(("timed out while waiting for registers getting programmed\n"));
return -ETIMEDOUT;
}
msleep(1);
if (nobusyloop)
msleep(1);
}

/* wait for transfer to complete */
timeout = jiffies + usecs_to_jiffies(us2);
start = jiffies;
while (1) {
err = time_after(jiffies, timeout);
err = time_after(jiffies, start + HZ/4);
if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S))
break;
saa7146_read(dev, MC2);
if (err) {
DEB_S(("%s: %s timed out while waiting for transfer "
"completion\n", dev->name, __FUNCTION__));
DEB_S(("timed out while waiting for transfer completion\n"));
return -ETIMEDOUT;
}
msleep(1);
if (nobusyloop)
msleep(1);
}

return 0;
}

static inline int saa7146_wait_for_debi_done_busyloop(struct saa7146_dev *dev,
unsigned long us1, unsigned long us2)
{
unsigned long loops;

/* wait for registers to be programmed */
loops = us1;
while (1) {
if (saa7146_read(dev, MC2) & 2)
break;
if (!loops--) {
printk(KERN_ERR "%s: %s timed out while waiting for "
"registers getting programmed\n",
dev->name, __FUNCTION__);
return -ETIMEDOUT;
}
udelay(1);
}

/* wait for transfer to complete */
loops = us2 / 5;
while (1) {
if (!(saa7146_read(dev, PSR) & SPCI_DEBI_S))
break;
saa7146_read(dev, MC2);
if (!loops--) {
DEB_S(("%s: %s timed out while waiting for transfer "
"completion\n", dev->name, __FUNCTION__));
return -ETIMEDOUT;
}
udelay(5);
}

return 0;
}

int saa7146_wait_for_debi_done(struct saa7146_dev *dev, int nobusyloop)
{
if (nobusyloop)
return saa7146_wait_for_debi_done_sleep(dev, 50000, 250000);
else
return saa7146_wait_for_debi_done_busyloop(dev, 50000, 250000);
}

/****************************************************************************
* general helper functions
****************************************************************************/
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/media/dvb/frontends/mt2131.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ static int mt2131_set_params(struct dvb_frontend *fe,
f_lo1 = (f_lo1 / 250) * 250;
f_lo2 = f_lo1 - freq - MT2131_IF2;

priv->frequency = (f_lo1 - f_lo2 - MT2131_IF2) * 1000;
priv->frequency = (f_lo1 - f_lo2 - MT2131_IF2) * 1000,

/* Frequency LO1 = 16MHz * (DIV1 + NUM1/8192 ) */
num1 = f_lo1 * 64 / (MT2131_FREF / 128);
Expand Down
96 changes: 10 additions & 86 deletions trunk/drivers/media/dvb/frontends/s5h1409.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ struct s5h1409_state {
fe_modulation_t current_modulation;

u32 current_frequency;

u32 is_qam_locked;
u32 qam_state;
};

static int debug = 0;
Expand Down Expand Up @@ -97,7 +94,6 @@ static struct init_tab {
{ 0xac, 0x1003, },
{ 0xad, 0x103f, },
{ 0xe2, 0x0100, },
{ 0xe3, 0x0000, },
{ 0x28, 0x1010, },
{ 0xb1, 0x000e, },
};
Expand Down Expand Up @@ -339,8 +335,6 @@ static int s5h1409_softreset(struct dvb_frontend* fe)

s5h1409_writereg(state, 0xf5, 0);
s5h1409_writereg(state, 0xf5, 1);
state->is_qam_locked = 0;
state->qam_state = 0;
return 0;
}

Expand All @@ -355,11 +349,6 @@ static int s5h1409_set_if_freq(struct dvb_frontend* fe, int KHz)
s5h1409_writereg(state, 0x87, 0x01be);
s5h1409_writereg(state, 0x88, 0x0436);
s5h1409_writereg(state, 0x89, 0x054d);
} else
if (KHz == 4000) {
s5h1409_writereg(state, 0x87, 0x014b);
s5h1409_writereg(state, 0x88, 0x0cb5);
s5h1409_writereg(state, 0x89, 0x03e2);
} else {
printk("%s() Invalid arg = %d KHz\n", __FUNCTION__, KHz);
ret = -1;
Expand All @@ -372,7 +361,7 @@ static int s5h1409_set_spectralinversion(struct dvb_frontend* fe, int inverted)
{
struct s5h1409_state* state = fe->demodulator_priv;

dprintk("%s(%d)\n", __FUNCTION__, inverted);
dprintk("%s()\n", __FUNCTION__);

if(inverted == 1)
return s5h1409_writereg(state, 0x1b, 0x1101); /* Inverted */
Expand All @@ -393,10 +382,14 @@ static int s5h1409_enable_modulation(struct dvb_frontend* fe,
s5h1409_writereg(state, 0xf4, 0);
break;
case QAM_64:
dprintk("%s() QAM_64\n", __FUNCTION__);
s5h1409_writereg(state, 0xf4, 1);
s5h1409_writereg(state, 0x85, 0x100);
break;
case QAM_256:
dprintk("%s() QAM_AUTO (64/256)\n", __FUNCTION__);
dprintk("%s() QAM_256\n", __FUNCTION__);
s5h1409_writereg(state, 0xf4, 1);
s5h1409_writereg(state, 0x85, 0x110);
s5h1409_writereg(state, 0x85, 0x101);
break;
default:
dprintk("%s() Invalid modulation\n", __FUNCTION__);
Expand Down Expand Up @@ -430,7 +423,7 @@ static int s5h1409_set_gpio(struct dvb_frontend* fe, int enable)
if (enable)
return s5h1409_writereg(state, 0xe3, 0x1100);
else
return s5h1409_writereg(state, 0xe3, 0x1000);
return s5h1409_writereg(state, 0xe3, 0);
}

static int s5h1409_sleep(struct dvb_frontend* fe, int enable)
Expand All @@ -451,66 +444,6 @@ static int s5h1409_register_reset(struct dvb_frontend* fe)
return s5h1409_writereg(state, 0xfa, 0);
}

static void s5h1409_set_qam_amhum_mode(struct dvb_frontend *fe)
{
struct s5h1409_state *state = fe->demodulator_priv;
u16 reg;

if (state->is_qam_locked)
return;

/* QAM EQ lock check */
reg = s5h1409_readreg(state, 0xf0);

if ((reg >> 13) & 0x1) {

state->is_qam_locked = 1;
reg &= 0xff;

s5h1409_writereg(state, 0x96, 0x00c);
if ((reg < 0x38) || (reg > 0x68) ) {
s5h1409_writereg(state, 0x93, 0x3332);
s5h1409_writereg(state, 0x9e, 0x2c37);
} else {
s5h1409_writereg(state, 0x93, 0x3130);
s5h1409_writereg(state, 0x9e, 0x2836);
}

} else {
s5h1409_writereg(state, 0x96, 0x0008);
s5h1409_writereg(state, 0x93, 0x3332);
s5h1409_writereg(state, 0x9e, 0x2c37);
}
}

static void s5h1409_set_qam_interleave_mode(struct dvb_frontend *fe)
{
struct s5h1409_state *state = fe->demodulator_priv;
u16 reg, reg1, reg2;

reg = s5h1409_readreg(state, 0xf1);

/* Master lock */
if ((reg >> 15) & 0x1) {
if (state->qam_state != 2) {
state->qam_state = 2;
reg1 = s5h1409_readreg(state, 0xb2);
reg2 = s5h1409_readreg(state, 0xad);

s5h1409_writereg(state, 0x96, 0x20);
s5h1409_writereg(state, 0xad,
( ((reg1 & 0xf000) >> 4) | (reg2 & 0xf0ff)) );
s5h1409_writereg(state, 0xab, 0x1100);
}
} else {
if (state->qam_state != 1) {
state->qam_state = 1;
s5h1409_writereg(state, 0x96, 0x08);
s5h1409_writereg(state, 0xab, 0x1101);
}
}
}

/* Talk to the demod, set the FEC, GUARD, QAM settings etc */
static int s5h1409_set_frontend (struct dvb_frontend* fe,
struct dvb_frontend_parameters *p)
Expand All @@ -525,21 +458,12 @@ static int s5h1409_set_frontend (struct dvb_frontend* fe,

s5h1409_enable_modulation(fe, p->u.vsb.modulation);

/* Allow the demod to settle */
msleep(100);

if (fe->ops.tuner_ops.set_params) {
if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 1);
fe->ops.tuner_ops.set_params(fe, p);
if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
}

/* Optimize the demod for QAM */
if (p->u.vsb.modulation != VSB_8) {
s5h1409_set_qam_amhum_mode(fe);
s5h1409_set_qam_interleave_mode(fe);
}

return 0;
}

Expand Down Expand Up @@ -571,8 +495,8 @@ static int s5h1409_init (struct dvb_frontend* fe)
s5h1409_set_gpio(fe, state->config->gpio);
s5h1409_softreset(fe);

/* Note: Leaving the I2C gate closed. */
s5h1409_i2c_gate_ctrl(fe, 0);
/* Note: Leaving the I2C gate open here. */
s5h1409_i2c_gate_ctrl(fe, 1);

return 0;
}
Expand Down
22 changes: 5 additions & 17 deletions trunk/drivers/media/dvb/frontends/stv0297.c
Original file line number Diff line number Diff line change
Expand Up @@ -358,23 +358,11 @@ static int stv0297_read_ber(struct dvb_frontend *fe, u32 * ber)
static int stv0297_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
{
struct stv0297_state *state = fe->demodulator_priv;
u8 STRENGTH[3];
u16 tmp;

stv0297_readregs(state, 0x41, STRENGTH, 3);
tmp = (STRENGTH[1] & 0x03) << 8 | STRENGTH[0];
if (STRENGTH[2] & 0x20) {
if (tmp < 0x200)
tmp = 0;
else
tmp = tmp - 0x200;
} else {
if (tmp > 0x1ff)
tmp = 0;
else
tmp = 0x1ff - tmp;
}
*strength = (tmp << 7) | (tmp >> 2);
u8 STRENGTH[2];

stv0297_readregs(state, 0x41, STRENGTH, 2);
*strength = (STRENGTH[1] & 0x03) << 8 | STRENGTH[0];

return 0;
}

Expand Down
6 changes: 0 additions & 6 deletions trunk/drivers/media/dvb/frontends/tda10021.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,8 +301,6 @@ static int tda10021_read_ber(struct dvb_frontend* fe, u32* ber)
u32 _ber = tda10021_readreg(state, 0x14) |
(tda10021_readreg(state, 0x15) << 8) |
((tda10021_readreg(state, 0x16) & 0x0f) << 16);
_tda10021_writereg(state, 0x10, (tda10021_readreg(state, 0x10) & ~0xc0)
| (tda10021_inittab[0x10] & 0xc0));
*ber = 10 * _ber;

return 0;
Expand All @@ -312,11 +310,7 @@ static int tda10021_read_signal_strength(struct dvb_frontend* fe, u16* strength)
{
struct tda10021_state* state = fe->demodulator_priv;

u8 config = tda10021_readreg(state, 0x02);
u8 gain = tda10021_readreg(state, 0x17);
if (config & 0x02)
/* the agc value is inverted */
gain = ~gain;
*strength = (gain << 8) | gain;

return 0;
Expand Down
2 changes: 1 addition & 1 deletion trunk/drivers/media/dvb/frontends/ves1820.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct ves1820_state {
static int verbose;

static u8 ves1820_inittab[] = {
0x69, 0x6A, 0x93, 0x1A, 0x12, 0x46, 0x26, 0x1A,
0x69, 0x6A, 0x93, 0x12, 0x12, 0x46, 0x26, 0x1A,
0x43, 0x6A, 0xAA, 0xAA, 0x1E, 0x85, 0x43, 0x20,
0xE0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
Expand Down
Loading

0 comments on commit 83c9cf5

Please sign in to comment.