Skip to content

Commit

Permalink
V4L/DVB (7008): s5h1409: Ensure the silicon is initialized during attach
Browse files Browse the repository at this point in the history
If not it impacts on analog tuner quality.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
  • Loading branch information
Steven Toth authored and Mauro Carvalho Chehab committed Jan 25, 2008
1 parent 7b88801 commit a57ed8a
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions drivers/media/dvb/frontends/s5h1409.c
Original file line number Diff line number Diff line change
Expand Up @@ -750,6 +750,7 @@ struct dvb_frontend* s5h1409_attach(const struct s5h1409_config* config,
struct i2c_adapter* i2c)
{
struct s5h1409_state* state = NULL;
u16 reg;

/* allocate memory for the internal state */
state = kmalloc(sizeof(struct s5h1409_state), GFP_KERNEL);
Expand All @@ -763,16 +764,23 @@ struct dvb_frontend* s5h1409_attach(const struct s5h1409_config* config,
state->if_freq = S5H1409_VSB_IF_FREQ;

/* check if the demod exists */
if (s5h1409_readreg(state, 0x04) != 0x0066)
reg = s5h1409_readreg(state, 0x04);
if ((reg != 0x0066) && (reg != 0x007f))
goto error;

/* create dvb_frontend */
memcpy(&state->frontend.ops, &s5h1409_ops,
sizeof(struct dvb_frontend_ops));
state->frontend.demodulator_priv = state;

if (s5h1409_init(&state->frontend) != 0) {
printk(KERN_ERR "%s: Failed to initialize correctly\n",
__FUNCTION__);
goto error;
}

/* Note: Leaving the I2C gate open here. */
s5h1409_writereg(state, 0xf3, 1);
s5h1409_i2c_gate_ctrl(&state->frontend, 1);

return &state->frontend;

Expand Down

0 comments on commit a57ed8a

Please sign in to comment.