vserver 1.9.5.x5
[linux-2.6.git] / drivers / media / dvb / frontends / mt352.c
index 86a4627..270cb9c 100644 (file)
@@ -58,16 +58,26 @@ do {                                                                        \
                if (debug) printk(KERN_DEBUG "mt352: " args); \
 } while (0)
 
-int mt352_write(struct dvb_frontend* fe, u8* ibuf, int ilen)
+static int mt352_single_write(struct dvb_frontend *fe, u8 reg, u8 val)
 {
        struct mt352_state* state = (struct mt352_state*) fe->demodulator_priv;
+       u8 buf[2] = { reg, val };
        struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0,
-                              .buf = ibuf, .len = ilen };
+                              .buf = buf, .len = 2 };
        int err = i2c_transfer(state->i2c, &msg, 1);
        if (err != 1) {
-               dprintk("mt352_write() failed (err = %d)!\n", err);
+               dprintk("mt352_write() to reg %x failed (err = %d)!\n", reg, err);
                return err;
 }
+       return 0; 
+}
+
+int mt352_write(struct dvb_frontend* fe, u8* ibuf, int ilen)
+{
+       int err,i;
+       for (i=0; i < ilen-1; i++)
+               if ((err = mt352_single_write(fe,ibuf[0]+i,ibuf[i+1]))) 
+                       return err;
 
        return 0;
 }
@@ -92,9 +102,10 @@ static u8 mt352_read_register(struct mt352_state* state, u8 reg)
        return b1[0];
 }
 
-
-
-
+u8 mt352_read(struct dvb_frontend *fe, u8 reg)
+{
+       return mt352_read_register(fe->demodulator_priv,reg);
+}
 
 
 
@@ -556,3 +567,4 @@ MODULE_LICENSE("GPL");
 
 EXPORT_SYMBOL(mt352_attach);
 EXPORT_SYMBOL(mt352_write);
+EXPORT_SYMBOL(mt352_read);