Message ID | 1407481598-24598-4-git-send-email-olli.salonen@iki.fi (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Reviewed-by: Antti Palosaari <crope@iki.fi> your code is easy to read! Antti On 08/08/2014 10:06 AM, Olli Salonen wrote: > Read MAC address from the EEPROM. > > Signed-off-by: Olli Salonen <olli.salonen@iki.fi> > --- > drivers/media/usb/dvb-usb/cxusb.c | 37 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 37 insertions(+) > > diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c > index c3a44c7..6abfd6b 100644 > --- a/drivers/media/usb/dvb-usb/cxusb.c > +++ b/drivers/media/usb/dvb-usb/cxusb.c > @@ -673,6 +673,41 @@ 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; > + else > + return -EIO; > + } > + } > +} > + > static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr, > u8 data, int *mem) > { > @@ -2315,6 +2350,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, >
diff --git a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c index c3a44c7..6abfd6b 100644 --- a/drivers/media/usb/dvb-usb/cxusb.c +++ b/drivers/media/usb/dvb-usb/cxusb.c @@ -673,6 +673,41 @@ 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; + else + return -EIO; + } + } +} + static int cxusb_tt_ct2_4650_ci_ctrl(void *priv, u8 read, int addr, u8 data, int *mem) { @@ -2315,6 +2350,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,
Read MAC address from the EEPROM. Signed-off-by: Olli Salonen <olli.salonen@iki.fi> --- drivers/media/usb/dvb-usb/cxusb.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)