From fd21477aa5a3f5a518e99c71a7b19c8ea6b8363d Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Fri, 10 Sep 2010 10:33:42 -0300 Subject: [PATCH] --- yaml --- r: 219175 b: refs/heads/master c: 27f84acf0be090a4948596696e534b65f0bff980 h: refs/heads/master i: 219173: 95ef3fe3785f98aa9288334bb7e8b4edffb70049 219171: 0abb58342b7b3f2375ab803a21c396ef85805433 219167: 27855e7609620a811900e7649e01992ef4eb951a v: v3 --- [refs] | 2 +- trunk/drivers/media/dvb/frontends/cx22702.c | 31 +++++++++++---------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index 166d2e387000..66cece750303 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d6c1ef6faa45b6a07a439719084756c3d136fa90 +refs/heads/master: 27f84acf0be090a4948596696e534b65f0bff980 diff --git a/trunk/drivers/media/dvb/frontends/cx22702.c b/trunk/drivers/media/dvb/frontends/cx22702.c index c3681d19b43e..a5dcf876f81a 100644 --- a/trunk/drivers/media/dvb/frontends/cx22702.c +++ b/trunk/drivers/media/dvb/frontends/cx22702.c @@ -128,19 +128,20 @@ static int cx22702_set_inversion(struct cx22702_state *state, int inversion) { u8 val; + val = cx22702_readreg(state, 0x0C); switch (inversion) { case INVERSION_AUTO: return -EOPNOTSUPP; case INVERSION_ON: - val = cx22702_readreg(state, 0x0C); - return cx22702_writereg(state, 0x0C, val | 0x01); + val |= 0x01; + break; case INVERSION_OFF: - val = cx22702_readreg(state, 0x0C); - return cx22702_writereg(state, 0x0C, val & 0xfe); + val &= 0xfe; + break; default: return -EINVAL; } - + return cx22702_writereg(state, 0x0C, val); } /* Retrieve the demod settings */ @@ -247,13 +248,15 @@ static int cx22702_get_tps(struct cx22702_state *state, static int cx22702_i2c_gate_ctrl(struct dvb_frontend *fe, int enable) { struct cx22702_state *state = fe->demodulator_priv; + u8 val; + dprintk("%s(%d)\n", __func__, enable); + val = cx22702_readreg(state, 0x0D); if (enable) - return cx22702_writereg(state, 0x0D, - cx22702_readreg(state, 0x0D) & 0xfe); + val &= 0xfe; else - return cx22702_writereg(state, 0x0D, - cx22702_readreg(state, 0x0D) | 1); + val |= 0x01; + return cx22702_writereg(state, 0x0D, val); } /* Talk to the demod, set the FEC, GUARD, QAM settings etc */ @@ -273,23 +276,21 @@ static int cx22702_set_tps(struct dvb_frontend *fe, cx22702_set_inversion(state, p->inversion); /* set bandwidth */ + val = cx22702_readreg(state, 0x0C) & 0xcf; switch (p->u.ofdm.bandwidth) { case BANDWIDTH_6_MHZ: - cx22702_writereg(state, 0x0C, - (cx22702_readreg(state, 0x0C) & 0xcf) | 0x20); + val |= 0x20; break; case BANDWIDTH_7_MHZ: - cx22702_writereg(state, 0x0C, - (cx22702_readreg(state, 0x0C) & 0xcf) | 0x10); + val |= 0x10; break; case BANDWIDTH_8_MHZ: - cx22702_writereg(state, 0x0C, - cx22702_readreg(state, 0x0C) & 0xcf); break; default: dprintk("%s: invalid bandwidth\n", __func__); return -EINVAL; } + cx22702_writereg(state, 0x0C, val); p->u.ofdm.code_rate_LP = FEC_AUTO; /* temp hack as manual not working */