|
@@ -13,6 +13,135 @@
|
|
|
static unsigned int verbose;
|
|
|
module_param(verbose, int, 0644);
|
|
|
|
|
|
+
|
|
|
+/*****************/
|
|
|
+/* From drivers/media/common/tuners/mt2063_cfg.h */
|
|
|
+
|
|
|
+static unsigned int mt2063_setTune(struct dvb_frontend *fe, UData_t f_in,
|
|
|
+ UData_t bw_in,
|
|
|
+ enum MTTune_atv_standard tv_type)
|
|
|
+{
|
|
|
+ //return (int)MT_Tune_atv(h, f_in, bw_in, tv_type);
|
|
|
+
|
|
|
+ struct dvb_frontend_ops *frontend_ops = NULL;
|
|
|
+ struct dvb_tuner_ops *tuner_ops = NULL;
|
|
|
+ struct tuner_state t_state;
|
|
|
+ struct mt2063_state *mt2063State = fe->tuner_priv;
|
|
|
+ int err = 0;
|
|
|
+
|
|
|
+ t_state.frequency = f_in;
|
|
|
+ t_state.bandwidth = bw_in;
|
|
|
+ mt2063State->tv_type = tv_type;
|
|
|
+ if (&fe->ops)
|
|
|
+ frontend_ops = &fe->ops;
|
|
|
+ if (&frontend_ops->tuner_ops)
|
|
|
+ tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ if (tuner_ops->set_state) {
|
|
|
+ if ((err =
|
|
|
+ tuner_ops->set_state(fe, DVBFE_TUNER_FREQUENCY,
|
|
|
+ &t_state)) < 0) {
|
|
|
+ printk("%s: Invalid parameter\n", __func__);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+static unsigned int mt2063_lockStatus(struct dvb_frontend *fe)
|
|
|
+{
|
|
|
+ struct dvb_frontend_ops *frontend_ops = &fe->ops;
|
|
|
+ struct dvb_tuner_ops *tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ struct tuner_state t_state;
|
|
|
+ int err = 0;
|
|
|
+
|
|
|
+ if (&fe->ops)
|
|
|
+ frontend_ops = &fe->ops;
|
|
|
+ if (&frontend_ops->tuner_ops)
|
|
|
+ tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ if (tuner_ops->get_state) {
|
|
|
+ if ((err =
|
|
|
+ tuner_ops->get_state(fe, DVBFE_TUNER_REFCLOCK,
|
|
|
+ &t_state)) < 0) {
|
|
|
+ printk("%s: Invalid parameter\n", __func__);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+static unsigned int tuner_MT2063_Open(struct dvb_frontend *fe)
|
|
|
+{
|
|
|
+ struct dvb_frontend_ops *frontend_ops = &fe->ops;
|
|
|
+ struct dvb_tuner_ops *tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ struct tuner_state t_state;
|
|
|
+ int err = 0;
|
|
|
+
|
|
|
+ if (&fe->ops)
|
|
|
+ frontend_ops = &fe->ops;
|
|
|
+ if (&frontend_ops->tuner_ops)
|
|
|
+ tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ if (tuner_ops->set_state) {
|
|
|
+ if ((err =
|
|
|
+ tuner_ops->set_state(fe, DVBFE_TUNER_OPEN,
|
|
|
+ &t_state)) < 0) {
|
|
|
+ printk("%s: Invalid parameter\n", __func__);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+static unsigned int tuner_MT2063_SoftwareShutdown(struct dvb_frontend *fe)
|
|
|
+{
|
|
|
+ struct dvb_frontend_ops *frontend_ops = &fe->ops;
|
|
|
+ struct dvb_tuner_ops *tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ struct tuner_state t_state;
|
|
|
+ int err = 0;
|
|
|
+
|
|
|
+ if (&fe->ops)
|
|
|
+ frontend_ops = &fe->ops;
|
|
|
+ if (&frontend_ops->tuner_ops)
|
|
|
+ tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ if (tuner_ops->set_state) {
|
|
|
+ if ((err =
|
|
|
+ tuner_ops->set_state(fe, DVBFE_TUNER_SOFTWARE_SHUTDOWN,
|
|
|
+ &t_state)) < 0) {
|
|
|
+ printk("%s: Invalid parameter\n", __func__);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+static unsigned int tuner_MT2063_ClearPowerMaskBits(struct dvb_frontend *fe)
|
|
|
+{
|
|
|
+ struct dvb_frontend_ops *frontend_ops = &fe->ops;
|
|
|
+ struct dvb_tuner_ops *tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ struct tuner_state t_state;
|
|
|
+ int err = 0;
|
|
|
+
|
|
|
+ if (&fe->ops)
|
|
|
+ frontend_ops = &fe->ops;
|
|
|
+ if (&frontend_ops->tuner_ops)
|
|
|
+ tuner_ops = &frontend_ops->tuner_ops;
|
|
|
+ if (tuner_ops->set_state) {
|
|
|
+ if ((err =
|
|
|
+ tuner_ops->set_state(fe, DVBFE_TUNER_CLEAR_POWER_MASKBITS,
|
|
|
+ &t_state)) < 0) {
|
|
|
+ printk("%s: Invalid parameter\n", __func__);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+/*****************/
|
|
|
+
|
|
|
+
|
|
|
//i2c operation
|
|
|
static int mt2063_writeregs(struct mt2063_state *state, u8 reg1,
|
|
|
u8 * data, int len)
|