Acked-by: André Roth <neolynx@xxxxxxxxx> On Tue, 18 Jun 2013 16:19:07 +0200 Guy Martin <gmsoft@xxxxxxxxxxxx> wrote: > Apply polarization parameters even if a satellite number is not provided. This allow > proper setup of the tone and voltage. > > Signed-off-by: Guy Martin <gmsoft@xxxxxxxxxxxx> > --- > lib/include/dvb-fe.h | 1 - > lib/libdvbv5/dvb-sat.c | 57 ++++++++++++++++++++--------------------------- > lib/libdvbv5/dvb-v5-std.c | 9 ++------ > 3 files changed, 26 insertions(+), 41 deletions(-) > > diff --git a/lib/include/dvb-fe.h b/lib/include/dvb-fe.h > index 7352218..b0e2bf9 100644 > --- a/lib/include/dvb-fe.h > +++ b/lib/include/dvb-fe.h > @@ -104,7 +104,6 @@ struct dvb_v5_fe_parms { > unsigned freq_bpf; > > /* Satellite specific stuff, used internally */ > - //enum dvb_sat_polarization pol; > int high_band; > unsigned diseqc_wait; > unsigned freq_offset; > diff --git a/lib/libdvbv5/dvb-sat.c b/lib/libdvbv5/dvb-sat.c > index d00a09e..f84b5a4 100644 > --- a/lib/libdvbv5/dvb-sat.c > +++ b/lib/libdvbv5/dvb-sat.c > @@ -273,7 +273,7 @@ static int dvbsat_diseqc_set_input(struct dvb_v5_fe_parms *parms, uint16_t t) > { > int rc; > enum dvb_sat_polarization pol; > - dvb_fe_retrieve_parm(parms, DTV_POLARIZATION,& pol); > + dvb_fe_retrieve_parm(parms, DTV_POLARIZATION, &pol); > int pol_v = (pol == POLARIZATION_V) || (pol == POLARIZATION_R); > int high_band = parms->high_band; > int sat_number = parms->sat_number; > @@ -284,12 +284,6 @@ static int dvbsat_diseqc_set_input(struct dvb_v5_fe_parms *parms, uint16_t t) > > if (!lnb->rangeswitch) { > /* > - * Bandstacking and single LO may not be using DISEqC > - */ > - if (sat_number < 0) > - return 0; > - > - /* > * Bandstacking switches don't use 2 bands nor use > * DISEqC for setting the polarization. It also doesn't > * use any tone/tone burst > @@ -297,11 +291,6 @@ static int dvbsat_diseqc_set_input(struct dvb_v5_fe_parms *parms, uint16_t t) > pol_v = 0; > high_band = 1; > } else { > - if (sat_number < 0) { > - dvb_logerr("Need a satellite number for DISEqC"); > - return -EINVAL; > - } > - > /* Adjust voltage/tone accordingly */ > if (parms->sat_number < 2) { > vol_high = pol_v ? 0 : 1; > @@ -310,32 +299,35 @@ static int dvbsat_diseqc_set_input(struct dvb_v5_fe_parms *parms, uint16_t t) > } > } > > - rc = dvb_fe_sec_tone(parms, SEC_TONE_OFF); > - if (rc) > - return rc; > - > rc = dvb_fe_sec_voltage(parms, 1, vol_high); > if (rc) > return rc; > - usleep(15 * 1000); > + > + if (parms->sat_number > 0) { > + rc = dvb_fe_sec_tone(parms, SEC_TONE_OFF); > + if (rc) > + return rc; > > - if (!t) > - rc = dvbsat_diseqc_write_to_port_group(parms, &cmd, high_band, > - pol_v, sat_number); > - else > - rc = dvbsat_scr_odu_channel_change(parms, &cmd, high_band, > - pol_v, sat_number, t); > + usleep(15 * 1000); > > - if (rc) { > - dvb_logerr("sending diseq failed"); > - return rc; > - } > - usleep((15 + parms->diseqc_wait) * 1000); > + if (!t) > + rc = dvbsat_diseqc_write_to_port_group(parms, &cmd, high_band, > + pol_v, sat_number); > + else > + rc = dvbsat_scr_odu_channel_change(parms, &cmd, high_band, > + pol_v, sat_number, t); > > - rc = dvb_fe_diseqc_burst(parms, mini_b); > - if (rc) > - return rc; > - usleep(15 * 1000); > + if (rc) { > + dvb_logerr("sending diseq failed"); > + return rc; > + } > + usleep((15 + parms->diseqc_wait) * 1000); > + > + rc = dvb_fe_diseqc_burst(parms, mini_b); > + if (rc) > + return rc; > + usleep(15 * 1000); > + } > > rc = dvb_fe_sec_tone(parms, tone_on ? SEC_TONE_ON : SEC_TONE_OFF); > > @@ -354,7 +346,6 @@ int dvb_sat_set_parms(struct dvb_v5_fe_parms *parms) > dvb_fe_retrieve_parm(parms, DTV_POLARIZATION, &pol); > uint32_t freq; > uint16_t t = 0; > - /*uint32_t voltage = SEC_VOLTAGE_18;*/ > int rc; > > dvb_fe_retrieve_parm(parms, DTV_FREQUENCY, &freq); > diff --git a/lib/libdvbv5/dvb-v5-std.c b/lib/libdvbv5/dvb-v5-std.c > index 5a1854b..574ae1e 100644 > --- a/lib/libdvbv5/dvb-v5-std.c > +++ b/lib/libdvbv5/dvb-v5-std.c > @@ -125,8 +125,6 @@ const unsigned int sys_dvbs_props[] = { > DTV_INVERSION, > DTV_SYMBOL_RATE, > DTV_INNER_FEC, > - /*DTV_VOLTAGE,*/ > - /*DTV_TONE,*/ > DTV_POLARIZATION, > 0 > }; > @@ -136,8 +134,6 @@ const unsigned int sys_dvbs2_props[] = { > DTV_INVERSION, > DTV_SYMBOL_RATE, > DTV_INNER_FEC, > - /*DTV_VOLTAGE,*/ > - /*DTV_TONE,*/ > DTV_MODULATION, > DTV_PILOT, > DTV_ROLLOFF, > @@ -150,9 +146,8 @@ const unsigned int sys_turbo_props[] = { > DTV_INVERSION, > DTV_SYMBOL_RATE, > DTV_INNER_FEC, > - DTV_VOLTAGE, > - DTV_TONE, > DTV_MODULATION, > + DTV_POLARIZATION, > 0 > }; > > @@ -161,8 +156,8 @@ const unsigned int sys_isdbs_props[] = { > DTV_INVERSION, > DTV_SYMBOL_RATE, > DTV_INNER_FEC, > - DTV_VOLTAGE, > DTV_ISDBS_TS_ID_LEGACY, > + DTV_POLARIZATION, > 0 > }; > -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html