V4L/DVB (7355): tuner-simple: use separate inputs for vsb and qam on tuv1236d & fcv1236d
authorMichael Krufky <mkrufky@linuxtv.org>
Tue, 22 Apr 2008 17:45:55 +0000 (14:45 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:50 +0000 (14:07 -0300)
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/tuner-simple.c

index b658730..8ecd923 100644 (file)
@@ -268,6 +268,37 @@ static int simple_config_lookup(struct dvb_frontend *fe,
 
 /* ---------------------------------------------------------------------- */
 
+static void simple_set_rf_input(struct dvb_frontend *fe,
+                               u8 *config, u8 *cb, unsigned int rf)
+{
+       struct tuner_simple_priv *priv = fe->tuner_priv;
+
+       switch (priv->type) {
+       case TUNER_PHILIPS_TUV1236D:
+               switch (rf) {
+               case 1:
+                       *cb |= 0x08;
+                       break;
+               default:
+                       *cb &= ~0x08;
+                       break;
+               }
+               break;
+       case TUNER_PHILIPS_ATSC:
+               switch (rf) {
+               case 1:
+                       *cb |= 0x01;
+                       break;
+               default:
+                       *cb &= ~0x01;
+                       break;
+               }
+               break;
+       default:
+               break;
+       }
+}
+
 static int simple_std_setup(struct dvb_frontend *fe,
                            struct analog_parameters *params,
                            u8 *config, u8 *cb)
@@ -725,6 +756,24 @@ static void simple_set_dvb(struct dvb_frontend *fe, u8 *buf,
                    params->frequency >= 158870000)
                        buf[3] |= 0x08;
                break;
+       case TUNER_PHILIPS_TUV1236D:
+       case TUNER_PHILIPS_ATSC:
+       {
+               unsigned int new_rf;
+
+               switch (params->u.vsb.modulation) {
+               case QAM_64:
+               case QAM_256:
+                       new_rf = 1;
+                       break;
+               case VSB_8:
+               default:
+                       new_rf = 0;
+                       break;
+               }
+               simple_set_rf_input(fe, &buf[2], &buf[3], new_rf);
+               break;
+       }
        default:
                break;
        }