Hi All,
Updated patch again,
Changes:
- Comment fixes
- Remove Rolloff, since it is present in matype1
- remove IGNORE, should be queried back from the device state struct
ADT, rather than query from the device again.
The relevant driver(s) may optimize the query back sequence.
diff -Naurp multiproto7a.orig/linux/drivers/media/dvb/dvb-core/dvb_frontend.c multiproto7a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
--- multiproto7a.orig/linux/drivers/media/dvb/dvb-core/dvb_frontend.c 2006-04-29 03:22:23.000000000 +0400
+++ multiproto7a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c 2006-06-05 19:57:48.000000000 +0400
@@ -93,7 +93,11 @@ struct dvb_frontend_private {
/* thread/frontend values */
struct dvb_device *dvbdev;
+ /* Legacy datatype, superseded by dvbfe_params */
struct dvb_frontend_parameters parameters;
+ /* dvbfe_params supersedes dvb_frontend_parameters */
+ struct dvbfe_params fe_params;
+ struct dvbfe_info fe_info;
struct dvb_fe_events events;
struct semaphore sem;
struct list_head list_head;
@@ -126,6 +130,58 @@ struct dvb_frontend_private {
static void dvb_frontend_wakeup(struct dvb_frontend *fe);
+struct modcod_table {
+ u32 dvbfe_modcod;
+ u32 dvbfe_modulation;
+ u32 dvbfe_fec;
+};
+
+static struct modcod_table dvbs2_modcod_lookup[] = {
+ { DVBFE_MODCOD_DUMMY_PLFRAME, DVBFE_MOD_NONE, DVBFE_FEC_NONE },
+ { DVBFE_MODCOD_QPSK_1_4, DVBFE_MOD_QPSK, DVBFE_FEC_1_4 },
+ { DVBFE_MODCOD_QPSK_1_3, DVBFE_MOD_QPSK, DVBFE_FEC_1_3 },
+ { DVBFE_MODCOD_QPSK_2_5, DVBFE_MOD_QPSK, DVBFE_FEC_2_5 },
+ { DVBFE_MODCOD_QPSK_1_2, DVBFE_MOD_QPSK, DVBFE_FEC_1_2 },
+ { DVBFE_MODCOD_QPSK_3_5, DVBFE_MOD_QPSK, DVBFE_FEC_3_5 },
+ { DVBFE_MODCOD_QPSK_2_3, DVBFE_MOD_QPSK, DVBFE_FEC_2_3 },
+ { DVBFE_MODCOD_QPSK_3_4, DVBFE_MOD_QPSK, DVBFE_FEC_3_4 },
+ { DVBFE_MODCOD_QPSK_4_5, DVBFE_MOD_QPSK, DVBFE_FEC_4_5 },
+ { DVBFE_MODCOD_QPSK_5_6, DVBFE_MOD_QPSK, DVBFE_FEC_5_6 },
+ { DVBFE_MODCOD_QPSK_8_9, DVBFE_MOD_QPSK, DVBFE_FEC_8_9 },
+ { DVBFE_MODCOD_QPSK_9_10, DVBFE_MOD_QPSK, DVBFE_FEC_9_10 },
+ { DVBFE_MODCOD_8PSK_3_5, DVBFE_MOD_8PSK, DVBFE_FEC_3_5 },
+ { DVBFE_MODCOD_8PSK_2_3, DVBFE_MOD_8PSK, DVBFE_FEC_2_3 },
+ { DVBFE_MODCOD_8PSK_3_4, DVBFE_MOD_8PSK, DVBFE_FEC_3_4 },
+ { DVBFE_MODCOD_8PSK_5_6, DVBFE_MOD_8PSK, DVBFE_FEC_5_6 },
+ { DVBFE_MODCOD_8PSK_8_9, DVBFE_MOD_8PSK, DVBFE_FEC_8_9 },
+ { DVBFE_MODCOD_8PSK_9_10, DVBFE_MOD_8PSK, DVBFE_FEC_9_10 },
+ { DVBFE_MODCOD_16APSK_2_3, DVBFE_MOD_16APSK, DVBFE_FEC_2_3 },
+ { DVBFE_MODCOD_16APSK_3_4, DVBFE_MOD_16APSK, DVBFE_FEC_3_4 },
+ { DVBFE_MODCOD_16APSK_4_5, DVBFE_MOD_16APSK, DVBFE_FEC_4_5 },
+ { DVBFE_MODCOD_16APSK_5_6, DVBFE_MOD_16APSK, DVBFE_FEC_5_6 },
+ { DVBFE_MODCOD_16APSK_8_9, DVBFE_MOD_16APSK, DVBFE_FEC_8_9 },
+ { DVBFE_MODCOD_16APSK_9_10, DVBFE_MOD_16APSK, DVBFE_FEC_9_10 },
+ { DVBFE_MODCOD_32APSK_3_4, DVBFE_MOD_32APSK, DVBFE_FEC_3_4 },
+ { DVBFE_MODCOD_32APSK_4_5, DVBFE_MOD_32APSK, DVBFE_FEC_4_5 },
+ { DVBFE_MODCOD_32APSK_5_6, DVBFE_MOD_32APSK, DVBFE_FEC_5_6 },
+ { DVBFE_MODCOD_32APSK_8_9, DVBFE_MOD_32APSK, DVBFE_FEC_8_9 },
+ { DVBFE_MODCOD_32APSK_9_10, DVBFE_MOD_32APSK, DVBFE_FEC_9_10 },
+ { DVBFE_MODCOD_RESERVED_1, DVBFE_MOD_NONE, DVBFE_FEC_NONE },
+ { DVBFE_MODCOD_BPSK_1_3, DVBFE_MOD_BPSK, DVBFE_FEC_1_3 },
+ { DVBFE_MODCOD_BPSK_1_4, DVBFE_MOD_BPSK, DVBFE_FEC_1_4 },
+ { DVBFE_MODCOD_RESERVED_2, DVBFE_MOD_NONE, DVBFE_FEC_NONE }
+};
+
+void decode_dvbs2_modcod(u32 dvbfe_modcod,
+ enum dvbfe_modulation *modulation,
+ enum dvbfe_fec *fec)
+{
+ BUG_ON(dvbfe_modcod >= ARRAY_SIZE(dvbs2_modcod_lookup));
+ *modulation = dvbs2_modcod_lookup[dvbfe_modcod].dvbfe_modulation;
+ *fec = dvbs2_modcod_lookup[dvbfe_modcod].dvbfe_fec;
+}
+EXPORT_SYMBOL(decode_dvbs2_modcod);
+
static void dvb_frontend_add_event(struct dvb_frontend *fe, fe_status_t status)
{
struct dvb_frontend_private *fepriv = fe->frontend_priv;
@@ -508,7 +564,10 @@ static int dvb_frontend_thread(void *dat
unsigned long timeout;
char name [15];
fe_status_t s;
+ /* Legacy datatype */
struct dvb_frontend_parameters *params;
+ /* Superseding datatype */
+ struct dvbfe_params *fe_params = &fepriv->fe_params;
dprintk("%s\n", __FUNCTION__);
@@ -558,6 +617,20 @@ static int dvb_frontend_thread(void *dat
}
fepriv->reinitialise = 0;
}
+ /* These callbacks do exist for devices that do have their
+ * own tuning algorithms!
+ *
+ * If we don't have search, we don't have track either. But,
+ * being paranoid, we check whether both of them exists.
+ *
+ * In this case the demod/tuner does zigzag internally based
+ * on information from the device itself rather than using a
+ * simple and blind swzigzag.
+ */
+ if (fe->ops->search)
+ fe->ops->search(fe, fe_params);
+ if (fe->ops->track)
+ fe->ops->track(fe, fe_params);
/* do an iteration of the tuning loop */
if (fe->ops->tune) {
diff -Naurp multiproto7a.orig/linux/drivers/media/dvb/dvb-core/dvb_frontend.h multiproto7a/linux/drivers/media/dvb/dvb-core/dvb_frontend.h
--- multiproto7a.orig/linux/drivers/media/dvb/dvb-core/dvb_frontend.h 2006-04-29 03:22:23.000000000 +0400
+++ multiproto7a/linux/drivers/media/dvb/dvb-core/dvb_frontend.h 2006-06-05 19:57:50.000000000 +0400
@@ -61,6 +61,42 @@ struct dvb_tuner_info {
u32 bandwidth_step;
};
+enum dvbfe_modcod {
+ DVBFE_MODCOD_DUMMY_PLFRAME = 0,
+ DVBFE_MODCOD_QPSK_1_4,
+ DVBFE_MODCOD_QPSK_1_3,
+ DVBFE_MODCOD_QPSK_2_5,
+ DVBFE_MODCOD_QPSK_1_2,
+ DVBFE_MODCOD_QPSK_3_5,
+ DVBFE_MODCOD_QPSK_2_3,
+ DVBFE_MODCOD_QPSK_3_4,
+ DVBFE_MODCOD_QPSK_4_5,
+ DVBFE_MODCOD_QPSK_5_6,
+ DVBFE_MODCOD_QPSK_8_9,
+ DVBFE_MODCOD_QPSK_9_10,
+ DVBFE_MODCOD_8PSK_3_5,
+ DVBFE_MODCOD_8PSK_2_3,
+ DVBFE_MODCOD_8PSK_3_4,
+ DVBFE_MODCOD_8PSK_5_6,
+ DVBFE_MODCOD_8PSK_8_9,
+ DVBFE_MODCOD_8PSK_9_10,
+ DVBFE_MODCOD_16APSK_2_3,
+ DVBFE_MODCOD_16APSK_3_4,
+ DVBFE_MODCOD_16APSK_4_5,
+ DVBFE_MODCOD_16APSK_5_6,
+ DVBFE_MODCOD_16APSK_8_9,
+ DVBFE_MODCOD_16APSK_9_10,
+ DVBFE_MODCOD_32APSK_3_4,
+ DVBFE_MODCOD_32APSK_4_5,
+ DVBFE_MODCOD_32APSK_5_6,
+ DVBFE_MODCOD_32APSK_8_9,
+ DVBFE_MODCOD_32APSK_9_10,
+ DVBFE_MODCOD_RESERVED_1,
+ DVBFE_MODCOD_BPSK_1_3,
+ DVBFE_MODCOD_BPSK_1_4,
+ DVBFE_MODCOD_RESERVED_2
+};
+
struct dvb_tuner_ops {
struct dvb_tuner_info info;
@@ -125,6 +161,19 @@ struct dvb_frontend_ops {
int (*dishnetwork_send_legacy_command)(struct dvb_frontend* fe, unsigned long cmd);
int (*i2c_gate_ctrl)(struct dvb_frontend* fe, int enable);
+ /* These callbacks are based on the superseding IOCTL's */
+ int (*set_params)(struct dvb_frontend *fe, struct dvbfe_params *fe_params);
+ int (*get_params)(struct dvb_frontend *fe, struct dvbfe_params *fe_params);
+ int (*get_info)(struct dvb_frontend *fe, struct dvbfe_info *fe_info);
+ int (*get_events)(struct dvb_frontend *fe, struct dvbfe_events *fe_events);
+ int (*get_delsys)(struct dvb_frontend *fe, enum dvbfe_delsys);
+
+ /* These callbacks are for devices that implement their own
+ * tuning algorithms, rather than a simple swzigzag
+ */
+ int (*search)(struct dvb_frontend *fe, struct dvbfe_params *fe_params);
+ int (*track)(struct dvb_frontend *fe, struct dvbfe_params *fe_params);
+
struct dvb_tuner_ops tuner_ops;
};
@@ -158,4 +207,8 @@ extern void dvb_frontend_reinitialise(st
extern void dvb_frontend_sleep_until(struct timeval *waketime, u32 add_usec);
extern s32 timeval_usec_diff(struct timeval lasttime, struct timeval curtime);
+extern void decode_dvbs2_modcod(u32 modcod,
+ enum dvbfe_modulation *modulation,
+ enum dvbfe_fec *fec);
+
#endif
diff -Naurp multiproto7a.orig/linux/include/linux/dvb/frontend.h multiproto7a/linux/include/linux/dvb/frontend.h
--- multiproto7a.orig/linux/include/linux/dvb/frontend.h 2006-04-29 03:22:23.000000000 +0400
+++ multiproto7a/linux/include/linux/dvb/frontend.h 2006-06-05 19:57:32.000000000 +0400
@@ -274,4 +274,421 @@ struct dvb_frontend_event {
#define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
+/*
+ * References:
+ * DVB-S : EN 300 421
+ * DVB-S2: EN 302 307, TR 102 376, EN 301 210
+ * DVB-C : EN 300 429
+ * DVB-T : EN 300 744
+ * DVB-H : EN 300 304
+ * ATSC : A/53A
+ */
+
+/*
+ * Delivery Systems
+ * needs to set/queried for multistandard frontends
+ */
+enum dvbfe_delsys {
+ DVBFE_DELSYS_DVBS = (1 << 0),
+ DVBFE_DELSYS_DSS = (1 << 1),
+ DVBFE_DELSYS_DVBS2 = (1 << 2),
+ DVBFE_DELSYS_DVBC = (1 << 3),
+ DVBFE_DELSYS_DVBT = (1 << 4),
+ DVBFE_DELSYS_DVBH = (1 << 5),
+ DVBFE_DELSYS_ATSC = (1 << 6),
+ DVBFE_DELSYS_DUMMY = (1 << 31)
+};
+#define DVBFE_GET_DELSYS _IOR('o', 82, enum dvbfe_delsys)
+
+/*
+ * Modulation types
+ */
+enum dvbfe_modulation {
+ DVBFE_MOD_NONE = (0 << 0),
+ DVBFE_MOD_BPSK = (1 << 0),
+ DVBFE_MOD_QPSK = (1 << 1),
+ DVBFE_MOD_OQPSK = (1 << 2),
+ DVBFE_MOD_8PSK = (1 << 3),
+ DVBFE_MOD_16APSK = (1 << 4),
+ DVBFE_MOD_32APSK = (1 << 5),
+ DVBFE_MOD_QAM16 = (1 << 6),
+ DVBFE_MOD_QAM32 = (1 << 7),
+ DVBFE_MOD_QAM64 = (1 << 8),
+ DVBFE_MOD_QAM128 = (1 << 9),
+ DVBFE_MOD_QAM256 = (1 << 10),
+ DVBFE_MOD_QAM512 = (1 << 11),
+ DVBFE_MOD_QAM1024 = (1 << 12),
+ DVBFE_MOD_QAMAUTO = (1 << 13),
+ DVBFE_MOD_OFDM = (1 << 14),
+ DVBFE_MOD_COFDM = (1 << 15),
+ DVBFE_MOD_VSB8 = (1 << 16),
+ DVBFE_MOD_VSB16 = (1 << 17),
+ DVBFE_MOD_AUTO = (1 << 31)
+};
+
+/*
+ * Convolution Code Rate (Viterbi Inner Code Rate)
+ * DVB-S2 uses LDPC. Information on LDPC can be found at
+ * http://www.ldpc-codes.com
+ */
+enum dvbfe_fec {
+ DVBFE_FEC_NONE = (0 << 0),
+ DVBFE_FEC_1_4 = (1 << 0),
+ DVBFE_FEC_1_3 = (1 << 1),
+ DVBFE_FEC_2_5 = (1 << 2),
+ DVBFE_FEC_1_2 = (1 << 3),
+ DVBFE_FEC_3_5 = (1 << 4),
+ DVBFE_FEC_2_3 = (1 << 5),
+ DVBFE_FEC_3_4 = (1 << 6),
+ DVBFE_FEC_4_5 = (1 << 7),
+ DVBFE_FEC_5_6 = (1 << 8),
+ DVBFE_FEC_6_7 = (1 << 9),
+ DVBFE_FEC_7_8 = (1 << 10),
+ DVBFE_FEC_8_9 = (1 << 11),
+ DVBFE_FEC_9_10 = (1 << 12),
+ DVBFE_FEC_AUTO = (1 << 31)
+};
+
+/*
+ * Frontend Inversion (I/Q Swap)
+ */
+enum dvbfe_inversion {
+ DVBFE_INVERSION_OFF = (0 << 0),
+ DVBFE_INVERSION_ON = (1 << 1),
+ DVBFE_INVERSION_AUTO = (1 << 2)
+};
+
+/*
+ * DVB-S parameters
+ */
+struct dvbs_params {
+ __u32 symbol_rate;
+
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+};
+
+/*
+ * DSS parameters
+ */
+struct dss_params {
+ __u32 symbol_rate;
+
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+
+ __u8 pad[32];
+};
+
+/*
+ * Rolloff Rate (Nyquist Filter Rolloff)
+ * NOTE: DVB-S2 has rates of 0.20, 0.25, 0.35
+ * Values are x100
+ * Applies to DVB-S2
+ */
+enum dvbfe_rolloff {
+ DVBFE_ROLLOFF_35 = (0 << 0),
+ DVBFE_ROLLOFF_25 = (1 << 0),
+ DVBFE_ROLLOFF_20 = (2 << 0),
+ DVBFE_ROLLOFF_UNKNOWN = (3 << 0)
+};
+
+/*
+ * DVB-S2 parameters
+ */
+struct dvbs2_params {
+ __u32 symbol_rate;
+
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+
+ /* Informational fields only */
+ __u8 matype_1;
+ __u8 matype_2;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB-C parameters
+ */
+struct dvbc_params {
+ __u32 symbol_rate;
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+};
+
+/*
+ * DVB-T Channel bandwidth
+ */
+enum dvbfe_bandwidth {
+ DVBFE_BANDWIDTH_8_MHZ = (1 << 0),
+ DVBFE_BANDWIDTH_7_MHZ = (1 << 1),
+ DVBFE_BANDWIDTH_6_MHZ = (1 << 2),
+ DVBFE_BANDWIDTH_5_MHZ = (1 << 3),
+ DVBFE_BANDWIDTH_AUTO = (1 << 31)
+};
+
+/*
+ * DVB-T/DVB-H transmission mode
+ */
+enum dvbfe_transmission_mode {
+ DVBFE_TRANSMISSION_MODE_2K = (1 << 0),
+ DVBFE_TRANSMISSION_MODE_4K = (1 << 1),
+ DVBFE_TRANSMISSION_MODE_8K = (1 << 2),
+ DVBFE_TRANSMISSION_MODE_AUTO = (1 << 31)
+};
+
+/*
+ * DVB-T/DVB-H Guard interval
+ */
+enum dvbfe_guard_interval {
+ DVBFE_GUARD_INTERVAL_1_32 = (1 << 1),
+ DVBFE_GUARD_INTERVAL_1_16 = (1 << 2),
+ DVBFE_GUARD_INTERVAL_1_8 = (1 << 3),
+ DVBFE_GUARD_INTERVAL_1_4 = (1 << 4),
+ DVBFE_GUARD_INTERVAL_AUTO = (1 << 31)
+};
+
+/*
+ * DVB-T/DVB-H Hierarchial modulation
+ */
+enum dvbfe_hierarchy {
+ DVBFE_HIERARCHY_OFF = (1 << 0),
+ DVBFE_HIERARCHY_ON = (1 << 1),
+ DVBFE_HIERARCHY_AUTO = (1 << 31)
+};
+
+/*
+ * DVB-T/DVB-H Rolloff's
+ */
+enum dvbfe_alpha {
+ DVBFE_ALPHA_1 = (1 << 0),
+ DVBFE_ALPHA_2 = (1 << 1),
+ DVBFE_ALPHA_4 = (1 << 2)
+};
+
+/*
+ * Stream priority for Hierachial coding
+ */
+enum dvbfe_stream_priority {
+ DVBFE_STREAM_PRIORITY_HP = (0 << 0),
+ DVBFE_STREAM_PRIORITY_LP = (1 << 0)
+};
+
+/*
+ * DVB-T parameters
+ */
+struct dvbt_params {
+ enum dvbfe_modulation constellation;
+ enum dvbfe_bandwidth bandwidth;
+ enum dvbfe_fec code_rate_HP;
+ enum dvbfe_fec code_rate_LP;
+ enum dvbfe_transmission_mode transmission_mode;
+ enum dvbfe_guard_interval guard_interval;
+ enum dvbfe_hierarchy hierarchy;
+ enum dvbfe_alpha alpha;
+ enum dvbfe_stream_priority priority;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB-H Interleaver type
+ */
+enum dvbfe_interleaver {
+ DVBFE_INTERLEAVER_NATIVE = (1 << 0),
+ DVBFE_INTERLEAVER_INDEPTH = (1 << 1),
+ DVBFE_INTERLEAVER_AUTO = (1 << 31)
+};
+
+/*
+ * DVB-H MPE-FEC Indicator
+ */
+enum dvbfe_mpefec {
+ DVBFE_MPEFEC_OFF = (1 << 0),
+ DVBFE_MPEFEC_ON = (1 << 1)
+};
+
+/*
+ * DVB-H Timeslicing Indicator
+ */
+enum dvbfe_timeslicing {
+ DVBFE_TIMESLICING_OFF = (1 << 0),
+ DVBFE_TIMESLICING_ON = (1 << 1)
+};
+
+/*
+ * DVB-H parameters
+ */
+struct dvbh_params {
+ enum dvbfe_modulation constellation;
+ enum dvbfe_fec code_rate_HP;
+ enum dvbfe_fec code_rate_LP;
+ enum dvbfe_transmission_mode transmission_mode;
+ enum dvbfe_guard_interval guard_interval;
+ enum dvbfe_hierarchy hierarchy;
+ enum dvbfe_alpha alpha;
+ enum dvbfe_interleaver interleaver;
+ enum dvbfe_mpefec mpefec;
+ enum dvbfe_timeslicing timeslicing;
+ enum dvbfe_stream_priority priority;
+
+ __u32 bandwidth;
+ __u8 pad[32];
+};
+
+/*
+ * ATSC parameters
+ */
+struct atsc_params {
+ enum dvbfe_modulation modulation;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB Frontend Tuning Parameters
+ */
+struct dvbfe_params {
+ __u32 frequency;
+ enum dvbfe_inversion inversion;
+ enum dvbfe_delsys delivery;
+
+ __u8 pad[32];
+
+ union {
+ struct dvbs_params dvbs;
+ struct dss_params dss;
+ struct dvbs2_params dvbs2;
+ struct dvbc_params dvbc;
+ struct dvbt_params dvbt;
+ struct dvbh_params dvbh;
+ struct atsc_params atsc;
+
+ __u8 pad[128];
+ } delsys;
+};
+#define DVBFE_SET_PARAMS _IOW('o', 83, struct dvbfe_params)
+#define DVBFE_GET_PARAMS _IOWR('o', 84, struct dvbfe_params)
+
+/*
+ * DVB-S capability bitfields
+ */
+struct dvbfe_dvbs_info {
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+};
+
+/*
+ * DSS capability bitfields
+ */
+struct dvbfe_dss_info {
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+};
+
+/*
+ * DVB-S2 capability bitfields
+ */
+struct dvbfe_dvbs2_info {
+ enum dvbfe_modulation modulation;
+ enum dvbfe_fec fec;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB-C capability bitfields
+ */
+struct dvbfe_dvbc_info {
+ enum dvbfe_modulation modulation;
+};
+
+/*
+ * DVB-T capability bitfields
+ */
+struct dvbfe_dvbt_info {
+ enum dvbfe_modulation modulation;
+ enum dvbfe_stream_priority stream_priority;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB-H capability bitfields
+ */
+struct dvbfe_dvbh_info {
+ enum dvbfe_modulation modulation;
+ enum dvbfe_stream_priority stream_priority;
+
+ __u8 pad[32];
+};
+
+/*
+ * ATSC capability bitfields
+ */
+struct dvbfe_atsc_info {
+ enum dvbfe_modulation modulation;
+
+ __u8 pad[32];
+};
+
+/*
+ * DVB Frontend related Information
+ */
+struct dvbfe_info {
+ char name[128];
+
+ /* For Multi Standard tuners, set "delivery"
+ * to the relevant delivery system to retrieve the
+ * relevant delivery system related information.
+ */
+ enum dvbfe_delsys delivery;
+
+ union {
+ struct dvbfe_dvbs_info dvbs;
+ struct dvbfe_dss_info dss;
+ struct dvbfe_dvbs2_info dvbs2;
+ struct dvbfe_dvbc_info dvbc;
+ struct dvbfe_dvbt_info dvbt;
+ struct dvbfe_dvbh_info dvbh;
+ struct dvbfe_atsc_info atsc;
+
+ __u8 pad[128];
+ } delsys;
+
+ __u32 frequency_min;
+ __u32 frequency_max;
+ __u32 frequency_step;
+ __u32 symbol_rate_min;
+ __u32 symbol_rate_max;
+ __u32 symbol_rate_tolerance;
+
+ enum dvbfe_inversion inversion;
+
+ __u8 pad[128];
+};
+#define DVBFE_GET_INFO _IOWR('o', 85, struct dvbfe_info)
+
+enum dvbfe_status {
+ DVBFE_HAS_SIGNAL = (1 << 0), /* something above noise floor */
+ DVBFE_HAS_CARRIER = (1 << 1), /* Signal found */
+ DVBFE_HAS_VITERBI = (1 << 2), /* FEC is stable */
+ DVBFE_HAS_SYNC = (1 << 3), /* SYNC found */
+ DVBFE_HAS_LOCK = (1 << 4), /* OK .. */
+ DVBFE_TIMEDOUT = (1 << 5), /* no lock in last ~2 s */
+ DVBFE_STATUS_DUMMY = (1 << 31)
+};
+
+/*
+ * DVB Frontend events
+ */
+struct dvbfe_events {
+ enum dvbfe_status status;
+
+ __u8 pad[32];
+};
+#define DVBFE_GET_EVENTS _IOR('o', 86, struct dvbfe_events)
+
#endif /*_DVBFRONTEND_H_*/
diff -Naurp multiproto7a.orig/linux/include/linux/dvb/version.h multiproto7a/linux/include/linux/dvb/version.h
--- multiproto7a.orig/linux/include/linux/dvb/version.h 2006-04-29 03:22:23.000000000 +0400
+++ multiproto7a/linux/include/linux/dvb/version.h 2006-06-05 20:15:19.000000000 +0400
@@ -24,6 +24,6 @@
#define _DVBVERSION_H_
#define DVB_API_VERSION 3
-#define DVB_API_VERSION_MINOR 1
+#define DVB_API_VERSION_MINOR 2
#endif /*_DVBVERSION_H_*/
_______________________________________________
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb