Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 65693
b: refs/heads/master
c: 3873dd0
h: refs/heads/master
i:
  65691: aaac260
v: v3
  • Loading branch information
Michael Krufky authored and Mauro Carvalho Chehab committed Oct 10, 2007
1 parent 4b4ae28 commit 7dc5837
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 42 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: a45c92756ed60bc89528701ac512e954acd23b9e
refs/heads/master: 3873dd041465799cfdeb642531c0ade4fb6614e5
46 changes: 32 additions & 14 deletions trunk/drivers/media/dvb/frontends/mt2131.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,10 @@ static u8 mt2131_config2[] = {
static int mt2131_readreg(struct mt2131_priv *priv, u8 reg, u8 *val)
{
struct i2c_msg msg[2] = {
{ .addr = priv->cfg->i2c_address, .flags = 0, .buf = &reg, .len = 1 },
{ .addr = priv->cfg->i2c_address, .flags = I2C_M_RD, .buf = val, .len = 1 },
{ .addr = priv->cfg->i2c_address, .flags = 0,
.buf = &reg, .len = 1 },
{ .addr = priv->cfg->i2c_address, .flags = I2C_M_RD,
.buf = val, .len = 1 },
};

if (i2c_transfer(priv->i2c, msg, 2) != 2) {
Expand All @@ -67,7 +69,8 @@ static int mt2131_readreg(struct mt2131_priv *priv, u8 reg, u8 *val)
static int mt2131_writereg(struct mt2131_priv *priv, u8 reg, u8 val)
{
u8 buf[2] = { reg, val };
struct i2c_msg msg = { .addr = priv->cfg->i2c_address, .flags = 0, .buf = buf, .len = 2 };
struct i2c_msg msg = { .addr = priv->cfg->i2c_address, .flags = 0,
.buf = buf, .len = 2 };

if (i2c_transfer(priv->i2c, &msg, 1) != 1) {
printk(KERN_WARNING "mt2131 I2C write failed\n");
Expand All @@ -78,10 +81,12 @@ static int mt2131_writereg(struct mt2131_priv *priv, u8 reg, u8 val)

static int mt2131_writeregs(struct mt2131_priv *priv,u8 *buf, u8 len)
{
struct i2c_msg msg = { .addr = priv->cfg->i2c_address, .flags = 0, .buf = buf, .len = len };
struct i2c_msg msg = { .addr = priv->cfg->i2c_address,
.flags = 0, .buf = buf, .len = len };

if (i2c_transfer(priv->i2c, &msg, 1) != 1) {
printk(KERN_WARNING "mt2131 I2C write failed (len=%i)\n",(int)len);
printk(KERN_WARNING "mt2131 I2C write failed (len=%i)\n",
(int)len);
return -EREMOTEIO;
}
return 0;
Expand All @@ -98,14 +103,15 @@ static int mt2131_set_gpo(struct dvb_frontend *fe, u8 val)
return 0;
}

static int mt2131_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
static int mt2131_set_params(struct dvb_frontend *fe,
struct dvb_frontend_parameters *params)
{
struct mt2131_priv *priv;
int ret=0, i;
u32 freq;
u8 if_band_center;
u32 f_lo1,f_lo2;
u32 div1,num1,div2,num2;
u32 f_lo1, f_lo2;
u32 div1, num1, div2, num2;
u8 b[8];
u8 lockval = 0;

Expand Down Expand Up @@ -231,15 +237,17 @@ static int mt2131_init(struct dvb_frontend *fe)
int ret;
dprintk(1, "%s()\n", __FUNCTION__);

if ((ret = mt2131_writeregs(priv, mt2131_config1, sizeof(mt2131_config1))) < 0)
if ((ret = mt2131_writeregs(priv, mt2131_config1,
sizeof(mt2131_config1))) < 0)
return ret;

mt2131_writereg(priv, 0x0b, 0x09);
mt2131_writereg(priv, 0x15, 0x47);
mt2131_writereg(priv, 0x07, 0xf2);
mt2131_writereg(priv, 0x0b, 0x01);

if ((ret = mt2131_writeregs(priv, mt2131_config2, sizeof(mt2131_config2))) < 0)
if ((ret = mt2131_writeregs(priv, mt2131_config2,
sizeof(mt2131_config2))) < 0)
return ret;

return ret;
Expand Down Expand Up @@ -270,7 +278,9 @@ static const struct dvb_tuner_ops mt2131_tuner_ops = {
.get_status = mt2131_get_status
};

struct dvb_frontend * mt2131_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct mt2131_config *cfg, u16 if1)
struct dvb_frontend * mt2131_attach(struct dvb_frontend *fe,
struct i2c_adapter *i2c,
struct mt2131_config *cfg, u16 if1)
{
struct mt2131_priv *priv = NULL;
u8 id = 0;
Expand All @@ -290,13 +300,16 @@ struct dvb_frontend * mt2131_attach(struct dvb_frontend *fe, struct i2c_adapter
return NULL;
}
if ( (id != 0x3E) && (id != 0x3F) ) {
printk(KERN_ERR "MT2131: Device not found at addr 0x%02x\n", cfg->i2c_address);
printk(KERN_ERR "MT2131: Device not found at addr 0x%02x\n",
cfg->i2c_address);
kfree(priv);
return NULL;
}

printk(KERN_INFO "MT2131: successfully identified at address 0x%02x\n", cfg->i2c_address);
memcpy(&fe->ops.tuner_ops, &mt2131_tuner_ops, sizeof(struct dvb_tuner_ops));
printk(KERN_INFO "MT2131: successfully identified at address 0x%02x\n",
cfg->i2c_address);
memcpy(&fe->ops.tuner_ops, &mt2131_tuner_ops,
sizeof(struct dvb_tuner_ops));

fe->tuner_priv = priv;
return fe;
Expand All @@ -306,3 +319,8 @@ EXPORT_SYMBOL(mt2131_attach);
MODULE_AUTHOR("Steven Toth");
MODULE_DESCRIPTION("Microtune MT2131 silicon tuner driver");
MODULE_LICENSE("GPL");

/*
* Local variables:
* c-basic-offset: 8
*/
9 changes: 7 additions & 2 deletions trunk/drivers/media/dvb/frontends/mt2131.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ static inline struct dvb_frontend* mt2131_attach(struct dvb_frontend *fe,
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_TUNER_MT2131
#endif /* CONFIG_DVB_TUNER_MT2131 */

#endif // __MT2131_H__
#endif /* __MT2131_H__ */

/*
* Local variables:
* c-basic-offset: 8
*/
11 changes: 8 additions & 3 deletions trunk/drivers/media/dvb/frontends/mt2131_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef MT2131_PRIV_H
#define MT2131_PRIV_H
#ifndef __MT2131_PRIV_H__
#define __MT2131_PRIV_H__

/* Regs */
#define MT2131_PWR 0x07
Expand All @@ -41,4 +41,9 @@ struct mt2131_priv {
u32 bandwidth;
};

#endif
#endif /* __MT2131_PRIV_H__ */

/*
* Local variables:
* c-basic-offset: 8
*/
48 changes: 31 additions & 17 deletions trunk/drivers/media/dvb/frontends/s5h1409.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,13 +296,14 @@ static int s5h1409_writereg(struct s5h1409_state* state, u8 reg, u16 data)
int ret;
u8 buf [] = { reg, data >> 8, data & 0xff };

struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 3 };
struct i2c_msg msg = { .addr = state->config->demod_address,
.flags = 0, .buf = buf, .len = 3 };

ret = i2c_transfer(state->i2c, &msg, 1);

if (ret != 1)
printk("%s: writereg error (reg == 0x%02x, val == 0x%04x, ret == %i)\n",
__FUNCTION__, reg, data, ret);
printk("%s: writereg error (reg == 0x%02x, val == 0x%04x, "
"ret == %i)\n", __FUNCTION__, reg, data, ret);

return (ret != 1) ? -1 : 0;
}
Expand All @@ -314,14 +315,15 @@ static u16 s5h1409_readreg(struct s5h1409_state* state, u8 reg)
u8 b1 [] = { 0, 0 };

struct i2c_msg msg [] = {
{ .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 },
{ .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 2 } };
{ .addr = state->config->demod_address, .flags = 0,
.buf = b0, .len = 1 },
{ .addr = state->config->demod_address, .flags = I2C_M_RD,
.buf = b1, .len = 2 } };

ret = i2c_transfer(state->i2c, msg, 2);

if (ret != 2)
printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret)
;
printk("%s: readreg error (ret == %i)\n", __FUNCTION__, ret);
return (b1[0] << 8) | b1[1];
}

Expand All @@ -343,8 +345,7 @@ static int s5h1409_set_if_freq(struct dvb_frontend* fe, int KHz)

dprintk("%s(%d KHz)\n", __FUNCTION__, KHz);

if( (KHz == 44000) || (KHz == 5380) )
{
if( (KHz == 44000) || (KHz == 5380) ) {
s5h1409_writereg(state, 0x87, 0x01be);
s5h1409_writereg(state, 0x88, 0x0436);
s5h1409_writereg(state, 0x89, 0x054d);
Expand All @@ -368,7 +369,8 @@ static int s5h1409_set_spectralinversion(struct dvb_frontend* fe, int inverted)
return s5h1409_writereg(state, 0x1b, 0x0110); /* Normal */
}

static int s5h1409_enable_modulation(struct dvb_frontend* fe, fe_modulation_t m)
static int s5h1409_enable_modulation(struct dvb_frontend* fe,
fe_modulation_t m)
{
struct s5h1409_state* state = fe->demodulator_priv;

Expand Down Expand Up @@ -443,7 +445,8 @@ static int s5h1409_register_reset(struct dvb_frontend* fe)
}

/* Talk to the demod, set the FEC, GUARD, QAM settings etc */
static int s5h1409_set_frontend (struct dvb_frontend* fe, struct dvb_frontend_parameters *p)
static int s5h1409_set_frontend (struct dvb_frontend* fe,
struct dvb_frontend_parameters *p)
{
struct s5h1409_state* state = fe->demodulator_priv;

Expand Down Expand Up @@ -521,11 +524,13 @@ static int s5h1409_read_status(struct dvb_frontend* fe, fe_status_t* status)
case S5H1409_TUNERLOCKING:
/* Get the tuner status */
if (fe->ops.tuner_ops.get_status) {
if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 1);
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 1);

fe->ops.tuner_ops.get_status(fe, &tuner_status);

if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
if (fe->ops.i2c_gate_ctrl)
fe->ops.i2c_gate_ctrl(fe, 0);
}
if (tuner_status)
*status |= FE_HAS_CARRIER | FE_HAS_SIGNAL;
Expand Down Expand Up @@ -605,7 +610,8 @@ static int s5h1409_read_snr(struct dvb_frontend* fe, u16* snr)
return -EINVAL;
}

static int s5h1409_read_signal_strength(struct dvb_frontend* fe, u16* signal_strength)
static int s5h1409_read_signal_strength(struct dvb_frontend* fe,
u16* signal_strength)
{
return s5h1409_read_snr(fe, signal_strength);
}
Expand All @@ -624,7 +630,8 @@ static int s5h1409_read_ber(struct dvb_frontend* fe, u32* ber)
return s5h1409_read_ucblocks(fe, ber);
}

static int s5h1409_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_parameters *p)
static int s5h1409_get_frontend(struct dvb_frontend* fe,
struct dvb_frontend_parameters *p)
{
struct s5h1409_state* state = fe->demodulator_priv;

Expand All @@ -634,7 +641,8 @@ static int s5h1409_get_frontend(struct dvb_frontend* fe, struct dvb_frontend_par
return 0;
}

static int s5h1409_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend_tune_settings *tune)
static int s5h1409_get_tune_settings(struct dvb_frontend* fe,
struct dvb_frontend_tune_settings *tune)
{
tune->min_delay_ms = 1000;
return 0;
Expand Down Expand Up @@ -668,7 +676,8 @@ struct dvb_frontend* s5h1409_attach(const struct s5h1409_config* config,
goto error;

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

/* Note: Leaving the I2C gate open here. */
Expand Down Expand Up @@ -713,3 +722,8 @@ MODULE_AUTHOR("Steven Toth");
MODULE_LICENSE("GPL");

EXPORT_SYMBOL(s5h1409_attach);

/*
* Local variables:
* c-basic-offset: 8
*/
15 changes: 10 additions & 5 deletions trunk/drivers/media/dvb/frontends/s5h1409.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
*/

#ifndef S5H1409_H
#define S5H1409_H
#ifndef __S5H1409_H__
#define __S5H1409_H__

#include <linux/dvb/frontend.h>

Expand Down Expand Up @@ -58,11 +58,16 @@ extern struct dvb_frontend* s5h1409_attach(const struct s5h1409_config* config,
struct i2c_adapter* i2c);
#else
static inline struct dvb_frontend* s5h1409_attach(const struct s5h1409_config* config,
struct i2c_adapter* i2c)
struct i2c_adapter* i2c)
{
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
return NULL;
}
#endif // CONFIG_DVB_S5H1409
#endif /* CONFIG_DVB_S5H1409 */

#endif // S5H1409_H
#endif /* __S5H1409_H__ */

/*
* Local variables:
* c-basic-offset: 8
*/

0 comments on commit 7dc5837

Please sign in to comment.