diff options
| author | Michael Krufky <mkrufky@linuxtv.org> | 2012-01-29 13:44:58 -0500 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-20 08:41:50 -0400 |
| commit | ca689488ee6f850000b8d12f0f41e810bff28a7c (patch) | |
| tree | 5097cee48780ca4cb30e973e9c4de8c1450349e1 | |
| parent | 4ad34da0300d7196be25ef79ef3f054756cdc739 (diff) | |
[media] linux-dvb v5 API support for ATSC-MH
Add the following properties for controlling an ATSC-MH frontend:
DTV_ATSCMH_FIC_VER
DTV_ATSCMH_PARADE_ID
DTV_ATSCMH_NOG
DTV_ATSCMH_TNOG
DTV_ATSCMH_SGN
DTV_ATSCMH_PRC
DTV_ATSCMH_RS_FRAME_MODE
DTV_ATSCMH_RS_FRAME_ENSEMBLE
DTV_ATSCMH_RS_CODE_MODE_PRI
DTV_ATSCMH_RS_CODE_MODE_SEC
DTV_ATSCMH_SCCC_BLOCK_MODE
DTV_ATSCMH_SCCC_CODE_MODE_A
DTV_ATSCMH_SCCC_CODE_MODE_B
DTV_ATSCMH_SCCC_CODE_MODE_C
DTV_ATSCMH_SCCC_CODE_MODE_D
DTV_ATSCMH_FIC_ERR
DTV_ATSCMH_CRC_ERR
DTV_ATSCMH_RS_ERR
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.c | 92 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.h | 22 | ||||
| -rw-r--r-- | include/linux/dvb/frontend.h | 54 |
3 files changed, 166 insertions, 2 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index cb888d835a89..cd23f303162a 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb/dvb-core/dvb_frontend.c | |||
| @@ -182,13 +182,13 @@ static enum dvbv3_emulation_type dvbv3_type(u32 delivery_system) | |||
| 182 | case SYS_DMBTH: | 182 | case SYS_DMBTH: |
| 183 | return DVBV3_OFDM; | 183 | return DVBV3_OFDM; |
| 184 | case SYS_ATSC: | 184 | case SYS_ATSC: |
| 185 | case SYS_ATSCMH: | ||
| 185 | case SYS_DVBC_ANNEX_B: | 186 | case SYS_DVBC_ANNEX_B: |
| 186 | return DVBV3_ATSC; | 187 | return DVBV3_ATSC; |
| 187 | case SYS_UNDEFINED: | 188 | case SYS_UNDEFINED: |
| 188 | case SYS_ISDBC: | 189 | case SYS_ISDBC: |
| 189 | case SYS_DVBH: | 190 | case SYS_DVBH: |
| 190 | case SYS_DAB: | 191 | case SYS_DAB: |
| 191 | case SYS_ATSCMH: | ||
| 192 | default: | 192 | default: |
| 193 | /* | 193 | /* |
| 194 | * Doesn't know how to emulate those types and/or | 194 | * 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] = { | |||
| 1030 | _DTV_CMD(DTV_HIERARCHY, 0, 0), | 1030 | _DTV_CMD(DTV_HIERARCHY, 0, 0), |
| 1031 | 1031 | ||
| 1032 | _DTV_CMD(DTV_ENUM_DELSYS, 0, 0), | 1032 | _DTV_CMD(DTV_ENUM_DELSYS, 0, 0), |
| 1033 | |||
| 1034 | _DTV_CMD(DTV_ATSCMH_PARADE_ID, 1, 0), | ||
| 1035 | _DTV_CMD(DTV_ATSCMH_RS_FRAME_ENSEMBLE, 1, 0), | ||
| 1036 | |||
| 1037 | _DTV_CMD(DTV_ATSCMH_FIC_VER, 0, 0), | ||
| 1038 | _DTV_CMD(DTV_ATSCMH_PARADE_ID, 0, 0), | ||
| 1039 | _DTV_CMD(DTV_ATSCMH_NOG, 0, 0), | ||
| 1040 | _DTV_CMD(DTV_ATSCMH_TNOG, 0, 0), | ||
| 1041 | _DTV_CMD(DTV_ATSCMH_SGN, 0, 0), | ||
| 1042 | _DTV_CMD(DTV_ATSCMH_PRC, 0, 0), | ||
| 1043 | _DTV_CMD(DTV_ATSCMH_RS_FRAME_MODE, 0, 0), | ||
| 1044 | _DTV_CMD(DTV_ATSCMH_RS_FRAME_ENSEMBLE, 0, 0), | ||
| 1045 | _DTV_CMD(DTV_ATSCMH_RS_CODE_MODE_PRI, 0, 0), | ||
| 1046 | _DTV_CMD(DTV_ATSCMH_RS_CODE_MODE_SEC, 0, 0), | ||
| 1047 | _DTV_CMD(DTV_ATSCMH_SCCC_BLOCK_MODE, 0, 0), | ||
| 1048 | _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_A, 0, 0), | ||
| 1049 | _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_B, 0, 0), | ||
| 1050 | _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_C, 0, 0), | ||
| 1051 | _DTV_CMD(DTV_ATSCMH_SCCC_CODE_MODE_D, 0, 0), | ||
| 1052 | _DTV_CMD(DTV_ATSCMH_FIC_ERR, 0, 0), | ||
| 1053 | _DTV_CMD(DTV_ATSCMH_CRC_ERR, 0, 0), | ||
| 1054 | _DTV_CMD(DTV_ATSCMH_RS_ERR, 0, 0), | ||
| 1033 | }; | 1055 | }; |
| 1034 | 1056 | ||
| 1035 | static void dtv_property_dump(struct dtv_property *tvp) | 1057 | static void dtv_property_dump(struct dtv_property *tvp) |
| @@ -1121,6 +1143,8 @@ static int dtv_property_cache_sync(struct dvb_frontend *fe, | |||
| 1121 | case DVBV3_ATSC: | 1143 | case DVBV3_ATSC: |
| 1122 | dprintk("%s() Preparing ATSC req\n", __func__); | 1144 | dprintk("%s() Preparing ATSC req\n", __func__); |
| 1123 | c->modulation = p->u.vsb.modulation; | 1145 | c->modulation = p->u.vsb.modulation; |
| 1146 | if (c->delivery_system == SYS_ATSCMH) | ||
| 1147 | break; | ||
| 1124 | if ((c->modulation == VSB_8) || (c->modulation == VSB_16)) | 1148 | if ((c->modulation == VSB_8) || (c->modulation == VSB_16)) |
| 1125 | c->delivery_system = SYS_ATSC; | 1149 | c->delivery_system = SYS_ATSC; |
| 1126 | else | 1150 | else |
| @@ -1367,6 +1391,63 @@ static int dtv_property_process_get(struct dvb_frontend *fe, | |||
| 1367 | case DTV_DVBT2_PLP_ID: | 1391 | case DTV_DVBT2_PLP_ID: |
| 1368 | tvp->u.data = c->dvbt2_plp_id; | 1392 | tvp->u.data = c->dvbt2_plp_id; |
| 1369 | break; | 1393 | break; |
| 1394 | |||
| 1395 | /* ATSC-MH */ | ||
| 1396 | case DTV_ATSCMH_FIC_VER: | ||
| 1397 | tvp->u.data = fe->dtv_property_cache.atscmh_fic_ver; | ||
| 1398 | break; | ||
| 1399 | case DTV_ATSCMH_PARADE_ID: | ||
| 1400 | tvp->u.data = fe->dtv_property_cache.atscmh_parade_id; | ||
| 1401 | break; | ||
| 1402 | case DTV_ATSCMH_NOG: | ||
| 1403 | tvp->u.data = fe->dtv_property_cache.atscmh_nog; | ||
| 1404 | break; | ||
| 1405 | case DTV_ATSCMH_TNOG: | ||
| 1406 | tvp->u.data = fe->dtv_property_cache.atscmh_tnog; | ||
| 1407 | break; | ||
| 1408 | case DTV_ATSCMH_SGN: | ||
| 1409 | tvp->u.data = fe->dtv_property_cache.atscmh_sgn; | ||
| 1410 | break; | ||
| 1411 | case DTV_ATSCMH_PRC: | ||
| 1412 | tvp->u.data = fe->dtv_property_cache.atscmh_prc; | ||
| 1413 | break; | ||
| 1414 | case DTV_ATSCMH_RS_FRAME_MODE: | ||
| 1415 | tvp->u.data = fe->dtv_property_cache.atscmh_rs_frame_mode; | ||
| 1416 | break; | ||
| 1417 | case DTV_ATSCMH_RS_FRAME_ENSEMBLE: | ||
| 1418 | tvp->u.data = fe->dtv_property_cache.atscmh_rs_frame_ensemble; | ||
| 1419 | break; | ||
| 1420 | case DTV_ATSCMH_RS_CODE_MODE_PRI: | ||
| 1421 | tvp->u.data = fe->dtv_property_cache.atscmh_rs_code_mode_pri; | ||
| 1422 | break; | ||
| 1423 | case DTV_ATSCMH_RS_CODE_MODE_SEC: | ||
| 1424 | tvp->u.data = fe->dtv_property_cache.atscmh_rs_code_mode_sec; | ||
| 1425 | break; | ||
| 1426 | case DTV_ATSCMH_SCCC_BLOCK_MODE: | ||
| 1427 | tvp->u.data = fe->dtv_property_cache.atscmh_sccc_block_mode; | ||
| 1428 | break; | ||
| 1429 | case DTV_ATSCMH_SCCC_CODE_MODE_A: | ||
| 1430 | tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_a; | ||
| 1431 | break; | ||
| 1432 | case DTV_ATSCMH_SCCC_CODE_MODE_B: | ||
| 1433 | tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_b; | ||
| 1434 | break; | ||
| 1435 | case DTV_ATSCMH_SCCC_CODE_MODE_C: | ||
| 1436 | tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_c; | ||
| 1437 | break; | ||
| 1438 | case DTV_ATSCMH_SCCC_CODE_MODE_D: | ||
| 1439 | tvp->u.data = fe->dtv_property_cache.atscmh_sccc_code_mode_d; | ||
| 1440 | break; | ||
| 1441 | case DTV_ATSCMH_FIC_ERR: | ||
| 1442 | tvp->u.data = fe->dtv_property_cache.atscmh_fic_err; | ||
| 1443 | break; | ||
| 1444 | case DTV_ATSCMH_CRC_ERR: | ||
| 1445 | tvp->u.data = fe->dtv_property_cache.atscmh_crc_err; | ||
| 1446 | break; | ||
| 1447 | case DTV_ATSCMH_RS_ERR: | ||
| 1448 | tvp->u.data = fe->dtv_property_cache.atscmh_rs_err; | ||
| 1449 | break; | ||
| 1450 | |||
| 1370 | default: | 1451 | default: |
| 1371 | return -EINVAL; | 1452 | return -EINVAL; |
| 1372 | } | 1453 | } |
| @@ -1708,6 +1789,15 @@ static int dtv_property_process_set(struct dvb_frontend *fe, | |||
| 1708 | case DTV_DVBT2_PLP_ID: | 1789 | case DTV_DVBT2_PLP_ID: |
| 1709 | c->dvbt2_plp_id = tvp->u.data; | 1790 | c->dvbt2_plp_id = tvp->u.data; |
| 1710 | break; | 1791 | break; |
| 1792 | |||
| 1793 | /* ATSC-MH */ | ||
| 1794 | case DTV_ATSCMH_PARADE_ID: | ||
| 1795 | fe->dtv_property_cache.atscmh_parade_id = tvp->u.data; | ||
| 1796 | break; | ||
| 1797 | case DTV_ATSCMH_RS_FRAME_ENSEMBLE: | ||
| 1798 | fe->dtv_property_cache.atscmh_rs_frame_ensemble = tvp->u.data; | ||
| 1799 | break; | ||
| 1800 | |||
| 1711 | default: | 1801 | default: |
| 1712 | return -EINVAL; | 1802 | return -EINVAL; |
| 1713 | } | 1803 | } |
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.h b/drivers/media/dvb/dvb-core/dvb_frontend.h index d63a8215fe03..80f5c27ddc9f 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.h +++ b/drivers/media/dvb/dvb-core/dvb_frontend.h | |||
| @@ -372,6 +372,28 @@ struct dtv_frontend_properties { | |||
| 372 | 372 | ||
| 373 | /* DVB-T2 specifics */ | 373 | /* DVB-T2 specifics */ |
| 374 | u32 dvbt2_plp_id; | 374 | u32 dvbt2_plp_id; |
| 375 | |||
| 376 | /* ATSC-MH specifics */ | ||
| 377 | u8 atscmh_fic_ver; | ||
| 378 | u8 atscmh_parade_id; | ||
| 379 | u8 atscmh_nog; | ||
| 380 | u8 atscmh_tnog; | ||
| 381 | u8 atscmh_sgn; | ||
| 382 | u8 atscmh_prc; | ||
| 383 | |||
| 384 | u8 atscmh_rs_frame_mode; | ||
| 385 | u8 atscmh_rs_frame_ensemble; | ||
| 386 | u8 atscmh_rs_code_mode_pri; | ||
| 387 | u8 atscmh_rs_code_mode_sec; | ||
| 388 | u8 atscmh_sccc_block_mode; | ||
| 389 | u8 atscmh_sccc_code_mode_a; | ||
| 390 | u8 atscmh_sccc_code_mode_b; | ||
| 391 | u8 atscmh_sccc_code_mode_c; | ||
| 392 | u8 atscmh_sccc_code_mode_d; | ||
| 393 | |||
