media: dvb: represent min/max/step/tolerance freqs in Hz

Right now, satellite frontend drivers specify frequencies in kHz,
while terrestrial/cable ones specify in Hz. That's confusing
for developers.

However, the main problem is that universal frontends capable
of handling both satellite and non-satelite delivery systems
are appearing. We end by needing to hack the drivers in
order to support such hybrid frontends.

So, convert everything to specify frontend frequencies in Hz.

Tested-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
Mauro Carvalho Chehab 2018-07-05 18:59:36 -04:00
parent a3f90c75b8
commit f1b1eabff0
96 changed files with 428 additions and 399 deletions

View File

@ -1047,9 +1047,9 @@ static void smsdvb_release(struct dvb_frontend *fe)
static const struct dvb_frontend_ops smsdvb_fe_ops = { static const struct dvb_frontend_ops smsdvb_fe_ops = {
.info = { .info = {
.name = "Siano Mobile Digital MDTV Receiver", .name = "Siano Mobile Digital MDTV Receiver",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 250000, .frequency_stepsize_hz = 250 * kHz,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -894,11 +894,28 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
} }
static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe, static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
u32 *freq_min, u32 *freq_max) u32 *freq_min, u32 *freq_max,
u32 *tolerance)
{ {
struct dtv_frontend_properties *c = &fe->dtv_property_cache; struct dtv_frontend_properties *c = &fe->dtv_property_cache;
__u32 tuner_min = fe->ops.tuner_ops.info.frequency_min_hz; u32 tuner_min = fe->ops.tuner_ops.info.frequency_min_hz;
__u32 tuner_max = fe->ops.tuner_ops.info.frequency_max_hz; u32 tuner_max = fe->ops.tuner_ops.info.frequency_max_hz;
u32 frontend_min = fe->ops.info.frequency_min_hz;
u32 frontend_max = fe->ops.info.frequency_max_hz;
*freq_min = max(frontend_min, tuner_min);
if (frontend_max == 0)
*freq_max = tuner_max;
else if (tuner_max == 0)
*freq_max = frontend_max;
else
*freq_max = min(frontend_max, tuner_max);
if (*freq_min == 0 || *freq_max == 0)
dev_warn(fe->dvb->device,
"DVB: adapter %i frontend %u frequency limits undefined - fix the driver\n",
fe->dvb->num, fe->id);
/* If the standard is for satellite, convert frequencies to kHz */ /* If the standard is for satellite, convert frequencies to kHz */
switch (c->delivery_system) { switch (c->delivery_system) {
@ -906,26 +923,35 @@ static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
case SYS_DVBS2: case SYS_DVBS2:
case SYS_TURBO: case SYS_TURBO:
case SYS_ISDBS: case SYS_ISDBS:
tuner_max /= kHz; *freq_min /= kHz;
tuner_min /= kHz; *freq_max /= kHz;
if (tolerance)
*tolerance = fe->ops.info.frequency_tolerance_hz / kHz;
break;
default:
if (tolerance)
*tolerance = fe->ops.info.frequency_tolerance_hz;
break;
}
}
static u32 dvb_frontend_get_stepsize(struct dvb_frontend *fe)
{
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
u32 step = fe->ops.info.frequency_stepsize_hz;
switch (c->delivery_system) {
case SYS_DVBS:
case SYS_DVBS2:
case SYS_TURBO:
case SYS_ISDBS:
step /= kHz;
break; break;
default: default:
break; break;
} }
*freq_min = max(fe->ops.info.frequency_min, tuner_min); return step;
if (fe->ops.info.frequency_max == 0)
*freq_max = tuner_max;
else if (tuner_max == 0)
*freq_max = fe->ops.info.frequency_max;
else
*freq_max = min(fe->ops.info.frequency_max, tuner_max);
if (*freq_min == 0 || *freq_max == 0)
dev_warn(fe->dvb->device,
"DVB: adapter %i frontend %u frequency limits undefined - fix the driver\n",
fe->dvb->num, fe->id);
} }
static int dvb_frontend_check_parameters(struct dvb_frontend *fe) static int dvb_frontend_check_parameters(struct dvb_frontend *fe)
@ -935,7 +961,7 @@ static int dvb_frontend_check_parameters(struct dvb_frontend *fe)
u32 freq_max; u32 freq_max;
/* range check: frequency */ /* range check: frequency */
dvb_frontend_get_frequency_limits(fe, &freq_min, &freq_max); dvb_frontend_get_frequency_limits(fe, &freq_min, &freq_max, NULL);
if ((freq_min && c->frequency < freq_min) || if ((freq_min && c->frequency < freq_min) ||
(freq_max && c->frequency > freq_max)) { (freq_max && c->frequency > freq_max)) {
dev_warn(fe->dvb->device, "DVB: adapter %i frontend %i frequency %u out of range (%u..%u)\n", dev_warn(fe->dvb->device, "DVB: adapter %i frontend %i frequency %u out of range (%u..%u)\n",
@ -2261,8 +2287,8 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
case SYS_ISDBT: case SYS_ISDBT:
case SYS_DTMB: case SYS_DTMB:
fepriv->min_delay = HZ / 20; fepriv->min_delay = HZ / 20;
fepriv->step_size = fe->ops.info.frequency_stepsize * 2; fepriv->step_size = dvb_frontend_get_stepsize(fe) * 2;
fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; fepriv->max_drift = (dvb_frontend_get_stepsize(fe) * 2) + 1;
break; break;
default: default:
/* /*
@ -2391,9 +2417,17 @@ static int dvb_frontend_handle_ioctl(struct file *file,
case FE_GET_INFO: { case FE_GET_INFO: {
struct dvb_frontend_info *info = parg; struct dvb_frontend_info *info = parg;
memset(info, 0, sizeof(*info));
memcpy(info, &fe->ops.info, sizeof(struct dvb_frontend_info)); strcpy(info->name, fe->ops.info.name);
dvb_frontend_get_frequency_limits(fe, &info->frequency_min, &info->frequency_max); info->symbol_rate_min = fe->ops.info.symbol_rate_min;
info->symbol_rate_max = fe->ops.info.symbol_rate_max;
info->symbol_rate_tolerance = fe->ops.info.symbol_rate_tolerance;
info->caps = fe->ops.info.caps;
info->frequency_stepsize = dvb_frontend_get_stepsize(fe);
dvb_frontend_get_frequency_limits(fe, &info->frequency_min,
&info->frequency_max,
&info->frequency_tolerance);
/* /*
* Associate the 4 delivery systems supported by DVBv3 * Associate the 4 delivery systems supported by DVBv3
@ -2423,10 +2457,10 @@ static int dvb_frontend_handle_ioctl(struct file *file,
dev_err(fe->dvb->device, dev_err(fe->dvb->device,
"%s: doesn't know how to handle a DVBv3 call to delivery system %i\n", "%s: doesn't know how to handle a DVBv3 call to delivery system %i\n",
__func__, c->delivery_system); __func__, c->delivery_system);
fe->ops.info.type = FE_OFDM; info->type = FE_OFDM;
} }
dev_dbg(fe->dvb->device, "%s: current delivery system on cache: %d, V3 type: %d\n", dev_dbg(fe->dvb->device, "%s: current delivery system on cache: %d, V3 type: %d\n",
__func__, c->delivery_system, fe->ops.info.type); __func__, c->delivery_system, info->type);
/* Set CAN_INVERSION_AUTO bit on in other than oneshot mode */ /* Set CAN_INVERSION_AUTO bit on in other than oneshot mode */
if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT)) if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT))

View File

@ -1136,10 +1136,9 @@ static const struct dvb_frontend_ops af9013_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Afatech AF9013", .name = "Afatech AF9013",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 250000, .frequency_stepsize_hz = 250 * kHz,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | .caps = FE_CAN_FEC_1_2 |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_3_4 |

View File

@ -1020,10 +1020,9 @@ static const struct dvb_frontend_ops af9033_ops = {
.delsys = {SYS_DVBT}, .delsys = {SYS_DVBT},
.info = { .info = {
.name = "Afatech AF9033 (DVB-T)", .name = "Afatech AF9033 (DVB-T)",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 250000, .frequency_stepsize_hz = 250 * kHz,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | .caps = FE_CAN_FEC_1_2 |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_3_4 |

View File

@ -419,9 +419,9 @@ static const struct dvb_frontend_ops as102_fe_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Abilis AS102 DVB-T", .name = "Abilis AS102 DVB-T",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_INVERSION_AUTO .caps = FE_CAN_INVERSION_AUTO
| FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4
| FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO

View File

@ -428,9 +428,9 @@ static const struct dvb_frontend_ops atbm8830_ops = {
.delsys = { SYS_DTMB }, .delsys = { SYS_DTMB },
.info = { .info = {
.name = "AltoBeam ATBM8830/8831 DMB-TH", .name = "AltoBeam ATBM8830/8831 DMB-TH",
.frequency_min = 474000000, .frequency_min_hz = 474 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 10000, .frequency_stepsize_hz = 10 * kHz,
.caps = .caps =
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |
FE_CAN_QAM_AUTO | FE_CAN_QAM_AUTO |

View File

@ -897,9 +897,9 @@ static const struct dvb_frontend_ops au8522_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Auvitek AU8522 QAM/8VSB Frontend", .name = "Auvitek AU8522 QAM/8VSB Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },

View File

@ -840,10 +840,8 @@ static const struct dvb_frontend_ops bcm3510_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Broadcom BCM3510 VSB/QAM frontend", .name = "Broadcom BCM3510 VSB/QAM frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 803000000, .frequency_max_hz = 803 * MHz,
/* stepsize is just a guess */
.frequency_stepsize = 0,
.caps = .caps =
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -412,9 +412,9 @@ static const struct dvb_frontend_ops cx22700_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Conexant CX22700 DVB-T", .name = "Conexant CX22700 DVB-T",
.frequency_min = 470000000, .frequency_min_hz = 470 * MHz,
.frequency_max = 860000000, .frequency_max_hz = 860 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |

View File

@ -622,9 +622,9 @@ static const struct dvb_frontend_ops cx22702_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Conexant CX22702 DVB-T", .name = "Conexant CX22702 DVB-T",
.frequency_min = 177000000, .frequency_min_hz = 177 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |

View File

@ -629,10 +629,10 @@ static const struct dvb_frontend_ops cx24110_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Conexant CX24110 DVB-S", .name = "Conexant CX24110 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 29500, .frequency_tolerance_hz = 29500 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1465,10 +1465,10 @@ static const struct dvb_frontend_ops cx24116_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Conexant CX24116/CX24118", .name = "Conexant CX24116/CX24118",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1622,10 +1622,10 @@ static const struct dvb_frontend_ops cx24117_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Conexant CX24117/CX24132", .name = "Conexant CX24117/CX24132",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1555,10 +1555,10 @@ static const struct dvb_frontend_ops cx24120_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Conexant CX24120/CX24118", .name = "Conexant CX24120/CX24118",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1111,10 +1111,10 @@ static const struct dvb_frontend_ops cx24123_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Conexant CX24123/CX24109", .name = "Conexant CX24123/CX24109",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -431,8 +431,8 @@ int cxd2820r_get_tune_settings_t(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *s) struct dvb_frontend_tune_settings *s)
{ {
s->min_delay_ms = 500; s->min_delay_ms = 500;
s->step_size = fe->ops.info.frequency_stepsize * 2; s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
return 0; return 0;
} }

View File

@ -426,8 +426,8 @@ int cxd2820r_get_tune_settings_t2(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *s) struct dvb_frontend_tune_settings *s)
{ {
s->min_delay_ms = 1500; s->min_delay_ms = 1500;
s->step_size = fe->ops.info.frequency_stepsize * 2; s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
return 0; return 0;
} }

View File

@ -3942,9 +3942,8 @@ static const struct dvb_frontend_ops cxd2841er_dvbs_s2_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Sony CXD2841ER DVB-S/S2 demodulator", .name = "Sony CXD2841ER DVB-S/S2 demodulator",
.frequency_min = 500000, .frequency_min_hz = 500 * MHz,
.frequency_max = 2500000, .frequency_max_hz = 2500 * MHz,
.frequency_stepsize = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, .symbol_rate_tolerance = 500,
@ -3988,8 +3987,8 @@ static struct dvb_frontend_ops cxd2841er_t_c_ops = {
FE_CAN_HIERARCHY_AUTO | FE_CAN_HIERARCHY_AUTO |
FE_CAN_MUTE_TS | FE_CAN_MUTE_TS |
FE_CAN_2G_MODULATION, FE_CAN_2G_MODULATION,
.frequency_min = 42000000, .frequency_min_hz = 42 * MHz,
.frequency_max = 1002000000, .frequency_max_hz = 1002 * MHz,
.symbol_rate_min = 870000, .symbol_rate_min = 870000,
.symbol_rate_max = 11700000 .symbol_rate_max = 11700000
}, },

View File

@ -1833,9 +1833,9 @@ static enum dvbfe_algo cxd2880_get_frontend_algo(struct dvb_frontend *fe)
static struct dvb_frontend_ops cxd2880_dvbt_t2_ops = { static struct dvb_frontend_ops cxd2880_dvbt_t2_ops = {
.info = { .info = {
.name = "Sony CXD2880", .name = "Sony CXD2880",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 1000, .frequency_stepsize_hz = 1 * kHz,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_1_2 |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |

View File

@ -786,9 +786,9 @@ static const struct dvb_frontend_ops dib3000mb_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DiBcom 3000M-B DVB-T", .name = "DiBcom 3000M-B DVB-T",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -944,9 +944,9 @@ static const struct dvb_frontend_ops dib3000mc_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DiBcom 3000MC/P", .name = "DiBcom 3000MC/P",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -1443,9 +1443,9 @@ static const struct dvb_frontend_ops dib7000m_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DiBcom 7000MA/MB/PA/PB/MC", .name = "DiBcom 7000MA/MB/PA/PB/MC",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -2824,9 +2824,9 @@ static const struct dvb_frontend_ops dib7000p_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DiBcom 7000PC", .name = "DiBcom 7000PC",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -4390,9 +4390,9 @@ static const struct dvb_frontend_ops dib8000_ops = {
.delsys = { SYS_ISDBT }, .delsys = { SYS_ISDBT },
.info = { .info = {
.name = "DiBcom 8000 ISDB-T", .name = "DiBcom 8000 ISDB-T",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -2553,9 +2553,9 @@ static const struct dvb_frontend_ops dib9000_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DiBcom 9000", .name = "DiBcom 9000",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -12374,9 +12374,9 @@ static const struct dvb_frontend_ops drx39xxj_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Micronas DRX39xxj family Frontend", .name = "Micronas DRX39xxj family Frontend",
.frequency_stepsize = 62500, .frequency_min_hz = 51 * MHz,
.frequency_min = 51000000, .frequency_max_hz = 858 * MHz,
.frequency_max = 858000000, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },

View File

@ -2912,10 +2912,9 @@ static const struct dvb_frontend_ops drxd_ops = {
.delsys = { SYS_DVBT}, .delsys = { SYS_DVBT},
.info = { .info = {
.name = "Micronas DRXD DVB-T", .name = "Micronas DRXD DVB-T",
.frequency_min = 47125000, .frequency_min_hz = 47125 * kHz,
.frequency_max = 855250000, .frequency_max_hz = 855250 * kHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |

View File

@ -6744,13 +6744,13 @@ static const struct dvb_frontend_ops drxk_ops = {
/* .delsys will be filled dynamically */ /* .delsys will be filled dynamically */
.info = { .info = {
.name = "DRXK", .name = "DRXK",
.frequency_min = 47000000, .frequency_min_hz = 47 * MHz,
.frequency_max = 865000000, .frequency_max_hz = 865 * MHz,
/* For DVB-C */ /* For DVB-C */
.symbol_rate_min = 870000, .symbol_rate_min = 870000,
.symbol_rate_max = 11700000, .symbol_rate_max = 11700000,
/* For DVB-T */ /* For DVB-T */
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO | FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO |

View File

@ -1100,10 +1100,10 @@ static const struct dvb_frontend_ops ds3000_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Montage Technology DS3000", .name = "Montage Technology DS3000",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1011, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1011 * kHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -170,9 +170,9 @@ static const struct dvb_frontend_ops dvb_dummy_fe_ofdm_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Dummy DVB-T", .name = "Dummy DVB-T",
.frequency_min = 0, .frequency_min_hz = 0,
.frequency_max = 863250000, .frequency_max_hz = 863250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO | FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO |
@ -201,11 +201,11 @@ static const struct dvb_frontend_ops dvb_dummy_fe_qam_ops = {
.delsys = { SYS_DVBC_ANNEX_A }, .delsys = { SYS_DVBC_ANNEX_A },
.info = { .info = {
.name = "Dummy DVB-C", .name = "Dummy DVB-C",
.frequency_stepsize = 62500, .frequency_min_hz = 51 * MHz,
.frequency_min = 51000000, .frequency_max_hz = 858 * MHz,
.frequency_max = 858000000, .frequency_stepsize_hz = 62500,
.symbol_rate_min = (57840000/2)/64, /* SACLK/64 == (XIN/2)/64 */ .symbol_rate_min = (57840000 / 2) / 64, /* SACLK/64 == (XIN/2)/64 */
.symbol_rate_max = (57840000/2)/4, /* SACLK/4 */ .symbol_rate_max = (57840000 / 2) / 4, /* SACLK/4 */
.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_QAM_128 | FE_CAN_QAM_256 |
FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO
@ -230,10 +230,10 @@ static const struct dvb_frontend_ops dvb_dummy_fe_qpsk_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Dummy DVB-S", .name = "Dummy DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 250, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 250 * kHz,
.frequency_tolerance = 29500, .frequency_tolerance_hz = 29500 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -355,9 +355,9 @@ static const struct dvb_frontend_ops gp8psk_fe_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Genpix DVB-S", .name = "Genpix DVB-S",
.frequency_min = 800000, .frequency_min_hz = 800 * MHz,
.frequency_max = 2250000, .frequency_max_hz = 2250 * MHz,
.frequency_stepsize = 100, .frequency_stepsize_hz = 100 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -135,8 +135,8 @@ static int ix2505v_set_params(struct dvb_frontend *fe)
u8 gain, cc, ref, psc, local_osc, lpf; u8 gain, cc, ref, psc, local_osc, lpf;
u8 data[4] = {0}; u8 data[4] = {0};
if ((frequency < fe->ops.info.frequency_min) if ((frequency < fe->ops.info.frequency_min_hz / kHz)
|| (frequency > fe->ops.info.frequency_max)) || (frequency > fe->ops.info.frequency_max_hz / kHz))
return -EINVAL; return -EINVAL;
if (state->config->tuner_gain) if (state->config->tuner_gain)

View File

@ -575,10 +575,9 @@ static const struct dvb_frontend_ops l64781_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "LSI L64781 DVB-T", .name = "LSI L64781 DVB-T",
/* .frequency_min = ???,*/ /* .frequency_min_hz = ???,*/
/* .frequency_max = ???,*/ /* .frequency_max_hz = ???,*/
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
/* .frequency_tolerance = ???,*/
/* .symbol_rate_tolerance = ???,*/ /* .symbol_rate_tolerance = ???,*/
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |

View File

@ -1349,9 +1349,9 @@ static const struct dvb_frontend_ops lg2160_ops = {
.delsys = { SYS_ATSCMH }, .delsys = { SYS_ATSCMH },
.info = { .info = {
.name = "LG Electronics LG2160 ATSC/MH Frontend", .name = "LG Electronics LG2160 ATSC/MH Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
}, },
.i2c_gate_ctrl = lg216x_i2c_gate_ctrl, .i2c_gate_ctrl = lg216x_i2c_gate_ctrl,
#if 0 #if 0
@ -1375,9 +1375,9 @@ static const struct dvb_frontend_ops lg2161_ops = {
.delsys = { SYS_ATSCMH }, .delsys = { SYS_ATSCMH },
.info = { .info = {
.name = "LG Electronics LG2161 ATSC/MH Frontend", .name = "LG Electronics LG2161 ATSC/MH Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
}, },
.i2c_gate_ctrl = lg216x_i2c_gate_ctrl, .i2c_gate_ctrl = lg216x_i2c_gate_ctrl,
#if 0 #if 0

View File

@ -1164,9 +1164,9 @@ static const struct dvb_frontend_ops lgdt3304_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "LG Electronics LGDT3304 VSB/QAM Frontend", .name = "LG Electronics LGDT3304 VSB/QAM Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },
.i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl, .i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl,
@ -1187,9 +1187,9 @@ static const struct dvb_frontend_ops lgdt3305_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "LG Electronics LGDT3305 VSB/QAM Frontend", .name = "LG Electronics LGDT3305 VSB/QAM Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },
.i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl, .i2c_gate_ctrl = lgdt3305_i2c_gate_ctrl,

View File

@ -2157,9 +2157,9 @@ static const struct dvb_frontend_ops lgdt3306a_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "LG Electronics LGDT3306A VSB/QAM Frontend", .name = "LG Electronics LGDT3306A VSB/QAM Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },
.i2c_gate_ctrl = lgdt3306a_i2c_gate_ctrl, .i2c_gate_ctrl = lgdt3306a_i2c_gate_ctrl,

View File

@ -944,9 +944,9 @@ static const struct dvb_frontend_ops lgdt3302_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "LG Electronics LGDT3302 VSB/QAM Frontend", .name = "LG Electronics LGDT3302 VSB/QAM Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 5056941, /* QAM 64 */ .symbol_rate_min = 5056941, /* QAM 64 */
.symbol_rate_max = 10762000, /* VSB 8 */ .symbol_rate_max = 10762000, /* VSB 8 */
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
@ -966,9 +966,9 @@ static const struct dvb_frontend_ops lgdt3303_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "LG Electronics LGDT3303 VSB/QAM Frontend", .name = "LG Electronics LGDT3303 VSB/QAM Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 5056941, /* QAM 64 */ .symbol_rate_min = 5056941, /* QAM 64 */
.symbol_rate_max = 10762000, /* VSB 8 */ .symbol_rate_max = 10762000, /* VSB 8 */
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB

View File

@ -416,10 +416,9 @@ static const struct dvb_frontend_ops lgs8gl5_ops = {
.delsys = { SYS_DTMB }, .delsys = { SYS_DTMB },
.info = { .info = {
.name = "Legend Silicon LGS-8GL5 DMB-TH", .name = "Legend Silicon LGS-8GL5 DMB-TH",
.frequency_min = 474000000, .frequency_min_hz = 474 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 10000, .frequency_stepsize_hz = 10 * kHz,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_AUTO | .caps = FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_32 |
FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |

View File

@ -985,9 +985,9 @@ static const struct dvb_frontend_ops lgs8gxx_ops = {
.delsys = { SYS_DTMB }, .delsys = { SYS_DTMB },
.info = { .info = {
.name = "Legend Silicon LGS8913/LGS8GXX DMB-TH", .name = "Legend Silicon LGS8913/LGS8GXX DMB-TH",
.frequency_min = 474000000, .frequency_min_hz = 474 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 10000, .frequency_stepsize_hz = 10 * kHz,
.caps = .caps =
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |
FE_CAN_QAM_AUTO | FE_CAN_QAM_AUTO |

View File

@ -1300,9 +1300,9 @@ static const struct dvb_frontend_ops m88ds3103_ops = {
.delsys = {SYS_DVBS, SYS_DVBS2}, .delsys = {SYS_DVBS, SYS_DVBS2},
.info = { .info = {
.name = "Montage Technology M88DS3103", .name = "Montage Technology M88DS3103",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -759,10 +759,10 @@ static const struct dvb_frontend_ops m88rs2000_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "M88RS2000 DVB-S", .name = "M88RS2000 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1000, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1 * MHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -1808,10 +1808,9 @@ static const struct dvb_frontend_ops mb86a16_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Fujitsu MB86A16 DVB-S", .name = "Fujitsu MB86A16 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 3000, .frequency_stepsize_hz = 3 * MHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, .symbol_rate_tolerance = 500,

View File

@ -2111,9 +2111,9 @@ static const struct dvb_frontend_ops mb86a20s_ops = {
FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_QAM_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_QAM_AUTO |
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO, FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
/* Actually, those values depend on the used tuner */ /* Actually, those values depend on the used tuner */
.frequency_min = 45000000, .frequency_min_hz = 45 * MHz,
.frequency_max = 864000000, .frequency_max_hz = 864 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
}, },
.release = mb86a20s_release, .release = mb86a20s_release,

View File

@ -559,8 +559,8 @@ static int mt312_set_frontend(struct dvb_frontend *fe)
dprintk("%s: Freq %d\n", __func__, p->frequency); dprintk("%s: Freq %d\n", __func__, p->frequency);
if ((p->frequency < fe->ops.info.frequency_min) if ((p->frequency < fe->ops.info.frequency_min_hz / kHz)
|| (p->frequency > fe->ops.info.frequency_max)) || (p->frequency > fe->ops.info.frequency_max_hz / kHz))
return -EINVAL; return -EINVAL;
if (((int)p->inversion < INVERSION_OFF) if (((int)p->inversion < INVERSION_OFF)
@ -755,10 +755,10 @@ static const struct dvb_frontend_ops mt312_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Zarlink ???? DVB-S", .name = "Zarlink ???? DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
/* FIXME: adjust freq to real used xtal */ /* FIXME: adjust freq to real used xtal */
.frequency_stepsize = (MT312_PLL_CLK / 1000) / 128, .frequency_stepsize_hz = MT312_PLL_CLK / 128,
.symbol_rate_min = MT312_SYS_CLK / 128, /* FIXME as above */ .symbol_rate_min = MT312_SYS_CLK / 128, /* FIXME as above */
.symbol_rate_max = MT312_SYS_CLK / 2, .symbol_rate_max = MT312_SYS_CLK / 2,
.caps = .caps =

View File

@ -567,10 +567,9 @@ static const struct dvb_frontend_ops mt352_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Zarlink MT352 DVB-T", .name = "Zarlink MT352 DVB-T",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |

View File

@ -784,10 +784,8 @@ static struct dvb_frontend_ops mxl_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS }, .delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = { .info = {
.name = "MaxLinear MxL5xx DVB-S/S2 tuner-demodulator", .name = "MaxLinear MxL5xx DVB-S/S2 tuner-demodulator",
.frequency_min = 300000, .frequency_min_hz = 300 * MHz,
.frequency_max = 2350000, .frequency_max_hz = 2350 * MHz,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1212,9 +1212,9 @@ static const struct dvb_frontend_ops nxt200x_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Nextwave NXT200X VSB/QAM frontend", .name = "Nextwave NXT200X VSB/QAM frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 860000000, .frequency_max_hz = 860 * MHz,
.frequency_stepsize = 166666, /* stepsize is just a guess */ .frequency_stepsize_hz = 166666, /* stepsize is just a guess */
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256 FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256

View File

@ -596,9 +596,9 @@ static const struct dvb_frontend_ops nxt6000_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "NxtWave NXT6000 DVB-T", .name = "NxtWave NXT6000 DVB-T",
.frequency_min = 0, .frequency_min_hz = 0,
.frequency_max = 863250000, .frequency_max_hz = 863250 * kHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
/*.frequency_tolerance = *//* FIXME: 12% of SR */ /*.frequency_tolerance = *//* FIXME: 12% of SR */
.symbol_rate_min = 0, /* FIXME */ .symbol_rate_min = 0, /* FIXME */
.symbol_rate_max = 9360000, /* FIXME */ .symbol_rate_max = 9360000, /* FIXME */

View File

@ -583,9 +583,9 @@ static const struct dvb_frontend_ops or51132_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Oren OR51132 VSB/QAM Frontend", .name = "Oren OR51132 VSB/QAM Frontend",
.frequency_min = 44000000, .frequency_min_hz = 44 * MHz,
.frequency_max = 958000000, .frequency_max_hz = 958 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO |

View File

@ -530,10 +530,10 @@ struct dvb_frontend* or51211_attach(const struct or51211_config* config,
static const struct dvb_frontend_ops or51211_ops = { static const struct dvb_frontend_ops or51211_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Oren OR51211 VSB Frontend", .name = "Oren OR51211 VSB Frontend",
.frequency_min = 44000000, .frequency_min_hz = 44 * MHz,
.frequency_max = 958000000, .frequency_max_hz = 958 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_8VSB FE_CAN_8VSB

View File

@ -159,8 +159,8 @@ static int rtl2830_get_tune_settings(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *s) struct dvb_frontend_tune_settings *s)
{ {
s->min_delay_ms = 500; s->min_delay_ms = 500;
s->step_size = fe->ops.info.frequency_stepsize * 2; s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
return 0; return 0;
} }

View File

@ -408,8 +408,8 @@ static int rtl2832_get_tune_settings(struct dvb_frontend *fe,
dev_dbg(&client->dev, "\n"); dev_dbg(&client->dev, "\n");
s->min_delay_ms = 1000; s->min_delay_ms = 1000;
s->step_size = fe->ops.info.frequency_stepsize * 2; s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1; s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
return 0; return 0;
} }
@ -841,9 +841,9 @@ static const struct dvb_frontend_ops rtl2832_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Realtek RTL2832 (DVB-T)", .name = "Realtek RTL2832 (DVB-T)",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_FEC_1_2 | .caps = FE_CAN_FEC_1_2 |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_3_4 |

View File

@ -999,9 +999,9 @@ static const struct dvb_frontend_ops s5h1409_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Samsung S5H1409 QAM/8VSB Frontend", .name = "Samsung S5H1409 QAM/8VSB Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },

View File

@ -918,9 +918,9 @@ static const struct dvb_frontend_ops s5h1411_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B }, .delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
.info = { .info = {
.name = "Samsung S5H1411 QAM/8VSB Frontend", .name = "Samsung S5H1411 QAM/8VSB Frontend",
.frequency_min = 54000000, .frequency_min_hz = 54 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
}, },

View File

@ -934,10 +934,10 @@ static const struct dvb_frontend_ops s5h1420_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Samsung S5H1420/PnpNetwork PN1010 DVB-S", .name = "Samsung S5H1420/PnpNetwork PN1010 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
.frequency_tolerance = 29500, .frequency_tolerance_hz = 29500 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
/* .symbol_rate_tolerance = ???,*/ /* .symbol_rate_tolerance = ???,*/

View File

@ -370,9 +370,9 @@ static const struct dvb_frontend_ops s5h1432_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Samsung s5h1432 DVB-T Frontend", .name = "Samsung s5h1432 DVB-T Frontend",
.frequency_min = 177000000, .frequency_min_hz = 177 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |

View File

@ -510,15 +510,14 @@ static const struct dvb_frontend_ops s921_ops = {
/* Use dib8000 values per default */ /* Use dib8000 values per default */
.info = { .info = {
.name = "Sharp S921", .name = "Sharp S921",
.frequency_min = 470000000, .frequency_min_hz = 470 * MHz,
/* /*
* Max should be 770MHz instead, according with Sharp docs, * Max should be 770MHz instead, according with Sharp docs,
* but Leadership doc says it works up to 806 MHz. This is * but Leadership doc says it works up to 806 MHz. This is
* required to get channel 69, used in Brazil * required to get channel 69, used in Brazil
*/ */
.frequency_max = 806000000, .frequency_max_hz = 806 * MHz,
.frequency_tolerance = 0, .caps = FE_CAN_INVERSION_AUTO |
.caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |

View File

@ -1120,7 +1120,7 @@ static const struct dvb_frontend_ops si2165_ops = {
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 7200000, .symbol_rate_max = 7200000,
/* For DVB-T */ /* For DVB-T */
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_FEC_1_2 | .caps = FE_CAN_FEC_1_2 |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_3_4 |

View File

@ -870,10 +870,9 @@ static const struct dvb_frontend_ops si21xx_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "SL SI21XX DVB-S", .name = "SL SI21XX DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -584,9 +584,9 @@ static const struct dvb_frontend_ops sp8870_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Spase SP8870 DVB-T", .name = "Spase SP8870 DVB-T",
.frequency_min = 470000000, .frequency_min_hz = 470 * MHz,
.frequency_max = 860000000, .frequency_max_hz = 860 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 |
FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -594,9 +594,9 @@ static const struct dvb_frontend_ops sp887x_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Spase SP887x DVB-T", .name = "Spase SP887x DVB-T",
.frequency_min = 50500000, .frequency_min_hz = 50500 * kHz,
.frequency_max = 858000000, .frequency_max_hz = 858000 * kHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |

View File

@ -1584,10 +1584,8 @@ static const struct dvb_frontend_ops stb0899_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS }, .delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = { .info = {
.name = "STB0899 Multistandard", .name = "STB0899 Multistandard",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
.symbol_rate_min = 5000000, .symbol_rate_min = 5000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,

View File

@ -533,10 +533,9 @@ static const struct dvb_frontend_ops stv0288_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "ST STV0288 DVB-S", .name = "ST STV0288 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1000, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1 * MHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -694,9 +694,9 @@ static const struct dvb_frontend_ops stv0297_ops = {
.delsys = { SYS_DVBC_ANNEX_A }, .delsys = { SYS_DVBC_ANNEX_A },
.info = { .info = {
.name = "ST STV0297 DVB-C", .name = "ST STV0297 DVB-C",
.frequency_min = 47000000, .frequency_min_hz = 470 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 870000, .symbol_rate_min = 870000,
.symbol_rate_max = 11700000, .symbol_rate_max = 11700000,
.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |

View File

@ -717,10 +717,9 @@ static const struct dvb_frontend_ops stv0299_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "ST STV0299 DVB-S", .name = "ST STV0299 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -1693,10 +1693,9 @@ static const struct dvb_frontend_ops stv0367ter_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "ST STV0367 DVB-T", .name = "ST STV0367 DVB-T",
.frequency_min = 47000000, .frequency_min_hz = 47 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 15625, .frequency_stepsize_hz = 15625,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |
@ -2867,9 +2866,9 @@ static const struct dvb_frontend_ops stv0367cab_ops = {
.delsys = { SYS_DVBC_ANNEX_A }, .delsys = { SYS_DVBC_ANNEX_A },
.info = { .info = {
.name = "ST STV0367 DVB-C", .name = "ST STV0367 DVB-C",
.frequency_min = 47000000, .frequency_min_hz = 47 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 870000, .symbol_rate_min = 870000,
.symbol_rate_max = 11700000, .symbol_rate_max = 11700000,
.caps = 0x400 |/* FE_CAN_QAM_4 */ .caps = 0x400 |/* FE_CAN_QAM_4 */
@ -3273,10 +3272,9 @@ static const struct dvb_frontend_ops stv0367ddb_ops = {
.delsys = { SYS_DVBC_ANNEX_A, SYS_DVBT }, .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBT },
.info = { .info = {
.name = "ST STV0367 DDB DVB-C/T", .name = "ST STV0367 DDB DVB-C/T",
.frequency_min = 47000000, .frequency_min_hz = 47 * MHz,
.frequency_max = 865000000, .frequency_max_hz = 865 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.frequency_tolerance = 0,
.symbol_rate_min = 870000, .symbol_rate_min = 870000,
.symbol_rate_max = 11700000, .symbol_rate_max = 11700000,
.caps = /* DVB-C */ .caps = /* DVB-C */

View File

@ -1875,10 +1875,9 @@ static const struct dvb_frontend_ops stv0900_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS }, .delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = { .info = {
.name = "STV0900 frontend", .name = "STV0900 frontend",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, .frequency_stepsize_hz = 125 * kHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, .symbol_rate_tolerance = 500,

View File

@ -4905,10 +4905,8 @@ static const struct dvb_frontend_ops stv090x_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS }, .delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = { .info = {
.name = "STV090x Multistandard", .name = "STV090x Multistandard",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -1724,10 +1724,8 @@ static const struct dvb_frontend_ops stv0910_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS }, .delsys = { SYS_DVBS, SYS_DVBS2, SYS_DSS },
.info = { .info = {
.name = "ST STV0910", .name = "ST STV0910",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
.symbol_rate_min = 100000, .symbol_rate_min = 100000,
.symbol_rate_max = 70000000, .symbol_rate_max = 70000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -714,8 +714,8 @@ static const struct dvb_frontend_ops tc90522_ops_sat = {
.delsys = { SYS_ISDBS }, .delsys = { SYS_ISDBS },
.info = { .info = {
.name = "Toshiba TC90522 ISDB-S module", .name = "Toshiba TC90522 ISDB-S module",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO | .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO |
FE_CAN_QAM_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_QAM_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO |
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO, FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
@ -734,9 +734,9 @@ static const struct dvb_frontend_ops tc90522_ops_ter = {
.delsys = { SYS_ISDBT }, .delsys = { SYS_ISDBT },
.info = { .info = {
.name = "Toshiba TC90522 ISDB-T module", .name = "Toshiba TC90522 ISDB-T module",
.frequency_min = 470000000, .frequency_min_hz = 470 * MHz,
.frequency_max = 770000000, .frequency_max_hz = 770 * MHz,
.frequency_stepsize = 142857, .frequency_stepsize_hz = 142857,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -487,11 +487,11 @@ static const struct dvb_frontend_ops tda10021_ops = {
.delsys = { SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C }, .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C },
.info = { .info = {
.name = "Philips TDA10021 DVB-C", .name = "Philips TDA10021 DVB-C",
.frequency_stepsize = 62500, .frequency_min_hz = 47 * MHz,
.frequency_min = 47000000, .frequency_max_hz = 862 * MHz,
.frequency_max = 862000000, .frequency_stepsize_hz = 62500,
.symbol_rate_min = (XIN/2)/64, /* SACLK/64 == (XIN/2)/64 */ .symbol_rate_min = (XIN / 2) / 64, /* SACLK/64 == (XIN/2)/64 */
.symbol_rate_max = (XIN/2)/4, /* SACLK/4 */ .symbol_rate_max = (XIN / 2) / 4, /* SACLK/4 */
#if 0 #if 0
.frequency_tolerance = ???, .frequency_tolerance = ???,
.symbol_rate_tolerance = ???, /* ppm */ /* == 8% (spec p. 5) */ .symbol_rate_tolerance = ???, /* ppm */ /* == 8% (spec p. 5) */

View File

@ -575,9 +575,9 @@ static const struct dvb_frontend_ops tda10023_ops = {
.delsys = { SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C }, .delsys = { SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C },
.info = { .info = {
.name = "Philips TDA10023 DVB-C", .name = "Philips TDA10023 DVB-C",
.frequency_stepsize = 62500, .frequency_min_hz = 47 * MHz,
.frequency_min = 47000000, .frequency_max_hz = 862 * MHz,
.frequency_max = 862000000, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 0, /* set in tda10023_attach */ .symbol_rate_min = 0, /* set in tda10023_attach */
.symbol_rate_max = 0, /* set in tda10023_attach */ .symbol_rate_max = 0, /* set in tda10023_attach */
.caps = 0x400 | //FE_CAN_QAM_4 .caps = 0x400 | //FE_CAN_QAM_4

View File

@ -1156,9 +1156,9 @@ static const struct dvb_frontend_ops tda10048_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "NXP TDA10048HN DVB-T", .name = "NXP TDA10048HN DVB-T",
.frequency_min = 177000000, .frequency_min_hz = 177 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |

View File

@ -1249,9 +1249,9 @@ static const struct dvb_frontend_ops tda10045_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Philips TDA10045H DVB-T", .name = "Philips TDA10045H DVB-T",
.frequency_min = 51000000, .frequency_min_hz = 51 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = .caps =
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
@ -1319,9 +1319,9 @@ static const struct dvb_frontend_ops tda10046_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Philips TDA10046H DVB-T", .name = "Philips TDA10046H DVB-T",
.frequency_min = 51000000, .frequency_min_hz = 51 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = .caps =
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -681,8 +681,8 @@ static int tda10071_set_frontend(struct dvb_frontend *fe)
cmd.args[5] = (c->frequency >> 0) & 0xff; cmd.args[5] = (c->frequency >> 0) & 0xff;
cmd.args[6] = ((c->symbol_rate / 1000) >> 8) & 0xff; cmd.args[6] = ((c->symbol_rate / 1000) >> 8) & 0xff;
cmd.args[7] = ((c->symbol_rate / 1000) >> 0) & 0xff; cmd.args[7] = ((c->symbol_rate / 1000) >> 0) & 0xff;
cmd.args[8] = (tda10071_ops.info.frequency_tolerance >> 8) & 0xff; cmd.args[8] = ((tda10071_ops.info.frequency_tolerance_hz / 1000) >> 8) & 0xff;
cmd.args[9] = (tda10071_ops.info.frequency_tolerance >> 0) & 0xff; cmd.args[9] = ((tda10071_ops.info.frequency_tolerance_hz / 1000) >> 0) & 0xff;
cmd.args[10] = rolloff; cmd.args[10] = rolloff;
cmd.args[11] = inversion; cmd.args[11] = inversion;
cmd.args[12] = pilot; cmd.args[12] = pilot;
@ -1106,9 +1106,9 @@ static const struct dvb_frontend_ops tda10071_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "NXP TDA10071", .name = "NXP TDA10071",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_tolerance = 5000, .frequency_tolerance_hz = 5 * MHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -710,9 +710,9 @@ static const struct dvb_frontend_ops tda10086_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Philips TDA10086 DVB-S", .name = "Philips TDA10086 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -453,10 +453,9 @@ static const struct dvb_frontend_ops tda8083_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Philips TDA8083 DVB-S", .name = "Philips TDA8083 DVB-S",
.frequency_min = 920000, /* TDA8060 */ .frequency_min_hz = 920 * MHz, /* TDA8060 */
.frequency_max = 2200000, /* TDA8060 */ .frequency_max_hz = 2200 * MHz, /* TDA8060 */
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
/* .frequency_tolerance = ???,*/
.symbol_rate_min = 12000000, .symbol_rate_min = 12000000,
.symbol_rate_max = 30000000, .symbol_rate_max = 30000000,
/* .symbol_rate_tolerance = ???,*/ /* .symbol_rate_tolerance = ???,*/

View File

@ -412,9 +412,9 @@ static const struct dvb_frontend_ops ves1820_ops = {
.delsys = { SYS_DVBC_ANNEX_A }, .delsys = { SYS_DVBC_ANNEX_A },
.info = { .info = {
.name = "VLSI VES1820 DVB-C", .name = "VLSI VES1820 DVB-C",
.frequency_stepsize = 62500, .frequency_min_hz = 47 * MHz,
.frequency_min = 47000000, .frequency_max_hz = 862 * MHz,
.frequency_max = 862000000, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_QAM_16 | .caps = FE_CAN_QAM_16 |
FE_CAN_QAM_32 | FE_CAN_QAM_32 |
FE_CAN_QAM_64 | FE_CAN_QAM_64 |

View File

@ -516,10 +516,10 @@ static const struct dvb_frontend_ops ves1x93_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "VLSI VES1x93 DVB-S", .name = "VLSI VES1x93 DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 125 * kHz,
.frequency_tolerance = 29500, .frequency_tolerance_hz = 29500 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
/* .symbol_rate_tolerance = ???,*/ /* .symbol_rate_tolerance = ???,*/

View File

@ -311,8 +311,8 @@ static int zl10036_set_params(struct dvb_frontend *fe)
/* ensure correct values /* ensure correct values
* maybe redundant as core already checks this */ * maybe redundant as core already checks this */
if ((frequency < fe->ops.info.frequency_min) if ((frequency < fe->ops.info.frequency_min_hz / kHz)
|| (frequency > fe->ops.info.frequency_max)) || (frequency > fe->ops.info.frequency_max_hz / kHz))
return -EINVAL; return -EINVAL;
/* /*

View File

@ -635,10 +635,9 @@ static const struct dvb_frontend_ops zl10353_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Zarlink ZL10353 DVB-T", .name = "Zarlink ZL10353 DVB-T",
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.frequency_tolerance = 0,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
FE_CAN_FEC_AUTO | FE_CAN_FEC_AUTO |

View File

@ -152,7 +152,7 @@ static int fdtv_set_frontend(struct dvb_frontend *fe)
void fdtv_frontend_init(struct firedtv *fdtv, const char *name) void fdtv_frontend_init(struct firedtv *fdtv, const char *name)
{ {
struct dvb_frontend_ops *ops = &fdtv->fe.ops; struct dvb_frontend_ops *ops = &fdtv->fe.ops;
struct dvb_frontend_info *fi = &ops->info; struct dvb_frontend_internal_info *fi = &ops->info;
ops->init = fdtv_dvb_init; ops->init = fdtv_dvb_init;
ops->sleep = fdtv_sleep; ops->sleep = fdtv_sleep;
@ -174,9 +174,9 @@ void fdtv_frontend_init(struct firedtv *fdtv, const char *name)
case FIREDTV_DVB_S: case FIREDTV_DVB_S:
ops->delsys[0] = SYS_DVBS; ops->delsys[0] = SYS_DVBS;
fi->frequency_min = 950000; fi->frequency_min_hz = 950 * MHz;
fi->frequency_max = 2150000; fi->frequency_max_hz = 2150 * MHz;
fi->frequency_stepsize = 125; fi->frequency_stepsize_hz = 125 * kHz;
fi->symbol_rate_min = 1000000; fi->symbol_rate_min = 1000000;
fi->symbol_rate_max = 40000000; fi->symbol_rate_max = 40000000;
@ -194,9 +194,9 @@ void fdtv_frontend_init(struct firedtv *fdtv, const char *name)
ops->delsys[0] = SYS_DVBS; ops->delsys[0] = SYS_DVBS;
ops->delsys[1] = SYS_DVBS2; ops->delsys[1] = SYS_DVBS2;
fi->frequency_min = 950000; fi->frequency_min_hz = 950 * MHz;
fi->frequency_max = 2150000; fi->frequency_max_hz = 2150 * MHz;
fi->frequency_stepsize = 125; fi->frequency_stepsize_hz = 125 * kHz;
fi->symbol_rate_min = 1000000; fi->symbol_rate_min = 1000000;
fi->symbol_rate_max = 40000000; fi->symbol_rate_max = 40000000;
@ -214,9 +214,9 @@ void fdtv_frontend_init(struct firedtv *fdtv, const char *name)
case FIREDTV_DVB_C: case FIREDTV_DVB_C:
ops->delsys[0] = SYS_DVBC_ANNEX_A; ops->delsys[0] = SYS_DVBC_ANNEX_A;
fi->frequency_min = 47000000; fi->frequency_min_hz = 47 * MHz;
fi->frequency_max = 866000000; fi->frequency_max_hz = 866 * MHz;
fi->frequency_stepsize = 62500; fi->frequency_stepsize_hz = 62500;
fi->symbol_rate_min = 870000; fi->symbol_rate_min = 870000;
fi->symbol_rate_max = 6900000; fi->symbol_rate_max = 6900000;
@ -232,9 +232,9 @@ void fdtv_frontend_init(struct firedtv *fdtv, const char *name)
case FIREDTV_DVB_T: case FIREDTV_DVB_T:
ops->delsys[0] = SYS_DVBT; ops->delsys[0] = SYS_DVBT;
fi->frequency_min = 49000000; fi->frequency_min_hz = 49 * MHz;
fi->frequency_max = 861000000; fi->frequency_max_hz = 861 * MHz;
fi->frequency_stepsize = 62500; fi->frequency_stepsize_hz = 62500;
fi->caps = FE_CAN_INVERSION_AUTO | fi->caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_2_3 | FE_CAN_FEC_2_3 |

View File

@ -1739,9 +1739,9 @@ static const struct dvb_frontend_ops dst_dvbt_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "DST DVB-T", .name = "DST DVB-T",
.frequency_min = 137000000, .frequency_min_hz = 137 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_FEC_AUTO | .caps = FE_CAN_FEC_AUTO |
FE_CAN_QAM_AUTO | FE_CAN_QAM_AUTO |
FE_CAN_QAM_16 | FE_CAN_QAM_16 |
@ -1768,10 +1768,10 @@ static const struct dvb_frontend_ops dst_dvbs_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "DST DVB-S", .name = "DST DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1000, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1 * MHz,
.frequency_tolerance = 29500, .frequency_tolerance_hz = 29500 * kHz,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
/* . symbol_rate_tolerance = ???,*/ /* . symbol_rate_tolerance = ???,*/
@ -1797,9 +1797,9 @@ static const struct dvb_frontend_ops dst_dvbc_ops = {
.delsys = { SYS_DVBC_ANNEX_A }, .delsys = { SYS_DVBC_ANNEX_A },
.info = { .info = {
.name = "DST DVB-C", .name = "DST DVB-C",
.frequency_stepsize = 62500, .frequency_min_hz = 51 * MHz,
.frequency_min = 51000000, .frequency_max_hz = 858 * MHz,
.frequency_max = 858000000, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_FEC_AUTO | .caps = FE_CAN_FEC_AUTO |
@ -1826,9 +1826,9 @@ static const struct dvb_frontend_ops dst_atsc_ops = {
.delsys = { SYS_ATSC }, .delsys = { SYS_ATSC },
.info = { .info = {
.name = "DST ATSC", .name = "DST ATSC",
.frequency_stepsize = 62500, .frequency_min_hz = 510 * MHz,
.frequency_min = 510000000, .frequency_max_hz = 858 * MHz,
.frequency_max = 858000000, .frequency_stepsize_hz = 62500,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB .caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO | FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB

View File

@ -602,8 +602,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops.tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs; card->fe->ops.tuner_ops.calc_regs = thomson_dtt7579_tuner_calc_regs;
card->fe->ops.info.frequency_min = 174000000; card->fe->ops.info.frequency_min_hz = 174 * MHz;
card->fe->ops.info.frequency_max = 862000000; card->fe->ops.info.frequency_max_hz = 862 * MHz;
} }
break; break;
@ -655,8 +655,8 @@ static void frontend_init(struct dvb_bt8xx_card *card, u32 type)
card->fe = dvb_attach(mt352_attach, &advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter); card->fe = dvb_attach(mt352_attach, &advbt771_samsung_tdtc9251dh0_config, card->i2c_adapter);
if (card->fe != NULL) { if (card->fe != NULL) {
card->fe->ops.tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs; card->fe->ops.tuner_ops.calc_regs = advbt771_samsung_tdtc9251dh0_tuner_calc_regs;
card->fe->ops.info.frequency_min = 174000000; card->fe->ops.info.frequency_min_hz = 174 * MHz;
card->fe->ops.info.frequency_max = 862000000; card->fe->ops.info.frequency_max_hz = 862 * MHz;
} }
break; break;

View File

@ -454,10 +454,8 @@ static struct dvb_frontend_ops sx8_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 }, .delsys = { SYS_DVBS, SYS_DVBS2 },
.info = { .info = {
.name = "Digital Devices MaxSX8 MCI DVB-S/S2/S2X", .name = "Digital Devices MaxSX8 MCI DVB-S/S2/S2X",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 0,
.frequency_tolerance = 0,
.symbol_rate_min = 100000, .symbol_rate_min = 100000,
.symbol_rate_max = 100000000, .symbol_rate_max = 100000000,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -42,8 +42,8 @@ static struct zl10353_config mantis_vp3030_config = {
static struct tda665x_config env57h12d5_config = { static struct tda665x_config env57h12d5_config = {
.name = "ENV57H12D5 (ET-50DT)", .name = "ENV57H12D5 (ET-50DT)",
.addr = 0x60, .addr = 0x60,
.frequency_min = 47000000, .frequency_min = 47 * MHz,
.frequency_max = 862000000, .frequency_max = 862 * MHz,
.frequency_offst = 3616667, .frequency_offst = 3616667,
.ref_multiplier = 6, /* 1/6 MHz */ .ref_multiplier = 6, /* 1/6 MHz */
.ref_divider = 100000, /* 1/6 MHz */ .ref_divider = 100000, /* 1/6 MHz */

View File

@ -59,8 +59,6 @@ MODULE_PARM_DESC(debug, "set debug level");
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
#define MHz 1000000
enum mxl5007t_mode { enum mxl5007t_mode {
MxL_MODE_ISDBT = 0, MxL_MODE_ISDBT = 0,
MxL_MODE_DVBT = 1, MxL_MODE_DVBT = 1,

View File

@ -554,9 +554,9 @@ static const struct dvb_frontend_ops mxl111sf_demod_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "MaxLinear MxL111SF DVB-T demodulator", .name = "MaxLinear MxL111SF DVB-T demodulator",
.frequency_min = 177000000, .frequency_min_hz = 177 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 166666, .frequency_stepsize_hz = 166666,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |

View File

@ -1455,9 +1455,9 @@ static const struct dvb_frontend_ops af9005_fe_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "AF9005 USB DVB-T", .name = "AF9005 USB DVB-T",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 250000, .frequency_stepsize_hz = 250 * kHz,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -295,9 +295,9 @@ static const struct dvb_frontend_ops cinergyt2_fe_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = DRIVER_NAME, .name = DRIVER_NAME,
.frequency_min = 174000000, .frequency_min_hz = 174 * MHz,
.frequency_max = 862000000, .frequency_max_hz = 862 * MHz,
.frequency_stepsize = 166667, .frequency_stepsize_hz = 166667,
.caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_1_2 .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_1_2
| FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4
| FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8

View File

@ -230,9 +230,9 @@ static const struct dvb_frontend_ops dtt200u_fe_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "WideView USB DVB-T", .name = "WideView USB DVB-T",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 250000, .frequency_stepsize_hz = 250 * kHz,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -133,10 +133,10 @@ static int jdvbt90502_pll_set_freq(struct jdvbt90502_state *state, u32 freq)
u32 f; u32 f;
deb_fe("%s: freq=%d, step=%d\n", __func__, freq, deb_fe("%s: freq=%d, step=%d\n", __func__, freq,
state->frontend.ops.info.frequency_stepsize); state->frontend.ops.info.frequency_stepsize_hz);
/* freq -> oscilator frequency conversion. */ /* freq -> oscilator frequency conversion. */
/* freq: 473,000,000 + n*6,000,000 [+ 142857 (center freq. shift)] */ /* freq: 473,000,000 + n*6,000,000 [+ 142857 (center freq. shift)] */
f = freq / state->frontend.ops.info.frequency_stepsize; f = freq / state->frontend.ops.info.frequency_stepsize_hz;
/* add 399[1/7 MHZ] = 57MHz for the IF */ /* add 399[1/7 MHZ] = 57MHz for the IF */
f += 399; f += 399;
/* add center frequency shift if necessary */ /* add center frequency shift if necessary */
@ -413,10 +413,9 @@ static const struct dvb_frontend_ops jdvbt90502_ops = {
.delsys = { SYS_ISDBT }, .delsys = { SYS_ISDBT },
.info = { .info = {
.name = "Comtech JDVBT90502 ISDB-T", .name = "Comtech JDVBT90502 ISDB-T",
.frequency_min = 473000000, /* UHF 13ch, center */ .frequency_min_hz = 473000000, /* UHF 13ch, center */
.frequency_max = 767142857, /* UHF 62ch, center */ .frequency_max_hz = 767142857, /* UHF 62ch, center */
.frequency_stepsize = JDVBT90502_PLL_CLK / JDVBT90502_PLL_DIVIDER, .frequency_stepsize_hz = JDVBT90502_PLL_CLK / JDVBT90502_PLL_DIVIDER,
.frequency_tolerance = 0,
/* NOTE: this driver ignores all parameters but frequency. */ /* NOTE: this driver ignores all parameters but frequency. */
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |

View File

@ -349,10 +349,9 @@ static const struct dvb_frontend_ops vp702x_fe_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "Twinhan DST-like frontend (VP7021/VP7020) DVB-S", .name = "Twinhan DST-like frontend (VP7021/VP7020) DVB-S",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 1000, /* kHz for QPSK frontends */ .frequency_stepsize_hz = 1 * MHz,
.frequency_tolerance = 0,
.symbol_rate_min = 1000000, .symbol_rate_min = 1000000,
.symbol_rate_max = 45000000, .symbol_rate_max = 45000000,
.symbol_rate_tolerance = 500, /* ppm */ .symbol_rate_tolerance = 500, /* ppm */

View File

@ -162,9 +162,9 @@ static const struct dvb_frontend_ops vp7045_fe_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "Twinhan VP7045/46 USB DVB-T", .name = "Twinhan VP7045/46 USB DVB-T",
.frequency_min = 44250000, .frequency_min_hz = 44250 * kHz,
.frequency_max = 867250000, .frequency_max_hz = 867250 * kHz,
.frequency_stepsize = 1000, .frequency_stepsize_hz = 1 * kHz,
.caps = FE_CAN_INVERSION_AUTO | .caps = FE_CAN_INVERSION_AUTO |
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |

View File

@ -247,9 +247,9 @@ static const struct dvb_frontend_ops ttusbdecfe_dvbt_ops = {
.delsys = { SYS_DVBT }, .delsys = { SYS_DVBT },
.info = { .info = {
.name = "TechnoTrend/Hauppauge DEC2000-t Frontend", .name = "TechnoTrend/Hauppauge DEC2000-t Frontend",
.frequency_min = 51000000, .frequency_min_hz = 51 * MHz,
.frequency_max = 858000000, .frequency_max_hz = 858 * MHz,
.frequency_stepsize = 62500, .frequency_stepsize_hz = 62500,
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
@ -270,9 +270,9 @@ static const struct dvb_frontend_ops ttusbdecfe_dvbs_ops = {
.delsys = { SYS_DVBS }, .delsys = { SYS_DVBS },
.info = { .info = {
.name = "TechnoTrend/Hauppauge DEC3000-s Frontend", .name = "TechnoTrend/Hauppauge DEC3000-s Frontend",
.frequency_min = 950000, .frequency_min_hz = 950 * MHz,
.frequency_max = 2150000, .frequency_max_hz = 2150 * MHz,
.frequency_stepsize = 125, .frequency_stepsize_hz = 125 * kHz,
.symbol_rate_min = 1000000, /* guessed */ .symbol_rate_min = 1000000, /* guessed */
.symbol_rate_max = 45000000, /* guessed */ .symbol_rate_max = 45000000, /* guessed */
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 | .caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |

View File

@ -317,6 +317,34 @@ struct analog_demod_ops {
struct dtv_frontend_properties; struct dtv_frontend_properties;
/**
* struct dvb_frontend_internal_info - Frontend properties and capabilities
*
* @name: Name of the frontend
* @frequency_min_hz: Minimal frequency supported by the frontend.
* @frequency_max_hz: Minimal frequency supported by the frontend.
* @frequency_stepsize_hz: All frequencies are multiple of this value.
* @frequency_tolerance_hz: Frequency tolerance.
* @symbol_rate_min: Minimal symbol rate, in bauds
* (for Cable/Satellite systems).
* @symbol_rate_max: Maximal symbol rate, in bauds
* (for Cable/Satellite systems).
* @symbol_rate_tolerance: Maximal symbol rate tolerance, in ppm
* (for Cable/Satellite systems).
* @caps: Capabilities supported by the frontend,
* as specified in &enum fe_caps.
*/
struct dvb_frontend_internal_info {
char name[128];
u32 frequency_min_hz;
u32 frequency_max_hz;
u32 frequency_stepsize_hz;
u32 frequency_tolerance_hz;
u32 symbol_rate_min;
u32 symbol_rate_max;
u32 symbol_rate_tolerance;
enum fe_caps caps;
};
/** /**
* struct dvb_frontend_ops - Demodulation information and callbacks for * struct dvb_frontend_ops - Demodulation information and callbacks for
@ -404,7 +432,7 @@ struct dtv_frontend_properties;
* @analog_ops: pointer to &struct analog_demod_ops * @analog_ops: pointer to &struct analog_demod_ops
*/ */
struct dvb_frontend_ops { struct dvb_frontend_ops {
struct dvb_frontend_info info; struct dvb_frontend_internal_info info;
u8 delsys[MAX_DELSYS]; u8 delsys[MAX_DELSYS];