V4L/DVB (11215): zl10353: add support for Intel CE6230 and Intel CE6231
authorAntti Palosaari <crope@iki.fi>
Wed, 25 Mar 2009 19:48:15 +0000 (16:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:43:40 +0000 (12:43 -0300)
Add chip IDs and configuration registers needed for Intel CE6230 and
Intel CE6231.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/zl10353.c
drivers/media/dvb/frontends/zl10353.h
drivers/media/dvb/frontends/zl10353_priv.h

index b150ed306696fe1941acebb7747931ae9795c3ea..148b6f7f6cb253534b785ef2e6a95769e236fa45 100644 (file)
@@ -572,6 +572,10 @@ static int zl10353_init(struct dvb_frontend *fe)
                zl10353_dump_regs(fe);
        if (state->config.parallel_ts)
                zl10353_reset_attach[2] &= ~0x20;
+       if (state->config.clock_ctl_1)
+               zl10353_reset_attach[3] = state->config.clock_ctl_1;
+       if (state->config.pll_0)
+               zl10353_reset_attach[4] = state->config.pll_0;
 
        /* Do a "hard" reset if not already done */
        if (zl10353_read_register(state, 0x50) != zl10353_reset_attach[1] ||
@@ -614,6 +618,7 @@ struct dvb_frontend *zl10353_attach(const struct zl10353_config *config,
                                    struct i2c_adapter *i2c)
 {
        struct zl10353_state *state = NULL;
+       int id;
 
        /* allocate memory for the internal state */
        state = kzalloc(sizeof(struct zl10353_state), GFP_KERNEL);
@@ -625,7 +630,8 @@ struct dvb_frontend *zl10353_attach(const struct zl10353_config *config,
        memcpy(&state->config, config, sizeof(struct zl10353_config));
 
        /* check if the demod is there */
-       if (zl10353_read_register(state, CHIP_ID) != ID_ZL10353)
+       id = zl10353_read_register(state, CHIP_ID);
+       if ((id != ID_ZL10353) && (id != ID_CE6230) && (id != ID_CE6231))
                goto error;
 
        /* create dvb_frontend */
index 2287bac46243b5aea2991bd06b737e1c413aea5b..6e3ca9eed0484d3eb9fdcfef9cee080a215a821c 100644 (file)
@@ -41,6 +41,10 @@ struct zl10353_config
 
        /* set if i2c_gate_ctrl disable is required */
        u8 disable_i2c_gate_ctrl:1;
+
+       /* clock control registers (0x51-0x54) */
+       u8 clock_ctl_1;  /* default: 0x46 */
+       u8 pll_0;        /* default: 0x15 */
 };
 
 #if defined(CONFIG_DVB_ZL10353) || (defined(CONFIG_DVB_ZL10353_MODULE) && defined(MODULE))
index 055ff1f7e34909f73470566cef7ae0a5eaf357e1..e0dd1d3e09dd85665483afe9bf347d61ea738310 100644 (file)
@@ -22,7 +22,9 @@
 #ifndef _ZL10353_PRIV_
 #define _ZL10353_PRIV_
 
-#define ID_ZL10353     0x14
+#define ID_ZL10353     0x14 /* Zarlink ZL10353 */
+#define ID_CE6230      0x18 /* Intel CE6230 */
+#define ID_CE6231      0x19 /* Intel CE6231 */
 
 #define msb(x) (((x) >> 8) & 0xff)
 #define lsb(x) ((x) & 0xff)
@@ -50,6 +52,10 @@ enum zl10353_reg_addr {
        TPS_RECEIVED_0     = 0x1E,
        TPS_CURRENT_1      = 0x1F,
        TPS_CURRENT_0      = 0x20,
+       CLOCK_CTL_0        = 0x51,
+       CLOCK_CTL_1        = 0x52,
+       PLL_0              = 0x53,
+       PLL_1              = 0x54,
        RESET              = 0x55,
        AGC_TARGET         = 0x56,
        MCLK_RATIO         = 0x5C,