diff options
author | Olli Salonen <olli.salonen@iki.fi> | 2014-08-21 09:05:01 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-09-02 15:13:22 -0300 |
commit | a45c2994d5980ad53234589935df15e4f6682704 (patch) | |
tree | cdfe2310e2b5fab5aac6ca87f953c1ebc1a22576 /drivers/media/usb/dvb-usb | |
parent | 6832d11edde3e47ef54e0da5d61380de9043b704 (diff) | |
download | lwn-a45c2994d5980ad53234589935df15e4f6682704.tar.gz lwn-a45c2994d5980ad53234589935df15e4f6682704.zip |
[media] cxusb: Add read_mac_address for TT CT2-4400 and CT2-4650
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>
Diffstat (limited to 'drivers/media/usb/dvb-usb')
-rw-r--r-- | drivers/media/usb/dvb-usb/cxusb.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c index 4ab34590c2c7..187d52942ebb 100644 --- a/drivers/media/usb/dvb-usb/cxusb.c +++ b/drivers/media/usb/dvb-usb/cxusb.c @@ -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, |