|
@@ -182,13 +182,13 @@ static enum dvbv3_emulation_type dvbv3_type(u32 delivery_system)
|
|
|
case SYS_DMBTH:
|
|
|
return DVBV3_OFDM;
|
|
|
case SYS_ATSC:
|
|
|
+ case SYS_ATSCMH:
|
|
|
case SYS_DVBC_ANNEX_B:
|
|
|
return DVBV3_ATSC;
|
|
|
case SYS_UNDEFINED:
|
|
|
case SYS_ISDBC:
|
|
|
case SYS_DVBH:
|
|
|
case SYS_DAB:
|
|
|
- case SYS_ATSCMH:
|
|
|
default:
|
|
|
/*
|
|
|
* Doesn't know how to emulate those types and/or
|
|
@@ -1030,6 +1030,28 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
|
|
|
_DTV_CMD(DTV_HIERARCHY, 0, 0),
|
|
|
|
|
|
_DTV_CMD(DTV_ENUM_DELSYS, 0, 0),
|
|
|
+
|
|
|
+ _DTV_CMD(DTV_ATSCMH_PARADE_ID, 1, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_FRAME_ENSEMBLE, 1, 0),
|
|
|
+
|
|
|
+ _DTV_CMD(DTV_ATSCMH_FIC_VER, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_PARADE_ID, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_NOG, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_TNOG, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SGN, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_PRC, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_FRAME_MODE, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_FRAME_ENSEMBLE, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_CODE_MODE_PRI, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_CODE_MODE_SEC, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SCCC_BLOCK_MODE, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_A, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_B, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_C, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_D, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_FIC_ERR, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_CRC_ERR, 0, 0),
|
|
|
+ _DTV_CMD(DTV_ATSCMH_RS_ERR, 0, 0),
|
|
|
};
|
|
|
|
|
|
static void dtv_property_dump(struct dtv_property *tvp)
|
|
@@ -1121,6 +1143,8 @@ static int dtv_property_cache_sync(struct dvb_frontend *fe,
|
|
|
case DVBV3_ATSC:
|
|
|
dprintk("%s() Preparing ATSC req\n", __func__);
|
|
|
c->modulation = p->u.vsb.modulation;
|
|
|
+ if (c->delivery_system == SYS_ATSCMH)
|
|
|
+ break;
|
|
|
if ((c->modulation == VSB_8) || (c->modulation == VSB_16))
|
|
|
c->delivery_system = SYS_ATSC;
|
|
|
else
|
|
@@ -1367,6 +1391,63 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
|
|
|
case DTV_DVBT2_PLP_ID:
|
|
|
tvp->u.data = c->dvbt2_plp_id;
|
|
|
break;
|
|
|
+
|
|
|
+ /* ATSC-MH */
|
|
|
+ case DTV_ATSCMH_FIC_VER:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_fic_ver;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_PARADE_ID:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_parade_id;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_NOG:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_nog;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_TNOG:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_tnog;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SGN:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sgn;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_PRC:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_prc;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_FRAME_MODE:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_rs_frame_mode;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_FRAME_ENSEMBLE:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_rs_frame_ensemble;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_CODE_MODE_PRI:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_rs_code_mode_pri;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_CODE_MODE_SEC:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_rs_code_mode_sec;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SCCC_BLOCK_MODE:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sccc_block_mode;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SCCC_CODE_MODE_A:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_a;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SCCC_CODE_MODE_B:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_b;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SCCC_CODE_MODE_C:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_c;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_SCCC_CODE_MODE_D:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_d;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_FIC_ERR:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_fic_err;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_CRC_ERR:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_crc_err;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_ERR:
|
|
|
+ tvp->u.data = fe->dtv_property_cache.atscmh_rs_err;
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
return -EINVAL;
|
|
|
}
|
|
@@ -1708,6 +1789,15 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
|
|
|
case DTV_DVBT2_PLP_ID:
|
|
|
c->dvbt2_plp_id = tvp->u.data;
|
|
|
break;
|
|
|
+
|
|
|
+ /* ATSC-MH */
|
|
|
+ case DTV_ATSCMH_PARADE_ID:
|
|
|
+ fe->dtv_property_cache.atscmh_parade_id = tvp->u.data;
|
|
|
+ break;
|
|
|
+ case DTV_ATSCMH_RS_FRAME_ENSEMBLE:
|
|
|
+ fe->dtv_property_cache.atscmh_rs_frame_ensemble = tvp->u.data;
|
|
|
+ break;
|
|
|
+
|
|
|
default:
|
|
|
return -EINVAL;
|
|
|
}
|