case DTV_STAT_TOTAL_BLOCK_COUNT:
tvp->u.st = c->block_count;
break;
- r = 0;
- //printk("dvb-core get sub sys\r\n");
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ case DTV_DELIVERY_SUB_SYSTEM:
+ case DTV_TS_INPUT:
++ printk("dvb-core get sub sys\r\n");
+ break;
+#endif
default:
dev_dbg(fe->dvb->device,
"%s: FE property %d doesn't exist\n",
r = dtv_set_frontend(fe);
break;
case DTV_FREQUENCY:
- c->frequency = tvp->u.data;
+ c->frequency = data;
break;
case DTV_MODULATION:
- c->modulation = tvp->u.data;
+ c->modulation = data;
break;
case DTV_BANDWIDTH_HZ:
- c->bandwidth_hz = tvp->u.data;
+ c->bandwidth_hz = data;
break;
case DTV_INVERSION:
- c->inversion = tvp->u.data;
+ c->inversion = data;
break;
case DTV_SYMBOL_RATE:
- c->symbol_rate = tvp->u.data;
+ c->symbol_rate = data;
break;
case DTV_INNER_FEC:
- c->fec_inner = tvp->u.data;
+ c->fec_inner = data;
break;
case DTV_PILOT:
- c->pilot = tvp->u.data;
+ c->pilot = data;
break;
case DTV_ROLLOFF:
- c->rolloff = tvp->u.data;
+ c->rolloff = data;
break;
case DTV_DELIVERY_SYSTEM:
- r = dvbv5_set_delivery_system(fe, tvp->u.data);
+ r = dvbv5_set_delivery_system(fe, data);
break;
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ case DTV_DELIVERY_SUB_SYSTEM:
+ r = 0;
+ break;
+#endif
case DTV_VOLTAGE:
- c->voltage = tvp->u.data;
- r = dvb_frontend_ioctl_legacy(file, FE_SET_VOLTAGE,
+ c->voltage = data;
+ r = dvb_frontend_handle_ioctl(file, FE_SET_VOLTAGE,
(void *)c->voltage);
break;
case DTV_TONE:
*/
if (fepriv->state != FESTATE_IDLE) {
err = dtv_get_frontend(fe, &getp, NULL);
- if (err < 0)
- goto out;
+ if (err < 0) {
+ kfree(tvp);
+ return err;
+ }
}
for (i = 0; i < tvps->num; i++) {
- err = dtv_property_process_get(fe, &getp, tvp + i, file);
- if (err < 0)
- goto out;
- (tvp + i)->result = err;
+ err = dtv_property_process_get(
+ fe, &getp, (struct dtv_property *)(tvp + i), file);
+ if (err < 0) {
+ kfree(tvp);
+ return err;
+ }
}
- if (convert) {
- for (i = 0; i < tvps->num; i++)
- dtv_property_64to32(tvp_32 + i,
- (struct dtv_property *)(tvp+i));
-
- if (copy_to_user((void __user *)tvps->props, tvp_32,
- tvps->num * sizeof(struct dtv_property_32))) {
- err = -EFAULT;
- goto out;
- }
- } else {
- if (copy_to_user((void __user *)tvps->props, tvp,
- tvps->num * sizeof(struct dtv_property))) {
- err = -EFAULT;
- goto out;
- }
- if (copy_to_user((void __user *)compat_ptr(tvps->props), tvp,
++ if(copy_to_user((void __user *)compat_ptr(tvps->props), tvp,
+ tvps->num * sizeof(struct compat_dtv_property))) {
+ kfree(tvp);
+ return -EFAULT;
}
- } else
- err = -EOPNOTSUPP;
+ kfree(tvp);
+ }
- out:
- kfree(tvp_32);
- kfree(tvp);
return err;
}
return ret;
}
- #ifdef CONFIG_AMLOGIC_DVB_COMPAT
- static long dvb_frontend_compat_ioctl(struct file *filp,
- unsigned int cmd, unsigned long args)
- {
- long ret;
-
- #ifdef CONFIG_COMPAT
- args = (unsigned long)compat_ptr(args);
- #endif
-
- ret = dvb_generic_ioctl(filp, cmd, args);
-
- return ret;
- }
- #endif
+
static const struct file_operations dvb_frontend_fops = {
.owner = THIS_MODULE,
- .unlocked_ioctl = dvb_generic_ioctl,
+ .unlocked_ioctl = dvb_frontend_ioctl,
+ #ifdef CONFIG_COMPAT
+ .compat_ioctl = dvb_frontend_compat_ioctl,
+ #endif
.poll = dvb_frontend_poll,
.open = dvb_frontend_open,
.release = dvb_frontend_release,
#define _DVBFRONTEND_H_
#include <linux/types.h>
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+#include <linux/videodev2.h>
+#endif
+
+enum fe_type {
+ FE_QPSK,
+ FE_QAM,
+ FE_OFDM,
+ FE_ATSC,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ FE_ANALOG,
+ FE_DTMB,
+ FE_ISDBT
+#endif
+};
+ /**
+ * enum fe_caps - Frontend capabilities
+ *
+ * @FE_IS_STUPID: There's something wrong at the
+ * frontend, and it can't report its
+ * capabilities.
+ * @FE_CAN_INVERSION_AUTO: Can auto-detect frequency spectral
+ * band inversion
+ * @FE_CAN_FEC_1_2: Supports FEC 1/2
+ * @FE_CAN_FEC_2_3: Supports FEC 2/3
+ * @FE_CAN_FEC_3_4: Supports FEC 3/4
+ * @FE_CAN_FEC_4_5: Supports FEC 4/5
+ * @FE_CAN_FEC_5_6: Supports FEC 5/6
+ * @FE_CAN_FEC_6_7: Supports FEC 6/7
+ * @FE_CAN_FEC_7_8: Supports FEC 7/8
+ * @FE_CAN_FEC_8_9: Supports FEC 8/9
+ * @FE_CAN_FEC_AUTO: Can auto-detect FEC
+ * @FE_CAN_QPSK: Supports QPSK modulation
+ * @FE_CAN_QAM_16: Supports 16-QAM modulation
+ * @FE_CAN_QAM_32: Supports 32-QAM modulation
+ * @FE_CAN_QAM_64: Supports 64-QAM modulation
+ * @FE_CAN_QAM_128: Supports 128-QAM modulation
+ * @FE_CAN_QAM_256: Supports 256-QAM modulation
+ * @FE_CAN_QAM_AUTO: Can auto-detect QAM modulation
+ * @FE_CAN_TRANSMISSION_MODE_AUTO: Can auto-detect transmission mode
+ * @FE_CAN_BANDWIDTH_AUTO: Can auto-detect bandwidth
+ * @FE_CAN_GUARD_INTERVAL_AUTO: Can auto-detect guard interval
+ * @FE_CAN_HIERARCHY_AUTO: Can auto-detect hierarchy
+ * @FE_CAN_8VSB: Supports 8-VSB modulation
+ * @FE_CAN_16VSB: Supporta 16-VSB modulation
+ * @FE_HAS_EXTENDED_CAPS: Unused
+ * @FE_CAN_MULTISTREAM: Supports multistream filtering
+ * @FE_CAN_TURBO_FEC: Supports "turbo FEC" modulation
+ * @FE_CAN_2G_MODULATION: Supports "2nd generation" modulation,
+ * e. g. DVB-S2, DVB-T2, DVB-C2
+ * @FE_NEEDS_BENDING: Unused
+ * @FE_CAN_RECOVER: Can recover from a cable unplug
+ * automatically
+ * @FE_CAN_MUTE_TS: Can stop spurious TS data output
+ */
enum fe_caps {
FE_IS_STUPID = 0,
- FE_CAN_INVERSION_AUTO = 0x1,
+ FE_CAN_INVERSION_AUTO = 0x1,
FE_CAN_FEC_1_2 = 0x2,
FE_CAN_FEC_2_3 = 0x4,
FE_CAN_FEC_3_4 = 0x8,
FE_CAN_HIERARCHY_AUTO = 0x100000,
FE_CAN_8VSB = 0x200000,
FE_CAN_16VSB = 0x400000,
- /* We need more bitspace for newer APIs, indicate this. */
- FE_HAS_EXTENDED_CAPS = 0x800000,
- FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
- FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
- /* frontend supports "2nd generation modulation" (DVB-S2) */
- FE_CAN_2G_MODULATION = 0x10000000,
- FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
- FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
- FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
+ FE_HAS_EXTENDED_CAPS = 0x800000,
+ FE_CAN_MULTISTREAM = 0x4000000,
+ FE_CAN_TURBO_FEC = 0x8000000,
+ FE_CAN_2G_MODULATION = 0x10000000,
+ FE_NEEDS_BENDING = 0x20000000,
+ FE_CAN_RECOVER = 0x40000000,
+ FE_CAN_MUTE_TS = 0x80000000
};
- #ifdef CONFIG_AMLOGIC_DVB_COMPAT
- #define FE_CAN_3_LAYER FE_CAN_MULTISTREAM
- #endif
+
-/*
- * DEPRECATED: Should be kept just due to backward compatibility.
- */
-enum fe_type {
- FE_QPSK,
- FE_QAM,
- FE_OFDM,
- FE_ATSC
-};
-
+ /**
+ * struct dvb_frontend_info - Frontend properties and capabilities
+ *
+ * @name: Name of the frontend
+ * @type: **DEPRECATED**.
+ * Should not be used on modern programs,
+ * as a frontend may have more than one type.
+ * In order to get the support types of a given
+ * frontend, use :c:type:`DTV_ENUM_DELSYS`
+ * instead.
+ * @frequency_min: Minimal frequency supported by the frontend.
+ * @frequency_max: Minimal frequency supported by the frontend.
+ * @frequency_stepsize: All frequencies are multiple of this value.
+ * @frequency_tolerance: Frequency tolerance.
+ * @symbol_rate_min: Minimal symbol rate, in bauds
+ * (for Cable/Satellite systems).
+ * @symbol_rate_max: Maximal symbol rate, in bauds
+ * (for Cable/Satellite systems).
+ * @symbol_rate_tolerance: Maximal symbol rate tolerance, in ppm
+ * (for Cable/Satellite systems).
+ * @notifier_delay: **DEPRECATED**. Not used by any driver.
+ * @caps: Capabilities supported by the frontend,
+ * as specified in &enum fe_caps.
+ *
+ * .. note:
+ *
+ * #. The frequencies are specified in Hz for Terrestrial and Cable
+ * systems.
+ * #. The frequencies are specified in kHz for Satellite systems.
+ */
struct dvb_frontend_info {
char name[128];
enum fe_type type; /* DEPRECATED. Use DTV_ENUM_DELSYS instead */
enum fe_sec_voltage {
SEC_VOLTAGE_13,
SEC_VOLTAGE_18,
- SEC_VOLTAGE_OFF
+ SEC_VOLTAGE_OFF,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ SEC_VOLTAGE_ON /*for ISDBT antenna control*/
+#endif
};
+ /**
+ * enum fe_sec_tone_mode - Type of tone to be send to the LNBf.
+ * @SEC_TONE_ON: Sends a 22kHz tone burst to the antenna.
+ * @SEC_TONE_OFF: Don't send a 22kHz tone to the antenna (except
+ * if the ``FE_DISEQC_*`` ioctls are called).
+ */
enum fe_sec_tone_mode {
SEC_TONE_ON,
SEC_TONE_OFF
INTERLEAVING_720,
};
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+struct fe_blind_scan_parameters {
+ /* minimum tuner frequency in kHz */
+ __u32 min_frequency;
+ /* maximum tuner frequency in kHz */
+ __u32 max_frequency;
+ /* minimum symbol rate in sym/sec */
+ __u32 min_symbol_rate;
+ /* maximum symbol rate in sym/sec */
+ __u32 max_symbol_rate;
+ /* search range in kHz. freq -/+freqRange will be searched */
+ __u32 frequency_range;
+ /* tuner step frequency in kHz */
+ __u32 frequency_step;
+ /* blindscan event timeout */
+ __s32 timeout;
+};
+#endif
+
+/* S2API Commands */
+ /* DVBv5 property Commands */
+
#define DTV_UNDEFINED 0
#define DTV_TUNE 1
#define DTV_CLEAR 2
#define DTV_STAT_ERROR_BLOCK_COUNT 68
#define DTV_STAT_TOTAL_BLOCK_COUNT 69
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+
+/* Get tne TS input of the frontend */
+#define DTV_TS_INPUT 70
+/* Blind scan */
+#define DTV_START_BLIND_SCAN 71
+#define DTV_CANCEL_BLIND_SCAN 72
+#define DTV_BLIND_SCAN_MIN_FRE 73
+#define DTV_BLIND_SCAN_MAX_FRE 74
+#define DTV_BLIND_SCAN_MIN_SRATE 75
+#define DTV_BLIND_SCAN_MAX_SRATE 76
+#define DTV_BLIND_SCAN_FRE_RANGE 77
+#define DTV_BLIND_SCAN_FRE_STEP 78
+#define DTV_BLIND_SCAN_TIMEOUT 79
+/* Blind scan end*/
+#define DTV_DELIVERY_SUB_SYSTEM 80
+#define DTV_MAX_COMMAND DTV_DELIVERY_SUB_SYSTEM
+
+#else /*!defined(CONFIG_AMLOGIC_DVB_COMPAT)*/
+
#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
+
+
+ /**
+ * enum fe_pilot - Type of pilot tone
+ *
+ * @PILOT_ON: Pilot tones enabled
+ * @PILOT_OFF: Pilot tones disabled
+ * @PILOT_AUTO: Autodetect pilot tones
+ */
enum fe_pilot {
PILOT_ON,
PILOT_OFF,
SYS_DVBT2,
SYS_TURBO,
SYS_DVBC_ANNEX_C,
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+ SYS_ANALOG
+#endif
};
- /* backward compatibility */
+ /* backward compatibility definitions for delivery systems */
#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
- #define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
+ #define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB */
- /* ATSC-MH */
+ /* ATSC-MH specific parameters */
+ /**
+ * enum atscmh_sccc_block_mode - Type of Series Concatenated Convolutional
+ * Code Block Mode.
+ *
+ * @ATSCMH_SCCC_BLK_SEP:
+ * Separate SCCC: the SCCC outer code mode shall be set independently
+ * for each Group Region (A, B, C, D)
+ * @ATSCMH_SCCC_BLK_COMB:
+ * Combined SCCC: all four Regions shall have the same SCCC outer
+ * code mode.
+ * @ATSCMH_SCCC_BLK_RES:
+ * Reserved. Shouldn't be used.
+ */
enum atscmh_sccc_block_mode {
ATSCMH_SCCC_BLK_SEP = 0,
ATSCMH_SCCC_BLK_COMB = 1,
struct dtv_property *props;
};
+struct dtv_properties_32 {
+ __u32 num;
+ __u32 props;
+};
+
+struct dtv_properties_64 {
+ __u32 num;
+ __u64 props;
+};
+ /*
+ * When set, this flag will disable any zigzagging or other "normal" tuning
+ * behavior. Additionally, there will be no automatic monitoring of the lock
+ * status, and hence no frontend events will be generated. If a frontend device
+ * is closed, this flag will be automatically turned off when the device is
+ * reopened read-write.
+ */
+ #define FE_TUNE_MODE_ONESHOT 0x01
+
+ /* Digital TV Frontend API calls */
+
+ #define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
+
+ #define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
+ #define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
+ #define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
+ #define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
+
+ #define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
+ #define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
+ #define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
+
+ #define FE_READ_STATUS _IOR('o', 69, fe_status_t)
+ #define FE_READ_BER _IOR('o', 70, __u32)
+ #define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
+ #define FE_READ_SNR _IOR('o', 72, __u16)
+ #define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
+
+ #define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
+ #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
+
+ #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
+
+ #define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
+ #define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
#if defined(__DVB_CORE__) || !defined (__KERNEL__)
typedef enum fe_rolloff fe_rolloff_t;
typedef enum fe_delivery_system fe_delivery_system_t;
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+enum fe_ofdm_mode {
+ OFDM_DVBT,
+ OFDM_DVBT2,
+};
+#endif
+ /* DVBv3 structs */
struct dvb_qpsk_parameters {
__u32 symbol_rate; /* symbol rate in Symbols per second */
fe_status_t status;
struct dvb_frontend_parameters parameters;
};
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+/* Satellite blind scan event */
+struct dvbsx_blindscanevent {
+ enum fe_status status;
+ union {
+ /* The percentage completion of the*/
+ /*blind scan procedure. A value of*/
+ /*100 indicates that the blind scan*/
+ /*is finished. */
+ __u16 m_uiprogress;
+ /*The start scan frequency in units of kHz.*/
+ /*The minimum value depends on the tuner*/
+ /*specification.*/
+ __u32 m_uistartfreq_khz;
+ /* Blind scan channel info. */
+ struct dvb_frontend_parameters parameters;
+ } u;
+};
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
+#endif
+
+#define FE_SET_PROPERTY _IOW('o', 82, struct dtv_properties)
+#define FE_GET_PROPERTY _IOR('o', 83, struct dtv_properties)
+
+#define FE_SET_PROPERTY_32 _IOW('o', 82, struct dtv_properties_32)
+#define FE_GET_PROPERTY_32 _IOR('o', 83, struct dtv_properties_32)
+
+#define FE_SET_PROPERTY_64 _IOW('o', 82, struct dtv_properties_64)
+#define FE_GET_PROPERTY_64 _IOR('o', 83, struct dtv_properties_64)
+
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+/*for atv*/
+struct tuner_status_s {
+ unsigned int frequency;
+ unsigned int rssi;
+ unsigned char mode;/*dtv:0 or atv:1*/
+ unsigned char tuner_locked;/*notlocked:0,locked:1*/
+ union {
+ void *ressrved;
+ __u64 reserved1;
+ };
+};
+
+
+struct atv_status_s {
+ unsigned char atv_lock;/*notlocked:0,locked 1*/
+ v4l2_std_id std;
+ unsigned int audmode;
+ int snr;
+ int afc;
+ union {
+ void *resrvred;
+ __u64 reserved1;
+ };
+};
+
+struct sound_status_s {
+ unsigned short sound_sys;/*A2DK/A2BG/NICAM BG/NICAM DK/BTSC/EIAJ*/
+ unsigned short sound_mode;/*SETERO/DUAL/MONO/SAP*/
+ union {
+ void *resrvred;
+ __u64 reserved1;
+ };
+};
+
+
+enum tuner_param_cmd_e {
+ TUNER_CMD_AUDIO_MUTE = 0x0000,
+ TUNER_CMD_AUDIO_ON,
+ TUNER_CMD_TUNER_POWER_ON,
+ TUNER_CMD_TUNER_POWER_DOWN,
+ TUNER_CMD_SET_VOLUME,
+ TUNER_CMD_SET_LEAP_SETP_SIZE,
+ TUNER_CMD_GET_MONO_MODE,
+ TUNER_CMD_SET_BEST_LOCK_RANGE,
+ TUNER_CMD_GET_BEST_LOCK_RANGE,
+ TUNER_CMD_SET_CVBS_AMP_OUT,
+ TUNER_CMD_GET_CVBS_AMP_OUT,
+ TUNER_CMD_NULL,
+};
+
+
+/*parameter for set param box*/
+struct tuner_param_s {
+ enum tuner_param_cmd_e cmd;
+ unsigned int parm;
+ unsigned int resvred;
+};
+
+
+enum fe_layer {
+ Layer_A_B_C,
+ Layer_A,
+ Layer_B,
+ Layer_C,
+};
+
+// typedef struct dvb_analog_parameters dvb_analog_parameters_t;
+// typedef struct tuner_status_s tuner_status_t;
+// typedef struct atv_status_s atv_status_t;
+// typedef struct sound_status_s sound_status_t;
+// typedef enum tuner_param_cmd_e tuner_param_cmd_t;
+// typedef struct tuner_param_s tuner_param_t;
+// typedef enum fe_layer fe_layer_t;
+// typedef enum fe_ofdm_mode fe_ofdm_mode_t;
+
+
+/* Satellite blind scan settings */
+struct dvbsx_blindscanpara {
+ __u32 minfrequency;/* minimum tuner frequency in kHz */
+ __u32 maxfrequency;/* maximum tuner frequency in kHz */
+ __u32 minSymbolRate;/* minimum symbol rate in sym/sec */
+ __u32 maxSymbolRate;/* maximum symbol rate in sym/sec */
+ /*search range in kHz. freq -/+freqRange will be searched */
+ __u32 frequencyRange;
+ __u32 frequencyStep;/* tuner step frequency in kHz */
+ __s32 timeout;/* blindscan event timeout*/
+};
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
+/**
+ * When set, this flag will disable any zigzagging or other "normal" tuning
+ * behaviour. Additionally, there will be no automatic monitoring of the lock
+ * status, and hence no frontend events will be generated. If a frontend device
+ * is closed, this flag will be automatically turned off when the device is
+ * reopened read-write.
+ */
+#define FE_TUNE_MODE_ONESHOT 0x01
+
+#define FE_GET_INFO _IOR('o', 61, struct dvb_frontend_info)
+
+#define FE_DISEQC_RESET_OVERLOAD _IO('o', 62)
+#define FE_DISEQC_SEND_MASTER_CMD _IOW('o', 63, struct dvb_diseqc_master_cmd)
+#define FE_DISEQC_RECV_SLAVE_REPLY _IOR('o', 64, struct dvb_diseqc_slave_reply)
+#define FE_DISEQC_SEND_BURST _IO('o', 65) /* fe_sec_mini_cmd_t */
+
+#define FE_SET_TONE _IO('o', 66) /* fe_sec_tone_mode_t */
+#define FE_SET_VOLTAGE _IO('o', 67) /* fe_sec_voltage_t */
+#define FE_ENABLE_HIGH_LNB_VOLTAGE _IO('o', 68) /* int */
+
+#define FE_READ_STATUS _IOR('o', 69, fe_status_t)
+#define FE_READ_BER _IOR('o', 70, __u32)
+#define FE_READ_SIGNAL_STRENGTH _IOR('o', 71, __u16)
+#define FE_READ_SNR _IOR('o', 72, __u16)
+#define FE_READ_UNCORRECTED_BLOCKS _IOR('o', 73, __u32)
+ /* DVBv3 API calls */
+
#define FE_SET_FRONTEND _IOW('o', 76, struct dvb_frontend_parameters)
#define FE_GET_FRONTEND _IOR('o', 77, struct dvb_frontend_parameters)
- #define FE_SET_FRONTEND_TUNE_MODE _IO('o', 81) /* unsigned int */
- #define FE_GET_EVENT _IOR('o', 78, struct dvb_frontend_event)
-
- #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
-#endif
+#ifdef CONFIG_AMLOGIC_DVB_COMPAT
+/*need del this ioctl, used set PROPERTY instead*/
+#define FE_SET_DELAY _IO('o', 100)
+#define FE_READ_AFC _IOR('o', 91, __u32)
+#define FE_FINE_TUNE _IOW('o', 92, __u32)
+#define FE_READ_TUNER_STATUS _IOR('o', 93, struct tuner_status_s)
+#define FE_READ_ANALOG_STATUS _IOR('o', 94, struct atv_status_s)
+#define FE_READ_SD_STATUS _IOR('o', 95, struct sound_status_s)
+/*set & get the tuner parameters only atv*/
+#define FE_SET_PARAM_BOX _IOWR('o', 97, struct tuner_param_s)
+#define FE_SET_AFC _IOW('o', 98, __u32)
+#endif /*CONFIG_AMLOGIC_DVB_COMPAT*/
#endif /*_DVBFRONTEND_H_*/