[media] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
authorOlli Salonen <olli.salonen@iki.fi>
Thu, 21 Aug 2014 12:05:01 +0000 (09:05 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 2 Sep 2014 18:13:22 +0000 (15:13 -0300)
Read MAC address from the EEPROM.

This version two corrects a flaw in the result code returning that
did exist in the first version.

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Reviewed-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/dvb-usb/cxusb.c

index 4ab34590c2c78966b103e0a9fc3c0663ebc5812f..187d52942ebb928e274efd0c0d6449740263eb5a 100644 (file)
@@ -673,6 +673,39 @@ static struct rc_map_table rc_map_d680_dmb_table[] = {
        { 0x0025, KEY_POWER },
 };
 
+static int cxusb_tt_ct2_4400_read_mac_address(struct dvb_usb_device *d, u8 mac[6])
+{
+       u8 wbuf[2];
+       u8 rbuf[6];
+       int ret;
+       struct i2c_msg msg[] = {
+               {
+                       .addr = 0x51,
+                       .flags = 0,
+                       .buf = wbuf,
+                       .len = 2,
+               }, {
+                       .addr = 0x51,
+                       .flags = I2C_M_RD,
+                       .buf = rbuf,
+                       .len = 6,
+               }
+       };
+
+       wbuf[0] = 0x1e;
+       wbuf[1] = 0x00;
+       ret = cxusb_i2c_xfer(&d->i2c_adap, msg, 2);
+
+       if (ret == 2) {
+               memcpy(mac, rbuf, 6);
+               return 0;
+       } else {
+               if (ret < 0)
+                       return ret;
+               return -EIO;
+       }
+}
+
 static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr,
                                        u8 data, int *mem)
 {
@@ -2316,6 +2349,8 @@ static struct dvb_usb_device_properties cxusb_tt_ct2_4400_properties = {
        .size_of_priv     = sizeof(struct cxusb_state),
 
        .num_adapters = 1,
+       .read_mac_address = cxusb_tt_ct2_4400_read_mac_address,
+
        .adapter = {
                {
                .num_frontends = 1,