summaryrefslogtreecommitdiff
path: root/drivers/media/dvb/dvb-core/dvb_frontend.h
diff options
context:
space:
mode:
authorAndrew de Quincey <adq_dvb@lidskialf.net>2006-04-18 17:47:09 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-06-25 01:58:31 -0300
commit7eef5dd6daecf3ee305116c9cf41ae7166270c4c (patch)
tree0abee619372a014ce4c3ec41a0ed01008c756807 /drivers/media/dvb/dvb-core/dvb_frontend.h
parent7c25039dbb45f3e6a34dabe715107d34d298dc40 (diff)
V4L/DVB (3845): DVB core changes for PLL refactoring
Add tuner_ops structure. Add calls into dvb_frontend to support the new tuner architecture. Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/dvb-core/dvb_frontend.h')
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.h112
1 files changed, 112 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h
index 5926a3b745c9..e0148a9e6633 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.h
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.h
@@ -49,6 +49,115 @@ struct dvb_frontend_tune_settings {
struct dvb_frontend;
+struct dvb_tuner_info {
+ char name[128];
+
+ u32 frequency_min;
+ u32 frequency_max;
+ u32 frequency_step;
+
+ u32 bandwidth_min;
+ u32 bandwidth_max;
+ u32 bandwidth_step;
+};
+
+struct dvb_tuner_ops {
+ /**
+ * Description of the tuner.
+ */
+ struct dvb_tuner_info info;
+
+ /**
+ * Cleanup an attached tuner.
+ *
+ * @param fe dvb_frontend structure to clean it up from.
+ * @return 0 on success, <0 on failure.
+ */
+ int (*release)(struct dvb_frontend *fe);
+
+ /**
+ * Initialise a tuner.
+ *
+ * @param fe dvb_frontend structure.
+ * @return 0 on success, <0 on failure.
+ */
+ int (*init)(struct dvb_frontend *fe);
+
+ /**
+ * Set a tuner into low power mode.
+ *
+ * @param fe dvb_frontend structure.
+ * @return 0 on success, <0 on failure.
+ */
+ int (*sleep)(struct dvb_frontend *fe);
+
+ /**
+ * This is for simple PLLs - set all parameters in one go.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param p The parameters to set.
+ * @return 0 on success, <0 on failure.
+ */
+ int (*set_params)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p);
+
+ /**
+ * This is support for demods like the mt352 - fills out the supplied buffer with what to write.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param p The parameters to set.
+ * @param buf The buffer to fill with data. For an i2c tuner, the first byte should be the tuner i2c address in linux format.
+ * @param buf_len Size of buffer in bytes.
+ * @return Number of bytes used, or <0 on failure.
+ */
+ int (*pllbuf)(struct dvb_frontend *fe, struct dvb_frontend_parameters *p, u8 *buf, int buf_len);
+
+ /**
+ * Get the frequency the tuner was actually set to.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param frequency Where to put it.
+ * @return 0 on success, or <0 on failure.
+ */
+ int (*get_frequency)(struct dvb_frontend *fe, u32 *frequency);
+
+ /**
+ * Get the bandwidth the tuner was actually set to.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param bandwidth Where to put it.
+ * @return 0 on success, or <0 on failure.
+ */
+ int (*get_bandwidth)(struct dvb_frontend *fe, u32 *bandwidth);
+
+ /**
+ * Get the tuner's status.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param status Where to put it.
+ * @return 0 on success, or <0 on failure.
+ */
+#define TUNER_STATUS_LOCKED 1
+ int (*get_status)(struct dvb_frontend *fe, u32 *status);
+
+ /**
+ * Set the frequency of the tuner - for complex tuners.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param frequency What to set.
+ * @return 0 on success, or <0 on failure.
+ */
+ int (*set_frequency)(struct dvb_frontend *fe, u32 frequency);
+
+ /**
+ * Set the bandwidth of the tuner - for complex tuners.
+ *
+ * @param fe The dvb_frontend structure.
+ * @param bandwidth What to set.
+ * @return 0 on success, or <0 on failure.
+ */
+ int (*set_bandwidth)(struct dvb_frontend *fe, u32 bandwidth);
+};
+
struct dvb_frontend_ops {
struct dvb_frontend_info info;
@@ -86,6 +195,8 @@ struct dvb_frontend_ops {
int (*enable_high_lnb_voltage)(struct dvb_frontend* fe, long arg);
int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
+
+ struct dvb_tuner_ops tuner_ops;
};
#define MAX_EVENT 8
@@ -103,6 +214,7 @@ struct dvb_frontend {
struct dvb_frontend_ops* ops;
struct dvb_adapter *dvb;
void* demodulator_priv;
+ void* tuner_priv;
void* frontend_priv;
void* misc_priv;
};