V4L/DVB (9007): S2API: Changed bandwidth to be expressed in HZ
Also added some compat code for the older API. Added more ISDB message/command suggestions, current not connected in dvb-core. Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
4dd88bec36
Коммит
75b7f9437b
|
@ -773,9 +773,9 @@ struct dtv_cmds_h dtv_cmds[] = {
|
||||||
.cmd = DTV_FREQUENCY,
|
.cmd = DTV_FREQUENCY,
|
||||||
.set = 1,
|
.set = 1,
|
||||||
},
|
},
|
||||||
[DTV_BANDWIDTH] = {
|
[DTV_BANDWIDTH_HZ] = {
|
||||||
.name = "DTV_BANDWIDTH",
|
.name = "DTV_BANDWIDTH_HZ",
|
||||||
.cmd = DTV_BANDWIDTH,
|
.cmd = DTV_BANDWIDTH_HZ,
|
||||||
.set = 1,
|
.set = 1,
|
||||||
},
|
},
|
||||||
[DTV_MODULATION] = {
|
[DTV_MODULATION] = {
|
||||||
|
@ -954,7 +954,15 @@ void dtv_property_cache_sync(struct dvb_frontend *fe, struct dvb_frontend_parame
|
||||||
c->delivery_system = SYS_DVBC_ANNEX_AC;
|
c->delivery_system = SYS_DVBC_ANNEX_AC;
|
||||||
break;
|
break;
|
||||||
case FE_OFDM:
|
case FE_OFDM:
|
||||||
c->bandwidth = p->u.ofdm.bandwidth;
|
if (p->u.ofdm.bandwidth == BANDWIDTH_6_MHZ)
|
||||||
|
c->bandwidth_hz = 6000000;
|
||||||
|
else if (p->u.ofdm.bandwidth == BANDWIDTH_7_MHZ)
|
||||||
|
c->bandwidth_hz = 7000000;
|
||||||
|
else if (p->u.ofdm.bandwidth == BANDWIDTH_8_MHZ)
|
||||||
|
c->bandwidth_hz = 8000000;
|
||||||
|
else
|
||||||
|
/* Including BANDWIDTH_AUTO */
|
||||||
|
c->bandwidth_hz = 0;
|
||||||
c->code_rate_HP = p->u.ofdm.code_rate_HP;
|
c->code_rate_HP = p->u.ofdm.code_rate_HP;
|
||||||
c->code_rate_LP = p->u.ofdm.code_rate_LP;
|
c->code_rate_LP = p->u.ofdm.code_rate_LP;
|
||||||
c->modulation = p->u.ofdm.constellation;
|
c->modulation = p->u.ofdm.constellation;
|
||||||
|
@ -1003,7 +1011,14 @@ void dtv_property_legacy_params_sync(struct dvb_frontend *fe)
|
||||||
break;
|
break;
|
||||||
case FE_OFDM:
|
case FE_OFDM:
|
||||||
printk("%s() Preparing OFDM req\n", __FUNCTION__);
|
printk("%s() Preparing OFDM req\n", __FUNCTION__);
|
||||||
p->u.ofdm.bandwidth = c->bandwidth;
|
if (c->bandwidth_hz == 6000000)
|
||||||
|
p->u.ofdm.bandwidth = BANDWIDTH_6_MHZ;
|
||||||
|
else if (c->bandwidth_hz == 7000000)
|
||||||
|
p->u.ofdm.bandwidth = BANDWIDTH_7_MHZ;
|
||||||
|
else if (c->bandwidth_hz == 8000000)
|
||||||
|
p->u.ofdm.bandwidth = BANDWIDTH_8_MHZ;
|
||||||
|
else
|
||||||
|
p->u.ofdm.bandwidth = BANDWIDTH_AUTO;
|
||||||
p->u.ofdm.code_rate_HP = c->code_rate_HP;
|
p->u.ofdm.code_rate_HP = c->code_rate_HP;
|
||||||
p->u.ofdm.code_rate_LP = c->code_rate_LP;
|
p->u.ofdm.code_rate_LP = c->code_rate_LP;
|
||||||
p->u.ofdm.constellation = c->modulation;
|
p->u.ofdm.constellation = c->modulation;
|
||||||
|
@ -1118,8 +1133,8 @@ int dtv_property_process_get(struct dvb_frontend *fe, struct dtv_property *tvp,
|
||||||
case DTV_MODULATION:
|
case DTV_MODULATION:
|
||||||
tvp->u.data = fe->dtv_property_cache.modulation;
|
tvp->u.data = fe->dtv_property_cache.modulation;
|
||||||
break;
|
break;
|
||||||
case DTV_BANDWIDTH:
|
case DTV_BANDWIDTH_HZ:
|
||||||
tvp->u.data = fe->dtv_property_cache.bandwidth;
|
tvp->u.data = fe->dtv_property_cache.bandwidth_hz;
|
||||||
break;
|
break;
|
||||||
case DTV_INVERSION:
|
case DTV_INVERSION:
|
||||||
tvp->u.data = fe->dtv_property_cache.inversion;
|
tvp->u.data = fe->dtv_property_cache.inversion;
|
||||||
|
@ -1230,8 +1245,8 @@ int dtv_property_process_set(struct dvb_frontend *fe, struct dtv_property *tvp,
|
||||||
case DTV_MODULATION:
|
case DTV_MODULATION:
|
||||||
fe->dtv_property_cache.modulation = tvp->u.data;
|
fe->dtv_property_cache.modulation = tvp->u.data;
|
||||||
break;
|
break;
|
||||||
case DTV_BANDWIDTH:
|
case DTV_BANDWIDTH_HZ:
|
||||||
fe->dtv_property_cache.bandwidth = tvp->u.data;
|
fe->dtv_property_cache.bandwidth_hz = tvp->u.data;
|
||||||
break;
|
break;
|
||||||
case DTV_INVERSION:
|
case DTV_INVERSION:
|
||||||
fe->dtv_property_cache.inversion = tvp->u.data;
|
fe->dtv_property_cache.inversion = tvp->u.data;
|
||||||
|
|
|
@ -198,7 +198,7 @@ struct dtv_frontend_properties {
|
||||||
fe_spectral_inversion_t inversion;
|
fe_spectral_inversion_t inversion;
|
||||||
fe_code_rate_t fec_inner;
|
fe_code_rate_t fec_inner;
|
||||||
fe_transmit_mode_t transmission_mode;
|
fe_transmit_mode_t transmission_mode;
|
||||||
fe_bandwidth_t bandwidth;
|
u32 bandwidth_hz; /* 0 = AUTO */
|
||||||
fe_guard_interval_t guard_interval;
|
fe_guard_interval_t guard_interval;
|
||||||
fe_hierarchy_t hierarchy;
|
fe_hierarchy_t hierarchy;
|
||||||
u32 symbol_rate;
|
u32 symbol_rate;
|
||||||
|
|
|
@ -257,7 +257,12 @@ typedef enum dtv_cmd_types {
|
||||||
|
|
||||||
DTV_FREQUENCY,
|
DTV_FREQUENCY,
|
||||||
DTV_MODULATION,
|
DTV_MODULATION,
|
||||||
DTV_BANDWIDTH,
|
|
||||||
|
/* XXX PB: I would like to have field which describes the
|
||||||
|
* bandwidth of a channel in Hz or kHz - maybe we can remove the
|
||||||
|
* DTV_BANDWIDTH now and put a compat layer */
|
||||||
|
DTV_BANDWIDTH_HZ,
|
||||||
|
|
||||||
DTV_INVERSION,
|
DTV_INVERSION,
|
||||||
DTV_DISEQC_MASTER,
|
DTV_DISEQC_MASTER,
|
||||||
DTV_SYMBOL_RATE,
|
DTV_SYMBOL_RATE,
|
||||||
|
@ -276,18 +281,34 @@ typedef enum dtv_cmd_types {
|
||||||
/* New commands are always appended */
|
/* New commands are always appended */
|
||||||
DTV_DELIVERY_SYSTEM,
|
DTV_DELIVERY_SYSTEM,
|
||||||
|
|
||||||
/* ISDB-T */
|
/* ISDB */
|
||||||
|
/* maybe a dup of DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID ??? */
|
||||||
DTV_ISDB_SEGMENT_IDX,
|
DTV_ISDB_SEGMENT_IDX,
|
||||||
DTV_ISDB_SEGMENT_WIDTH,
|
DTV_ISDB_SEGMENT_WIDTH, /* 1, 3 or 13 ??? */
|
||||||
|
|
||||||
|
/* the central segment can be received independently or 1/3 seg in SB-mode */
|
||||||
|
DTV_ISDB_PARTIAL_RECEPTION,
|
||||||
|
/* sound broadcasting is used 0 = 13segment, 1 = 1 or 3 see DTV_ISDB_PARTIAL_RECEPTION */
|
||||||
|
DTV_ISDB_SOUND_BROADCASTING,
|
||||||
|
|
||||||
|
/* only used in SB */
|
||||||
|
/* determines the initial PRBS of the segment (to match with 13seg channel) */
|
||||||
|
DTV_ISDB_SOUND_BROADCASTING_SUBCHANNEL_ID,
|
||||||
|
|
||||||
DTV_ISDB_LAYERA_FEC,
|
DTV_ISDB_LAYERA_FEC,
|
||||||
DTV_ISDB_LAYERA_MODULATION,
|
DTV_ISDB_LAYERA_MODULATION,
|
||||||
DTV_ISDB_LAYERA_SEGMENT_WIDTH,
|
DTV_ISDB_LAYERA_SEGMENT_WIDTH,
|
||||||
|
DTV_ISDB_LAYERA_TIME_INTERLEAVER,
|
||||||
|
|
||||||
DTV_ISDB_LAYERB_FEC,
|
DTV_ISDB_LAYERB_FEC,
|
||||||
DTV_ISDB_LAYERB_MODULATION,
|
DTV_ISDB_LAYERB_MODULATION,
|
||||||
DTV_ISDB_LAYERB_SEGMENT_WIDTH,
|
DTV_ISDB_LAYERB_SEGMENT_WIDTH,
|
||||||
|
DTV_ISDB_LAYERB_TIME_INTERLEAVING,
|
||||||
|
|
||||||
DTV_ISDB_LAYERC_FEC,
|
DTV_ISDB_LAYERC_FEC,
|
||||||
DTV_ISDB_LAYERC_MODULATION,
|
DTV_ISDB_LAYERC_MODULATION,
|
||||||
DTV_ISDB_LAYERC_SEGMENT_WIDTH,
|
DTV_ISDB_LAYERC_SEGMENT_WIDTH,
|
||||||
|
DTV_ISDB_LAYERC_TIME_INTERLEAVING,
|
||||||
|
|
||||||
} dtv_cmd_types_t;
|
} dtv_cmd_types_t;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче