summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Stezenbach <js@linuxtv.org>2005-05-16 21:54:14 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-17 07:59:25 -0700
commit778241313819e17de3bdf91523c724b4704402c6 (patch)
treeb0638104fbf6de5a6bfec9ed28d55c33f43e3320
parent3ed8a31cb387b2ae3e4ca508f973931b61e6f6bd (diff)
downloadlinux-3.10-778241313819e17de3bdf91523c724b4704402c6.tar.gz
linux-3.10-778241313819e17de3bdf91523c724b4704402c6.tar.bz2
linux-3.10-778241313819e17de3bdf91523c724b4704402c6.zip
[PATCH] dvb: flexcop: fix MAC address reading
read MAC address directly into dvb_adapter->proposed_mac Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Johannes Stezenbach <js@linuxtv.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/media/dvb/b2c2/flexcop-common.h1
-rw-r--r--drivers/media/dvb/b2c2/flexcop-eeprom.c10
-rw-r--r--drivers/media/dvb/b2c2/flexcop-usb.c3
-rw-r--r--drivers/media/dvb/b2c2/flexcop.c10
4 files changed, 11 insertions, 13 deletions
diff --git a/drivers/media/dvb/b2c2/flexcop-common.h b/drivers/media/dvb/b2c2/flexcop-common.h
index 82b7f8fa7b9..534876d616b 100644
--- a/drivers/media/dvb/b2c2/flexcop-common.h
+++ b/drivers/media/dvb/b2c2/flexcop-common.h
@@ -57,7 +57,6 @@ struct flexcop_device {
int init_state;
/* device information */
- u8 mac_address[6];
int has_32_hw_pid_filter;
flexcop_revision_t rev;
flexcop_device_type_t dev_type;
diff --git a/drivers/media/dvb/b2c2/flexcop-eeprom.c b/drivers/media/dvb/b2c2/flexcop-eeprom.c
index 4dbedd81973..bbcf070a178 100644
--- a/drivers/media/dvb/b2c2/flexcop-eeprom.c
+++ b/drivers/media/dvb/b2c2/flexcop-eeprom.c
@@ -129,8 +129,6 @@ static int flexcop_eeprom_lrc_read(struct flexcop_device *fc, u16 addr, u8 *buf,
return ret;
}
-/* TODO how is it handled in USB */
-
/* JJ's comment about extended == 1: it is not presently used anywhere but was
* added to the low-level functions for possible support of EUI64
*/
@@ -139,18 +137,16 @@ int flexcop_eeprom_check_mac_addr(struct flexcop_device *fc, int extended)
u8 buf[8];
int ret = 0;
- memset(fc->mac_address,0,6);
-
if ((ret = flexcop_eeprom_lrc_read(fc,0x3f8,buf,8,4)) == 0) {
if (extended != 0) {
err("TODO: extended (EUI64) MAC addresses aren't completely supported yet");
ret = -EINVAL;
-/* memcpy(fc->mac_address,buf,3);
+/* memcpy(fc->dvb_adapter.proposed_mac,buf,3);
mac[3] = 0xfe;
mac[4] = 0xff;
- memcpy(&fc->mac_address[3],&buf[5],3); */
+ memcpy(&fc->dvb_adapter.proposed_mac[3],&buf[5],3); */
} else
- memcpy(fc->mac_address,buf,6);
+ memcpy(fc->dvb_adapter.proposed_mac,buf,6);
}
return ret;
}
diff --git a/drivers/media/dvb/b2c2/flexcop-usb.c b/drivers/media/dvb/b2c2/flexcop-usb.c
index 98470ce9a05..20db6329a68 100644
--- a/drivers/media/dvb/b2c2/flexcop-usb.c
+++ b/drivers/media/dvb/b2c2/flexcop-usb.c
@@ -180,7 +180,8 @@ static int flexcop_usb_memory_req(struct flexcop_usb *fc_usb,flexcop_usb_request
static int flexcop_usb_get_mac_addr(struct flexcop_device *fc, int extended)
{
- return flexcop_usb_memory_req(fc->bus_specific,B2C2_USB_READ_V8_MEM,V8_MEMORY_PAGE_FLASH,0x1f010,1,fc->mac_address,6);
+ return flexcop_usb_memory_req(fc->bus_specific,B2C2_USB_READ_V8_MEM,
+ V8_MEMORY_PAGE_FLASH,0x1f010,1,fc->dvb_adapter.proposed_mac,6);
}
#if 0
diff --git a/drivers/media/dvb/b2c2/flexcop.c b/drivers/media/dvb/b2c2/flexcop.c
index 1998267207f..ad590875064 100644
--- a/drivers/media/dvb/b2c2/flexcop.c
+++ b/drivers/media/dvb/b2c2/flexcop.c
@@ -233,16 +233,18 @@ int flexcop_device_initialize(struct flexcop_device *fc)
flexcop_smc_ctrl(fc, 0);
+ if ((ret = flexcop_dvb_init(fc)))
+ goto error;
+
+ /* do the MAC address reading after initializing the dvb_adapter */
if (fc->get_mac_addr(fc, 0) == 0) {
- u8 *b = fc->mac_address;
+ u8 *b = fc->dvb_adapter.proposed_mac;
info("MAC address = %02x:%02x:%02x:%02x:%02x:%02x", b[0],b[1],b[2],b[3],b[4],b[5]);
- flexcop_set_mac_filter(fc,fc->mac_address);
+ flexcop_set_mac_filter(fc,b);
flexcop_mac_filter_ctrl(fc,1);
} else
warn("reading of MAC address failed.\n");
- if ((ret = flexcop_dvb_init(fc)))
- goto error;
if ((ret = flexcop_i2c_init(fc)))
goto error;