V4L/DVB (9435): Add post process interfaces
Signed-off-by: Manu Abraham <manu@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
947881a999
commit
b168e351a5
2 changed files with 77 additions and 0 deletions
|
@ -580,11 +580,35 @@ static void stb0899_set_mclk(struct stb0899_state *state, u32 Mclk)
|
|||
dprintk(verbose, FE_DEBUG, 1, "MasterCLOCK=%d", internal->master_clk);
|
||||
}
|
||||
|
||||
static int stb0899_postproc(struct stb0899_state *state, u8 ctl, int enable)
|
||||
{
|
||||
struct stb0899_config *config = state->config;
|
||||
struct stb0899_postproc *postproc = config->postproc;
|
||||
|
||||
/* post process event */
|
||||
if (postproc) {
|
||||
if (enable) {
|
||||
if (postproc[STB0899_POSTPROC_GPIO_POWER].level == STB0899_GPIOPULLUP)
|
||||
stb0899_write_reg(state, postproc[ctl].gpio, 0x02);
|
||||
else
|
||||
stb0899_write_reg(state, postproc[ctl].gpio, 0x82);
|
||||
} else {
|
||||
if (postproc[STB0899_POSTPROC_GPIO_POWER].level == STB0899_GPIOPULLUP)
|
||||
stb0899_write_reg(state, postproc[ctl].gpio, 0x82);
|
||||
else
|
||||
stb0899_write_reg(state, postproc[ctl].gpio, 0x02);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void stb0899_release(struct dvb_frontend *fe)
|
||||
{
|
||||
struct stb0899_state *state = fe->demodulator_priv;
|
||||
|
||||
dprintk(verbose, FE_DEBUG, 1, "Release Frontend");
|
||||
/* post process event */
|
||||
stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0);
|
||||
kfree(state);
|
||||
}
|
||||
|
||||
|
@ -839,6 +863,9 @@ static int stb0899_sleep(struct dvb_frontend *fe)
|
|||
u8 reg;
|
||||
|
||||
dprintk(verbose, FE_DEBUG, 1, "Going to Sleep .. (Really tired .. :-))");
|
||||
/* post process event */
|
||||
stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -855,6 +882,9 @@ static int stb0899_wakeup(struct dvb_frontend *fe)
|
|||
if ((rc = stb0899_write_reg(state, STB0899_STOPCLK2, 0x00)))
|
||||
return rc;
|
||||
|
||||
/* post process event */
|
||||
stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1050,6 +1080,8 @@ static int stb0899_read_status(struct dvb_frontend *fe, enum fe_status *status)
|
|||
if (STB0899_GETFIELD(VITCURPUN, reg)) {
|
||||
dprintk(state->verbose, FE_DEBUG, 1, "--------> FE_HAS_VITERBI | FE_HAS_SYNC");
|
||||
*status |= FE_HAS_VITERBI | FE_HAS_SYNC;
|
||||
/* post process event */
|
||||
stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1079,6 +1111,8 @@ static int stb0899_read_status(struct dvb_frontend *fe, enum fe_status *status)
|
|||
*status |= FE_HAS_SYNC;
|
||||
dprintk(state->verbose, FE_DEBUG, 1,
|
||||
"Packet Delineator found SYNC ! -----> DVB-S2 FE_HAS_SYNC");
|
||||
/* post process event */
|
||||
stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,6 +50,47 @@ enum stb0899_inversion {
|
|||
IQ_SWAP_AUTO
|
||||
};
|
||||
|
||||
#define STB0899_GPIO00 0xf140
|
||||
#define STB0899_GPIO01 0xf141
|
||||
#define STB0899_GPIO02 0xf142
|
||||
#define STB0899_GPIO03 0xf143
|
||||
#define STB0899_GPIO04 0xf144
|
||||
#define STB0899_GPIO05 0xf145
|
||||
#define STB0899_GPIO06 0xf146
|
||||
#define STB0899_GPIO07 0xf147
|
||||
#define STB0899_GPIO08 0xf148
|
||||
#define STB0899_GPIO09 0xf149
|
||||
#define STB0899_GPIO10 0xf14a
|
||||
#define STB0899_GPIO11 0xf14b
|
||||
#define STB0899_GPIO12 0xf14c
|
||||
#define STB0899_GPIO13 0xf14d
|
||||
#define STB0899_GPIO14 0xf14e
|
||||
#define STB0899_GPIO15 0xf14f
|
||||
#define STB0899_GPIO16 0xf150
|
||||
#define STB0899_GPIO17 0xf151
|
||||
#define STB0899_GPIO18 0xf152
|
||||
#define STB0899_GPIO19 0xf153
|
||||
#define STB0899_GPIO20 0xf154
|
||||
|
||||
#define STB0899_GPIOPULLUP 0x01 /* Output device is connected to Vdd */
|
||||
#define STB0899_GPIOPULLDN 0x00 /* Output device is connected to Vss */
|
||||
|
||||
#define STB0899_POSTPROC_GPIO_POWER 0x00
|
||||
#define STB0899_POSTPROC_GPIO_LOCK 0x01
|
||||
|
||||
/*
|
||||
* Post process output configuration control
|
||||
* 1. POWER ON/OFF (index 0)
|
||||
* 2. FE_HAS_LOCK/LOCK_LOSS (index 1)
|
||||
*
|
||||
* @gpio = one of the above listed GPIO's
|
||||
* @level = output state: pulled up or low
|
||||
*/
|
||||
struct stb0899_postproc {
|
||||
u16 gpio;
|
||||
u8 level;
|
||||
};
|
||||
|
||||
struct stb0899_config {
|
||||
const struct stb0899_s1_reg *init_dev;
|
||||
const struct stb0899_s2_reg *init_s2_demod;
|
||||
|
@ -57,6 +98,8 @@ struct stb0899_config {
|
|||
const struct stb0899_s2_reg *init_s2_fec;
|
||||
const struct stb0899_s1_reg *init_tst;
|
||||
|
||||
const struct stb0899_postproc *postproc;
|
||||
|
||||
enum stb0899_inversion inversion;
|
||||
|
||||
u32 xtal_freq;
|
||||
|
|
Loading…
Reference in a new issue