i2c_mangle: always set PLS code and mode, it's independent from MIS
This commit is contained in:
parent
fb0fd9fdbb
commit
c4875893a3
@ -25,7 +25,7 @@ static int i2c_mangle_enable = 1;
|
|||||||
static int i2c_mangle_debug = 0;
|
static int i2c_mangle_debug = 0;
|
||||||
static int stv6120_gain = 8;
|
static int stv6120_gain = 8;
|
||||||
static int stv0900_mis[4] = { -1, -1, -1, -1 };
|
static int stv0900_mis[4] = { -1, -1, -1, -1 };
|
||||||
static int stv0900_pls[4] = { -1, -1, -1, -1 };
|
static int stv0900_pls[4] = { 1, 1, 1, 1 };
|
||||||
|
|
||||||
static void i2c_transfer_axe_dump(struct i2c_msg *msgs, int num)
|
static void i2c_transfer_axe_dump(struct i2c_msg *msgs, int num)
|
||||||
{
|
{
|
||||||
@ -67,14 +67,14 @@ static void mangle(u8 *dst, struct i2c_msg *m, int i, int val, int shift, int ma
|
|||||||
m->buf = dst;
|
m->buf = dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define REG_SET3(b, b1, b2, b3) \
|
#define REG_SET3(b1, b2, b3) \
|
||||||
b[0] = b1, b[1] = b2, b[2] = b3
|
do { buf[num][0] = b1; buf[num][1] = b2; buf[num][2] = b3; num++; } while (0)
|
||||||
|
|
||||||
static void demod_set_pls_and_mis(struct i2c_adapter *adap, struct i2c_msg *src, int p)
|
static void demod_set_pls_and_mis(struct i2c_adapter *adap, struct i2c_msg *src, int p)
|
||||||
{
|
{
|
||||||
struct i2c_msg m[6];
|
struct i2c_msg m[6];
|
||||||
u8 buf[6][3];
|
u8 buf[6][3];
|
||||||
int num, r, mis, idx = p ? 1 : 0;
|
int num = 0, r, mis, idx = p ? 1 : 0;
|
||||||
u32 pls;
|
u32 pls;
|
||||||
u8 iaddr = p ? 0xf3 : 0xf5;
|
u8 iaddr = p ? 0xf3 : 0xf5;
|
||||||
|
|
||||||
@ -87,33 +87,27 @@ static void demod_set_pls_and_mis(struct i2c_adapter *adap, struct i2c_msg *src,
|
|||||||
mis = stv0900_mis[idx];
|
mis = stv0900_mis[idx];
|
||||||
if (mis >= 0 && mis <= 255) {
|
if (mis >= 0 && mis <= 255) {
|
||||||
/* PDELCTRL1 - enable filter */
|
/* PDELCTRL1 - enable filter */
|
||||||
REG_SET3(buf[0], iaddr, 0x50, 0x20);
|
REG_SET3(iaddr, 0x50, 0x20);
|
||||||
/* ISIENTRY */
|
/* ISIENTRY */
|
||||||
REG_SET3(buf[1], iaddr, 0x5e, mis);
|
REG_SET3(iaddr, 0x5e, mis);
|
||||||
/* ISIBITENA */
|
/* ISIBITENA */
|
||||||
REG_SET3(buf[2], iaddr, 0x5f, 0xff);
|
REG_SET3(iaddr, 0x5f, 0xff);
|
||||||
/* set PLS code and mode (upper three bits) */
|
|
||||||
pls = stv0900_pls[idx];
|
|
||||||
REG_SET3(buf[3], iaddr-1, 0xae, pls); /* PLROOT0 */
|
|
||||||
REG_SET3(buf[4], iaddr-1, 0xad, pls >> 8); /* PLROOT1 */
|
|
||||||
REG_SET3(buf[5], iaddr-1, 0xac, (pls >> 16) & 0x0f); /* PLROOT3 */
|
|
||||||
num = 6;
|
|
||||||
if (i2c_mangle_debug & 4)
|
|
||||||
printk("i2c idx=%d: pls=%d mis=%d\n", idx, pls, mis);
|
|
||||||
} else {
|
} else {
|
||||||
/* SWRST */
|
/* SWRST */
|
||||||
REG_SET3(buf[0], iaddr, 0x72, 0xd1);
|
REG_SET3(iaddr, 0x72, 0xd1);
|
||||||
/* PDELCTRL1 - disable filter */
|
/* PDELCTRL1 - disable filter */
|
||||||
REG_SET3(buf[1], iaddr, 0x50, 0x00);
|
REG_SET3(iaddr, 0x50, 0x00);
|
||||||
/* set PLS code to 1 and mode to ROOT */
|
|
||||||
REG_SET3(buf[2], iaddr-1, 0xae, 1); /* PLROOT0 */
|
|
||||||
REG_SET3(buf[3], iaddr-1, 0xad, 0); /* PLROOT1 */
|
|
||||||
REG_SET3(buf[4], iaddr-1, 0xac, 0); /* PLROOT3 */
|
|
||||||
|
|
||||||
num = 5;
|
|
||||||
if (i2c_mangle_debug & 4)
|
|
||||||
printk("i2c idx=%d: disable mis filter\n", idx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set PLS code and mode (upper three bits) */
|
||||||
|
pls = stv0900_pls[idx];
|
||||||
|
REG_SET3(iaddr-1, 0xae, pls); /* PLROOT0 */
|
||||||
|
REG_SET3(iaddr-1, 0xad, pls >> 8); /* PLROOT1 */
|
||||||
|
REG_SET3(iaddr-1, 0xac, (pls >> 16) & 0x0f); /* PLROOT3 */
|
||||||
|
if (i2c_mangle_debug & 4)
|
||||||
|
printk("i2c idx=%d: pls=%d mode=%d mis=%d\n", idx,
|
||||||
|
pls & 0x3ffff, (pls >> 18) & 3, mis);
|
||||||
|
|
||||||
for (r = 0; r < num; r++) {
|
for (r = 0; r < num; r++) {
|
||||||
m[r] = *src;
|
m[r] = *src;
|
||||||
m[r].len = 3;
|
m[r].len = 3;
|
||||||
|
Loading…
Reference in New Issue
Block a user