V4L/DVB (7385): tda18271: store agc_mode configuration independently of std_bits
authorMichael Krufky <mkrufky@linuxtv.org>
Tue, 22 Apr 2008 17:46:06 +0000 (14:46 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:52 +0000 (14:07 -0300)
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/frontends/tda18271-fe.c
drivers/media/dvb/frontends/tda18271-tables.c
drivers/media/dvb/frontends/tda18271.h
drivers/media/video/cx23885/cx23885-dvb.c

index fef225abee96b15becac86aab7fd81221c6e16ca..eb44ab71ff74204c6d67f123a5b26d4c6d5e5d64 100644 (file)
@@ -48,7 +48,7 @@ static int tda18271_channel_configuration(struct dvb_frontend *fe,
 
        /* set standard */
        regs[R_EP3]  &= ~0x1f; /* clear std bits */
-       regs[R_EP3]  |= map->std_bits;
+       regs[R_EP3]  |= (map->agc_mode << 3) | map->std;
 
        /* set cal mode to normal */
        regs[R_EP4]  &= ~0x03;
@@ -731,8 +731,8 @@ static int tda18271_tune(struct dvb_frontend *fe,
 {
        struct tda18271_priv *priv = fe->tuner_priv;
 
-       tda_dbg("freq = %d, ifc = %d, bw = %d, std = 0x%02x\n",
-               freq, map->if_freq, bw, map->std_bits);
+       tda_dbg("freq = %d, ifc = %d, bw = %d, agc_mode = %d, std = %d\n",
+               freq, map->if_freq, bw, map->agc_mode, map->std);
 
        tda18271_init(fe);
 
@@ -927,15 +927,17 @@ static int tda18271_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
 /* ------------------------------------------------------------------ */
 
 #define tda18271_update_std(std_cfg, name) do {                                \
-       if (map->std_cfg.if_freq + map->std_cfg.std_bits > 0) {         \
+       if (map->std_cfg.if_freq +                                      \
+               map->std_cfg.agc_mode + map->std_cfg.std > 0) {         \
                tda_dbg("Using custom std config for %s\n", name);      \
                memcpy(&std->std_cfg, &map->std_cfg,                    \
                        sizeof(struct tda18271_std_map_item));          \
        } } while (0)
 
 #define tda18271_dump_std_item(std_cfg, name) do {                     \
-       tda_dbg("(%s) if freq = %d, std bits = 0x%02x\n",               \
-               name, std->std_cfg.if_freq, std->std_cfg.std_bits);     \
+       tda_dbg("(%s) if freq = %d, agc_mode = %d, std = %d\n",         \
+               name, std->std_cfg.if_freq,                             \
+               std->std_cfg.agc_mode, std->std_cfg.std);               \
        } while (0)
 
 static int tda18271_dump_std_map(struct dvb_frontend *fe)
index 462f20b41728badf9750b4ec33b20aa6e07e353f..b402abd15bb2511776b396e332f6bd9d6505a218 100644 (file)
@@ -1187,37 +1187,65 @@ fail:
 /*---------------------------------------------------------------------*/
 
 static struct tda18271_std_map tda18271c1_std_map = {
-       .fm_radio = { .if_freq = 1250, .std_bits = 0x18, .fm_rfn = 1 },
-       .atv_b    = { .if_freq = 6750, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_dk   = { .if_freq = 7750, .std_bits = 0x0f, .fm_rfn = 0 },
-       .atv_gh   = { .if_freq = 7750, .std_bits = 0x0f, .fm_rfn = 0 },
-       .atv_i    = { .if_freq = 7750, .std_bits = 0x0f, .fm_rfn = 0 },
-       .atv_l    = { .if_freq = 7750, .std_bits = 0x0f, .fm_rfn = 0 },
-       .atv_lc   = { .if_freq = 1250, .std_bits = 0x0f, .fm_rfn = 0 },
-       .atv_mn   = { .if_freq = 5750, .std_bits = 0x0d, .fm_rfn = 0 },
-       .atsc_6   = { .if_freq = 3250, .std_bits = 0x1c, .fm_rfn = 0 },
-       .dvbt_6   = { .if_freq = 3300, .std_bits = 0x1c, .fm_rfn = 0 },
-       .dvbt_7   = { .if_freq = 3800, .std_bits = 0x1d, .fm_rfn = 0 },
-       .dvbt_8   = { .if_freq = 4300, .std_bits = 0x1e, .fm_rfn = 0 },
-       .qam_6    = { .if_freq = 4000, .std_bits = 0x1d, .fm_rfn = 0 },
-       .qam_8    = { .if_freq = 5000, .std_bits = 0x1f, .fm_rfn = 0 },
+       .fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0 },
+               /* EP3[4:0] 0x18 */
+       .atv_b    = { .if_freq = 6750, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_dk   = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
+               /* EP3[4:0] 0x0f */
+       .atv_gh   = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
+               /* EP3[4:0] 0x0f */
+       .atv_i    = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
+               /* EP3[4:0] 0x0f */
+       .atv_l    = { .if_freq = 7750, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
+               /* EP3[4:0] 0x0f */
+       .atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 7 },
+               /* EP3[4:0] 0x0f */
+       .atv_mn   = { .if_freq = 5750, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
+               /* EP3[4:0] 0x0d */
+       .atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
+               /* EP3[4:0] 0x1c */
+       .dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
+               /* EP3[4:0] 0x1c */
+       .dvbt_7   = { .if_freq = 3800, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
+               /* EP3[4:0] 0x1d */
+       .dvbt_8   = { .if_freq = 4300, .fm_rfn = 0, .agc_mode = 3, .std = 6 },
+               /* EP3[4:0] 0x1e */
+       .qam_6    = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
+               /* EP3[4:0] 0x1d */
+       .qam_8    = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
+               /* EP3[4:0] 0x1f */
 };
 
 static struct tda18271_std_map tda18271c2_std_map = {
-       .fm_radio = { .if_freq = 1250, .std_bits = 0x18, .fm_rfn = 1 },
-       .atv_b    = { .if_freq = 6000, .std_bits = 0x0d, .fm_rfn = 0 },
-       .atv_dk   = { .if_freq = 6900, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_gh   = { .if_freq = 7100, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_i    = { .if_freq = 7250, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_l    = { .if_freq = 6900, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_lc   = { .if_freq = 1250, .std_bits = 0x0e, .fm_rfn = 0 },
-       .atv_mn   = { .if_freq = 5400, .std_bits = 0x0c, .fm_rfn = 0 },
-       .atsc_6   = { .if_freq = 3250, .std_bits = 0x1c, .fm_rfn = 0 },
-       .dvbt_6   = { .if_freq = 3300, .std_bits = 0x1c, .fm_rfn = 0 },
-       .dvbt_7   = { .if_freq = 3500, .std_bits = 0x1c, .fm_rfn = 0 },
-       .dvbt_8   = { .if_freq = 4000, .std_bits = 0x1d, .fm_rfn = 0 },
-       .qam_6    = { .if_freq = 4000, .std_bits = 0x1d, .fm_rfn = 0 },
-       .qam_8    = { .if_freq = 5000, .std_bits = 0x1f, .fm_rfn = 0 },
+       .fm_radio = { .if_freq = 1250, .fm_rfn = 1, .agc_mode = 3, .std = 0 },
+               /* EP3[4:0] 0x18 */
+       .atv_b    = { .if_freq = 6000, .fm_rfn = 0, .agc_mode = 1, .std = 5 },
+               /* EP3[4:0] 0x0d */
+       .atv_dk   = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_gh   = { .if_freq = 7100, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_i    = { .if_freq = 7250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_l    = { .if_freq = 6900, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_lc   = { .if_freq = 1250, .fm_rfn = 0, .agc_mode = 1, .std = 6 },
+               /* EP3[4:0] 0x0e */
+       .atv_mn   = { .if_freq = 5400, .fm_rfn = 0, .agc_mode = 1, .std = 4 },
+               /* EP3[4:0] 0x0c */
+       .atsc_6   = { .if_freq = 3250, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
+               /* EP3[4:0] 0x1c */
+       .dvbt_6   = { .if_freq = 3300, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
+               /* EP3[4:0] 0x1c */
+       .dvbt_7   = { .if_freq = 3500, .fm_rfn = 0, .agc_mode = 3, .std = 4 },
+               /* EP3[4:0] 0x1c */
+       .dvbt_8   = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
+               /* EP3[4:0] 0x1d */
+       .qam_6    = { .if_freq = 4000, .fm_rfn = 0, .agc_mode = 3, .std = 5 },
+               /* EP3[4:0] 0x1d */
+       .qam_8    = { .if_freq = 5000, .fm_rfn = 0, .agc_mode = 3, .std = 7 },
+               /* EP3[4:0] 0x1f */
 };
 
 /*---------------------------------------------------------------------*/
index a33095757ea8e902797adf0cab4eb27ca7f9db2e..3a743b0f0e8b7137c183426b33e7cf22bf099407 100644 (file)
 
 struct tda18271_std_map_item {
        u16 if_freq;
-       u8 std_bits;
+
+       /* EP3[4:3] */
+       unsigned int agc_mode:2;
+       /* EP3[2:0] */
+       unsigned int std:3;
+       /* EP4[7] */
        unsigned int fm_rfn:1;
 };
 
index 6c21779852fb3cc78e042d51a531c4a9ab152505..22381de7359e287d4fc3def98ac31534913d1924 100644 (file)
@@ -164,8 +164,8 @@ static struct tda829x_config tda829x_no_probe = {
 };
 
 static struct tda18271_std_map hauppauge_tda18271_std_map = {
-       .atsc_6   = { .if_freq = 5380, .std_bits = 0x1b },
-       .qam_6    = { .if_freq = 4000, .std_bits = 0x18 },
+       .atsc_6   = { .if_freq = 5380, .agc_mode = 3, .std = 3 },
+       .qam_6    = { .if_freq = 4000, .agc_mode = 3, .std = 0 },
 };
 
 static struct tda18271_config hauppauge_tda18271_config = {