}
#endif
+#if 0
static bool enter_mode(enum aml_fe_n_mode_t mode)
{
/*struct aml_fe_dev *dev = fe->dtv_demod;*/
return ret;
}
+#endif
static int leave_mode(enum aml_fe_n_mode_t mode)
{
return 0;
}
#endif
-static int delsys_set(struct dvb_frontend *fe, unsigned int delsys)
-{
- enum fe_delivery_system ldelsys = dtvdd_devp->last_delsys;
- enum fe_delivery_system cdelsys;
-
- int ncaps, support;
- enum aml_fe_n_mode_t mode = AM_FE_UNKNOWN_N;
- enum aml_fe_n_mode_t lmode = dtvdd_devp->n_mode;
-
- cdelsys = delsys; /*diff*/
-
- /*same*/
- if (ldelsys == cdelsys) {
- //PR_DBG("delsys is same, do nothing\n");
- return 0;
- }
-
- /*support ?*/
- ncaps = 0;
- support = 0;
- while (ncaps < MAX_DELSYS && fe->ops.delsys[ncaps]) {
- if (fe->ops.delsys[ncaps] == cdelsys) {
-
- support = 1;
- break;
- }
- ncaps++;
- }
-
- if (!support) {
- #if 0
- if (get_dtvpll_init_flag()) {
- /**/
- PR_INFO("delsys:%d is not support!\n", cdelsys);
- leave_mode(lmode);
- if (fe->ops.tuner_ops.release)
- fe->ops.tuner_ops.release(fe);
- dtvdd_devp->last_delsys = SYS_UNDEFINED;
- dtvdd_devp->n_mode = AM_FE_UNKNOWN_N;
- }
- #endif
- PR_INFO("delsys:%d is not support!\n", cdelsys);
- return 0;
- }
-
- if (ldelsys <= END_SYS_DELIVERY && cdelsys <= END_SYS_DELIVERY) {
- PR_DBG("%s:l=%s,c=%s\n", __func__,
- name_fe_delivery_system[ldelsys],
- name_fe_delivery_system[cdelsys]);
- } else
- PR_ERR("%s:last=%d,cur=%d\n", __func__, ldelsys, cdelsys);
-
- switch (cdelsys) {
-
- case SYS_DVBC_ANNEX_A:
- case SYS_DVBC_ANNEX_C:
- /*dvbc*/
- if (ldelsys == SYS_DVBC_ANNEX_A
- || ldelsys == SYS_DVBC_ANNEX_C) {
- break;
- }
- mode = AM_FE_QAM_N;
- break;
- case SYS_ATSC:
- case SYS_ATSCMH:
- case SYS_DVBC_ANNEX_B:
- /*atsc*/
- if (ldelsys == SYS_ATSC
- || ldelsys == SYS_ATSCMH
- || ldelsys == SYS_DVBC_ANNEX_B) {
- break;
-
- }
- mode = AM_FE_ATSC_N;
- break;
- case SYS_DVBT:
- case SYS_DVBT2:
- /*dvbt, OFDM*/
- if (ldelsys == SYS_DVBT
- || ldelsys == SYS_DVBT2) {
- break;
-
- }
- mode = AM_FE_OFDM_N;
- break;
- case SYS_ISDBT:
- if (ldelsys != SYS_ISDBT)
- mode = AM_FE_ISDBT_N;
- break;
- case SYS_DTMB:
- /*dtmb*/
- mode = AM_FE_DTMB_N;
- break;
- case SYS_DVBS:
- case SYS_DVBS2:
- /*QPSK*/
- if (ldelsys == SYS_DVBS
- || ldelsys == SYS_DVBS2) {
-
- break;
-
- }
- mode = AM_FE_QPSK_N;
- break;
-
- case SYS_DSS:
- case SYS_DVBH:
-
- case SYS_ISDBS:
- case SYS_ISDBC:
- case SYS_CMMB:
- case SYS_DAB:
- case SYS_TURBO:
- case SYS_UNDEFINED:
- return 0;
-
-#ifdef CONFIG_AMLOGIC_DVB_COMPAT
- case SYS_ANALOG:
- if (get_dtvpll_init_flag()) {
- PR_INFO("delsys not support : %d\n", cdelsys);
- leave_mode(lmode);
-
- if (fe->ops.tuner_ops.release)
- fe->ops.tuner_ops.release(fe);
- }
-
- return 0;
-#endif
- }
-
- if (mode != AM_FE_UNKNOWN_N) {
- if (lmode != AM_FE_UNKNOWN_N) {
- leave_mode(lmode);
-
- if (fe->ops.tuner_ops.release)
- fe->ops.tuner_ops.release(fe);
- }
-
- if (!enter_mode(mode)) {
- PR_INFO("enter_mode failed,leave!\n");
- leave_mode(mode);
-
- if (fe->ops.tuner_ops.release)
- fe->ops.tuner_ops.release(fe);
- return 0;
- }
- }
-
- if (!get_dtvpll_init_flag()) {
- PR_INFO("pll is not set!\n");
- leave_mode(mode);
-
- if (fe->ops.tuner_ops.release)
- fe->ops.tuner_ops.release(fe);
- return 0;
- }
-
- dtvdd_devp->last_delsys = cdelsys;
- PR_INFO("info type:%d", fe->ops.info.type);
-
- if (mode == AM_FE_ATSC_N)
- fe->ops.info.type = FE_ATSC;
- else if (mode == AM_FE_OFDM_N)
- fe->ops.info.type = FE_OFDM;
- else if (mode == AM_FE_DTMB_N)
- fe->ops.info.type = FE_DTMB;
- else if (mode == AM_FE_QAM_N)
- fe->ops.info.type = FE_QAM;
- else if (mode == AM_FE_ISDBT_N)
- fe->ops.info.type = FE_ISDBT;
-
- if (fe->ops.tuner_ops.set_config)
- fe->ops.tuner_ops.set_config(fe, NULL);
-
- return 0;
-}
static int is_not_active(struct dvb_frontend *fe)
{
return ret;
}
-static int aml_dtvdm_set_property(struct dvb_frontend *dev,
- struct dtv_property *tvp)
-{
- int r = 0;
- u32 delsys;
-
- switch (tvp->cmd) {
- case DTV_DELIVERY_SYSTEM:
- delsys = tvp->u.data;
- delsys_set(dev, delsys);
- break;
-
- default:
- break;
- }
-
-
- return r;
-
-}
-static int aml_dtvdm_get_property(struct dvb_frontend *dev,
- struct dtv_property *tvp)
-{
- return 0;
-}
static struct dvb_frontend_ops aml_dtvdm_gxtvbb_ops = {
.delsys = { SYS_DVBC_ANNEX_A, SYS_DTMB},
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,
.read_snr = aml_dtvdm_read_snr,
.read_ucblocks = aml_dtvdm_read_ucblocks,
.release = aml_dtvdm_release,
- .set_property = aml_dtvdm_set_property,
- .get_property = aml_dtvdm_get_property,
/*-------------*/
.tune = aml_dtvdm_tune,