Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 320067
b: refs/heads/master
c: 704a28e
h: refs/heads/master
i:
  320065: a7d0317
  320063: 0c9ad7c
v: v3
  • Loading branch information
Mauro Carvalho Chehab committed Jun 29, 2012
1 parent fcdd8b3 commit 913cffb
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 20bfe7ae089076b0af72a6d67f0298621ae90a9d
refs/heads/master: 704a28e88ab6c9cfe393ae626b612cab8b46028e
58 changes: 57 additions & 1 deletion trunk/drivers/media/dvb/frontends/drxk_hard.c
Original file line number Diff line number Diff line change
Expand Up @@ -2851,7 +2851,7 @@ static int ConfigureI2CBridge(struct drxk_state *state, bool bEnableBridge)
dprintk(1, "\n");

if (state->m_DrxkState == DRXK_UNINITIALIZED)
goto error;
return 0;
if (state->m_DrxkState == DRXK_POWERED_DOWN)
goto error;

Expand Down Expand Up @@ -6197,6 +6197,7 @@ static int init_drxk(struct drxk_state *state)
}
error:
if (status < 0) {
state->m_DrxkState = DRXK_NO_DEV;
drxk_i2c_unlock(state);
printk(KERN_ERR "drxk: Error %d on %s\n", status, __func__);
}
Expand All @@ -6209,6 +6210,7 @@ static void load_firmware_cb(const struct firmware *fw,
{
struct drxk_state *state = context;

dprintk(1, ": %s\n", fw ? "firmware loaded" : "firmware not loaded");
if (!fw) {
printk(KERN_ERR
"drxk: Could not load firmware file %s.\n",
Expand Down Expand Up @@ -6250,6 +6252,12 @@ static int drxk_sleep(struct dvb_frontend *fe)
struct drxk_state *state = fe->demodulator_priv;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return 0;

ShutDown(state);
return 0;
}
Expand All @@ -6259,6 +6267,10 @@ static int drxk_gate_ctrl(struct dvb_frontend *fe, int enable)
struct drxk_state *state = fe->demodulator_priv;

dprintk(1, "%s\n", enable ? "enable" : "disable");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;

return ConfigureI2CBridge(state, enable ? true : false);
}

Expand All @@ -6271,6 +6283,12 @@ static int drxk_set_parameters(struct dvb_frontend *fe)

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;

if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

if (!fe->ops.tuner_ops.get_if_frequency) {
printk(KERN_ERR
"drxk: Error: get_if_frequency() not defined at tuner. Can't work without it!\n");
Expand Down Expand Up @@ -6324,6 +6342,12 @@ static int drxk_read_status(struct dvb_frontend *fe, fe_status_t *status)
u32 stat;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

*status = 0;
GetLockStatus(state, &stat, 0);
if (stat == MPEG_LOCK)
Expand All @@ -6337,8 +6361,15 @@ static int drxk_read_status(struct dvb_frontend *fe, fe_status_t *status)

static int drxk_read_ber(struct dvb_frontend *fe, u32 *ber)
{
struct drxk_state *state = fe->demodulator_priv;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

*ber = 0;
return 0;
}
Expand All @@ -6350,6 +6381,12 @@ static int drxk_read_signal_strength(struct dvb_frontend *fe,
u32 val = 0;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

ReadIFAgc(state, &val);
*strength = val & 0xffff;
return 0;
Expand All @@ -6361,6 +6398,12 @@ static int drxk_read_snr(struct dvb_frontend *fe, u16 *snr)
s32 snr2;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

GetSignalToNoise(state, &snr2);
*snr = snr2 & 0xffff;
return 0;
Expand All @@ -6372,6 +6415,12 @@ static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
u16 err;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

DVBTQAMGetAccPktErr(state, &err);
*ucblocks = (u32) err;
return 0;
Expand All @@ -6380,9 +6429,16 @@ static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
static int drxk_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings
*sets)
{
struct drxk_state *state = fe->demodulator_priv;
struct dtv_frontend_properties *p = &fe->dtv_property_cache;

dprintk(1, "\n");

if (state->m_DrxkState == DRXK_NO_DEV)
return -ENODEV;
if (state->m_DrxkState == DRXK_UNINITIALIZED)
return -EAGAIN;

switch (p->delivery_system) {
case SYS_DVBC_ANNEX_A:
case SYS_DVBC_ANNEX_C:
Expand Down
10 changes: 9 additions & 1 deletion trunk/drivers/media/dvb/frontends/drxk_hard.h
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,15 @@ enum DRXPowerMode {


enum AGC_CTRL_MODE { DRXK_AGC_CTRL_AUTO = 0, DRXK_AGC_CTRL_USER, DRXK_AGC_CTRL_OFF };
enum EDrxkState { DRXK_UNINITIALIZED = 0, DRXK_STOPPED, DRXK_DTV_STARTED, DRXK_ATV_STARTED, DRXK_POWERED_DOWN };
enum EDrxkState {
DRXK_UNINITIALIZED = 0,
DRXK_STOPPED,
DRXK_DTV_STARTED,
DRXK_ATV_STARTED,
DRXK_POWERED_DOWN,
DRXK_NO_DEV /* If drxk init failed */
};

enum EDrxkCoefArrayIndex {
DRXK_COEF_IDX_MN = 0,
DRXK_COEF_IDX_FM ,
Expand Down

0 comments on commit 913cffb

Please sign in to comment.