mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
[media] dvb-frontends/stv0367: refactor defaults table handling
Change defaults table writing so tables can be of dynamic length without having to keep track of their lengths by adding and evaluating an end marker (reg 0x0000), also move table writing to a dedicated function to remove code duplication. Additionally mark st_register tables const since they're used read-only. Signed-off-by: Daniel Scheller <d.scheller@gmx.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
df5a38e913
commit
41727cbb20
2 changed files with 20 additions and 14 deletions
|
@ -99,7 +99,7 @@ struct st_register {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* values for STV4100 XTAL=30M int clk=53.125M*/
|
/* values for STV4100 XTAL=30M int clk=53.125M*/
|
||||||
static struct st_register def0367ter[STV0367TER_NBREGS] = {
|
static const struct st_register def0367ter[] = {
|
||||||
{R367TER_ID, 0x60},
|
{R367TER_ID, 0x60},
|
||||||
{R367TER_I2CRPT, 0xa0},
|
{R367TER_I2CRPT, 0xa0},
|
||||||
/* {R367TER_I2CRPT, 0x22},*/
|
/* {R367TER_I2CRPT, 0x22},*/
|
||||||
|
@ -546,6 +546,7 @@ static struct st_register def0367ter[STV0367TER_NBREGS] = {
|
||||||
{R367TER_DEBUG_LT7, 0x00},
|
{R367TER_DEBUG_LT7, 0x00},
|
||||||
{R367TER_DEBUG_LT8, 0x00},
|
{R367TER_DEBUG_LT8, 0x00},
|
||||||
{R367TER_DEBUG_LT9, 0x00},
|
{R367TER_DEBUG_LT9, 0x00},
|
||||||
|
{0x0000, 0x00},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RF_LOOKUP_TABLE_SIZE 31
|
#define RF_LOOKUP_TABLE_SIZE 31
|
||||||
|
@ -573,7 +574,7 @@ static const s32 stv0367cab_RF_LookUp2[RF_LOOKUP_TABLE2_SIZE][RF_LOOKUP_TABLE2_S
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct st_register def0367cab[STV0367CAB_NBREGS] = {
|
static const struct st_register def0367cab[] = {
|
||||||
{R367CAB_ID, 0x60},
|
{R367CAB_ID, 0x60},
|
||||||
{R367CAB_I2CRPT, 0xa0},
|
{R367CAB_I2CRPT, 0xa0},
|
||||||
/*{R367CAB_I2CRPT, 0x22},*/
|
/*{R367CAB_I2CRPT, 0x22},*/
|
||||||
|
@ -762,6 +763,7 @@ static struct st_register def0367cab[STV0367CAB_NBREGS] = {
|
||||||
{R367CAB_T_O_ID_1, 0x00},
|
{R367CAB_T_O_ID_1, 0x00},
|
||||||
{R367CAB_T_O_ID_2, 0x00},
|
{R367CAB_T_O_ID_2, 0x00},
|
||||||
{R367CAB_T_O_ID_3, 0x00},
|
{R367CAB_T_O_ID_3, 0x00},
|
||||||
|
{0x0000, 0x00},
|
||||||
};
|
};
|
||||||
|
|
||||||
static
|
static
|
||||||
|
@ -901,6 +903,20 @@ static u8 stv0367_getbits(u8 reg, u32 label)
|
||||||
return (reg & mask) >> pos;
|
return (reg & mask) >> pos;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void stv0367_write_table(struct stv0367_state *state,
|
||||||
|
const struct st_register *deftab)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
if (!deftab[i].addr)
|
||||||
|
break;
|
||||||
|
stv0367_writereg(state, deftab[i].addr, deftab[i].value);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int stv0367ter_gate_ctrl(struct dvb_frontend *fe, int enable)
|
static int stv0367ter_gate_ctrl(struct dvb_frontend *fe, int enable)
|
||||||
{
|
{
|
||||||
struct stv0367_state *state = fe->demodulator_priv;
|
struct stv0367_state *state = fe->demodulator_priv;
|
||||||
|
@ -1540,15 +1556,12 @@ static int stv0367ter_init(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
struct stv0367_state *state = fe->demodulator_priv;
|
struct stv0367_state *state = fe->demodulator_priv;
|
||||||
struct stv0367ter_state *ter_state = state->ter_state;
|
struct stv0367ter_state *ter_state = state->ter_state;
|
||||||
int i;
|
|
||||||
|
|
||||||
dprintk("%s:\n", __func__);
|
dprintk("%s:\n", __func__);
|
||||||
|
|
||||||
ter_state->pBER = 0;
|
ter_state->pBER = 0;
|
||||||
|
|
||||||
for (i = 0; i < STV0367TER_NBREGS; i++)
|
stv0367_write_table(state, def0367ter);
|
||||||
stv0367_writereg(state, def0367ter[i].addr,
|
|
||||||
def0367ter[i].value);
|
|
||||||
|
|
||||||
switch (state->config->xtal) {
|
switch (state->config->xtal) {
|
||||||
/*set internal freq to 53.125MHz */
|
/*set internal freq to 53.125MHz */
|
||||||
|
@ -2782,13 +2795,10 @@ static int stv0367cab_init(struct dvb_frontend *fe)
|
||||||
{
|
{
|
||||||
struct stv0367_state *state = fe->demodulator_priv;
|
struct stv0367_state *state = fe->demodulator_priv;
|
||||||
struct stv0367cab_state *cab_state = state->cab_state;
|
struct stv0367cab_state *cab_state = state->cab_state;
|
||||||
int i;
|
|
||||||
|
|
||||||
dprintk("%s:\n", __func__);
|
dprintk("%s:\n", __func__);
|
||||||
|
|
||||||
for (i = 0; i < STV0367CAB_NBREGS; i++)
|
stv0367_write_table(state, def0367cab);
|
||||||
stv0367_writereg(state, def0367cab[i].addr,
|
|
||||||
def0367cab[i].value);
|
|
||||||
|
|
||||||
switch (state->config->ts_mode) {
|
switch (state->config->ts_mode) {
|
||||||
case STV0367_DVBCI_CLOCK:
|
case STV0367_DVBCI_CLOCK:
|
||||||
|
|
|
@ -2639,8 +2639,6 @@
|
||||||
#define R367TER_DEBUG_LT9 0xf405
|
#define R367TER_DEBUG_LT9 0xf405
|
||||||
#define F367TER_F_DEBUG_LT9 0xf40500ff
|
#define F367TER_F_DEBUG_LT9 0xf40500ff
|
||||||
|
|
||||||
#define STV0367TER_NBREGS 445
|
|
||||||
|
|
||||||
/* ID */
|
/* ID */
|
||||||
#define R367CAB_ID 0xf000
|
#define R367CAB_ID 0xf000
|
||||||
#define F367CAB_IDENTIFICATIONREGISTER 0xf00000ff
|
#define F367CAB_IDENTIFICATIONREGISTER 0xf00000ff
|
||||||
|
@ -3605,6 +3603,4 @@
|
||||||
#define R367CAB_T_O_ID_3 0xf4d3
|
#define R367CAB_T_O_ID_3 0xf4d3
|
||||||
#define F367CAB_TS_ID_I_H 0xf4d300ff
|
#define F367CAB_TS_ID_I_H 0xf4d300ff
|
||||||
|
|
||||||
#define STV0367CAB_NBREGS 187
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue