Skip to content

Commit

Permalink
i2c_mangle: allow to set PLS mode, too
Browse files Browse the repository at this point in the history
  • Loading branch information
perexg committed Oct 12, 2018
1 parent 6c7c2fb commit 47de724
Showing 1 changed file with 19 additions and 13 deletions.
32 changes: 19 additions & 13 deletions tools/i2c_mangle.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,19 +92,25 @@ static void demod_set_pls_and_mis(struct i2c_adapter *adap, struct i2c_msg *src,
REG_SET3(buf[1], iaddr, 0x5e, mis);
/* ISIBITENA */
REG_SET3(buf[2], iaddr, 0x5f, 0xff);
/* set GOLD PLS code */
/* set PLS code and mode (upper three bits) */
pls = stv0900_pls[idx];
iaddr--;
REG_SET3(buf[3], iaddr, 0xae, pls); /* PLROOT0 */
REG_SET3(buf[4], iaddr, 0xad, pls >> 8); /* PLROOT1 */
REG_SET3(buf[5], iaddr, 0xac, 0x04 | ((pls >> 16) & 3)); /* PLROOT3 */
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 {
/* SWRST */
REG_SET3(buf[0], iaddr, 0x72, 0xd1);
/* PDELCTRL1 - disable filter */
REG_SET3(buf[0], iaddr, 0x50, 0x00);
num = 1;
REG_SET3(buf[1], 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);
}
Expand Down Expand Up @@ -135,22 +141,22 @@ static void i2c_transfer_axe_mangle(struct i2c_adapter *adap, struct i2c_msg *ms
if (r == 0x01 || r == 0x0b)
mangle(mbuf[ret], m, i, stv6120_gain, 0, 0x0f);
} else if (m->addr == STV0900_1 || m->addr == STV0900_2) {
/* inject pls/mis settings before CARCFG register update */
/* inject pls/mis settings before TSCFGH path merger reset */
if (m->flags == 0 && m->len == 3 &&
(m->buf[0] == 0xf2 || m->buf[0] == 0xf4) &&
m->buf[1] == 0x38 && m->buf[2] == 0x46)
demod_set_pls_and_mis(adap, m, m->buf[0] == 0xf2);
(m->buf[0] == 0xf3 || m->buf[0] == 0xf5) &&
m->buf[1] == 0x72 && m->buf[2] == 0xd1)
demod_set_pls_and_mis(adap, m, m->buf[0] == 0xf3);
}
}
}

static int i2c_transfer_axe(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
{
if (adap == i2c_adapter0) {
if (i2c_mangle_debug & 1)
i2c_transfer_axe_dump(msgs, num);
if (i2c_mangle_enable)
i2c_transfer_axe_mangle(adap, msgs, num);
if (i2c_mangle_debug & 1)
i2c_transfer_axe_dump(msgs, num);
}
return i2c_transfer2(adap, msgs, num);
}
Expand Down

0 comments on commit 47de724

Please sign in to comment.