[media] dvb-core: Fix ISDB-T defaults
authorMauro Carvalho Chehab <mchehab@redhat.com>
Sun, 1 Jan 2012 19:11:15 +0000 (16:11 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 4 Jan 2012 19:29:55 +0000 (17:29 -0200)
using -1 for ISDB-T parameters do the wrong thing. Fix it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/dvb-core/dvb_frontend.c

index c1b3b30a2e6dd5fe49b9bd4e74c356a79c7a2bf5..ea3d0a37a33c7a6defc6d7280aff20220b6e9b90 100644 (file)
@@ -951,17 +951,17 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe)
        c->sectone = SEC_TONE_OFF;
        c->pilot = PILOT_AUTO;
 
-       c->isdbt_partial_reception = -1;
-       c->isdbt_sb_mode = -1;
-       c->isdbt_sb_subchannel = -1;
-       c->isdbt_sb_segment_idx = -1;
-       c->isdbt_sb_segment_count = -1;
-       c->isdbt_layer_enabled = 0x7;
+       c->isdbt_partial_reception = 0;
+       c->isdbt_sb_mode = 0;
+       c->isdbt_sb_subchannel = 0;
+       c->isdbt_sb_segment_idx = 0;
+       c->isdbt_sb_segment_count = 0;
+       c->isdbt_layer_enabled = 0;
        for (i = 0; i < 3; i++) {
                c->layer[i].fec = FEC_AUTO;
                c->layer[i].modulation = QAM_AUTO;
-               c->layer[i].interleaving = -1;
-               c->layer[i].segment_count = -1;
+               c->layer[i].interleaving = 0;
+               c->layer[i].segment_count = 0;
        }
 
        c->isdbs_ts_id = 0;
@@ -1528,28 +1528,28 @@ static int set_delivery_system(struct dvb_frontend *fe, u32 desired_system)
                __func__, delsys, desired_system);
 
        /*
-        * For now, uses it for ISDB-T, DMBTH and DVB-T2
-        * For DVB-S2 and DVB-TURBO, assumes that the DVB-S parameters are enough.
+        * For now, handles ISDB-T calls. More code may be needed here for the
+        * other emulated stuff
         */
        if (type == DVBV3_OFDM) {
-               c->modulation = QAM_AUTO;
-               c->code_rate_HP = FEC_AUTO;
-               c->code_rate_LP = FEC_AUTO;
-               c->transmission_mode = TRANSMISSION_MODE_AUTO;
-               c->guard_interval = GUARD_INTERVAL_AUTO;
-               c->hierarchy = HIERARCHY_AUTO;
-
-               c->isdbt_partial_reception = -1;
-               c->isdbt_sb_mode = -1;
-               c->isdbt_sb_subchannel = -1;
-               c->isdbt_sb_segment_idx = -1;
-               c->isdbt_sb_segment_count = -1;
-               c->isdbt_layer_enabled = 0x7;
-               for (i = 0; i < 3; i++) {
-                       c->layer[i].fec = FEC_AUTO;
-                       c->layer[i].modulation = QAM_AUTO;
-                       c->layer[i].interleaving = -1;
-                       c->layer[i].segment_count = -1;
+               if (c->delivery_system == SYS_ISDBT) {
+                       dprintk("%s() Using defaults for SYS_ISDBT\n",
+                               __func__);
+                       if (!c->bandwidth_hz)
+                               c->bandwidth_hz = 6000000;
+
+                       c->isdbt_partial_reception = 0;
+                       c->isdbt_sb_mode = 0;
+                       c->isdbt_sb_subchannel = 0;
+                       c->isdbt_sb_segment_idx = 0;
+                       c->isdbt_sb_segment_count = 0;
+                       c->isdbt_layer_enabled = 0;
+                       for (i = 0; i < 3; i++) {
+                               c->layer[i].fec = FEC_AUTO;
+                               c->layer[i].modulation = QAM_AUTO;
+                               c->layer[i].interleaving = 0;
+                               c->layer[i].segment_count = 0;
+                       }
                }
        }
        return 0;