]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
V4L/DVB (12997): Add the DTV_ISDB_TS_ID property for ISDB_S
authorHIRANO Takahito <hiranotaka@zng.info>
Fri, 18 Sep 2009 14:17:54 +0000 (11:17 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 19 Sep 2009 03:51:34 +0000 (00:51 -0300)
In ISDB-S, time-devision duplex is used to multiplexing several waves
in the same frequency. Each wave is identified by its own transport
stream ID, or TS ID. We need to provide some way to specify this ID
from user applications to handle ISDB-S frontends.

This code has been tested with the Earthsoft PT1 driver.

[mchehab@infradead.org: Fix merge conflicts with isdbt and rename the new parameter to DTV_ISDBS_TS_ID]
Signed-off-by: HIRANO Takahito <hiranotaka@zng.info>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/dvb-core/dvb_frontend.h
include/linux/dvb/frontend.h

index 3c9482660eac86fef5398dcfe7cb35b68697f802..ddf639ed2fd8de2d59c4ddfc663bcceb46f95ee2 100644 (file)
@@ -1031,6 +1031,8 @@ static struct dtv_cmds_h dtv_cmds[] = {
        _DTV_CMD(DTV_ISDBT_LAYERC_SEGMENT_COUNT, 0, 0),
        _DTV_CMD(DTV_ISDBT_LAYERC_TIME_INTERLEAVING, 0, 0),
 
+       _DTV_CMD(DTV_ISDBS_TS_ID, 1, 0),
+
        /* Get */
        [DTV_DISEQC_SLAVE_REPLY] = {
                .name   = "DTV_DISEQC_SLAVE_REPLY",
@@ -1420,6 +1422,9 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
        case DTV_ISDBT_LAYERC_TIME_INTERLEAVING:
                tvp->u.data = fe->dtv_property_cache.layer[2].interleaving;
                break;
+       case DTV_ISDBS_TS_ID:
+               tvp->u.data = fe->dtv_property_cache.isdbs_ts_id;
+               break;
        default:
                r = -1;
        }
@@ -1571,6 +1576,9 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
        case DTV_ISDBT_LAYERC_TIME_INTERLEAVING:
                fe->dtv_property_cache.layer[2].interleaving = tvp->u.data;
                break;
+       case DTV_ISDBS_TS_ID:
+               fe->dtv_property_cache.isdbs_ts_id = tvp->u.data;
+               break;
        default:
                r = -1;
        }
index 9e46f1772c54e83f28775fd03c1aae3850d4e515..810f07d6324667082444db4eeee1d03fe46dcfc0 100644 (file)
@@ -355,6 +355,9 @@ struct dtv_frontend_properties {
            fe_modulation_t     modulation;
            u8                  interleaving;
        } layer[3];
+
+       /* ISDB-T specifics */
+       u32                     isdbs_ts_id;
 };
 
 struct dvb_frontend {
index 25b01c14727bef64a4f12e498d522bb9af16b396..b6cb5425cde398a0def4d0d7b8e93d1d713569f4 100644 (file)
@@ -302,7 +302,9 @@ struct dvb_frontend_event {
 
 #define DTV_ISDBT_LAYER_ENABLED        41
 
-#define DTV_MAX_COMMAND                                DTV_ISDBT_LAYER_ENABLED
+#define DTV_ISDBS_TS_ID                42
+
+#define DTV_MAX_COMMAND                                DTV_ISDBS_TS_ID
 
 typedef enum fe_pilot {
        PILOT_ON,