summaryrefslogtreecommitdiffstats
path: root/drivers/net/dm9000.c
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-02-05 00:02:20 +0000
committerJeff Garzik <jeff@garzik.org>2008-02-11 11:06:35 -0500
commitbb44fb70e069412c08e07f494b6b4e985f6331ac (patch)
tree7ddccf526057a699184d787d1cb135584f12c83f /drivers/net/dm9000.c
parent073d3f46e5ccc49ede1d3487ed1e71d63d71b750 (diff)
downloadop-kernel-dev-bb44fb70e069412c08e07f494b6b4e985f6331ac.zip
op-kernel-dev-bb44fb70e069412c08e07f494b6b4e985f6331ac.tar.gz
DM9000: Add platform flag for no attached EEPROM
Allow the platform data to specify to the DM9000 driver that there is no posibility of an attached EEPROM on the device, so default all reads to 0xff and ignore any write operations. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/dm9000.c')
-rw-r--r--drivers/net/dm9000.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index d0cd7f9..afd2cf5 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -405,6 +405,9 @@ static int dm9000_get_eeprom(struct net_device *dev,
if ((len & 1) != 0 || (offset & 1) != 0)
return -EINVAL;
+ if (dm->flags & DM9000_PLATF_NO_EEPROM)
+ return -ENOENT;
+
ee->magic = DM_EEPROM_MAGIC;
for (i = 0; i < len; i += 2)
@@ -426,6 +429,9 @@ static int dm9000_set_eeprom(struct net_device *dev,
if ((len & 1) != 0 || (offset & 1) != 0)
return -EINVAL;
+ if (dm->flags & DM9000_PLATF_NO_EEPROM)
+ return -ENOENT;
+
if (ee->magic != DM_EEPROM_MAGIC)
return -EINVAL;
@@ -1100,6 +1106,12 @@ dm9000_read_eeprom(board_info_t *db, int offset, u8 *to)
{
unsigned long flags;
+ if (db->flags & DM9000_PLATF_NO_EEPROM) {
+ to[0] = 0xff;
+ to[1] = 0xff;
+ return;
+ }
+
mutex_lock(&db->addr_lock);
spin_lock_irqsave(&db->lock, flags);
@@ -1134,6 +1146,9 @@ dm9000_write_eeprom(board_info_t *db, int offset, u8 *data)
{
unsigned long flags;
+ if (db->flags & DM9000_PLATF_NO_EEPROM)
+ return;
+
mutex_lock(&db->addr_lock);
spin_lock_irqsave(&db->lock, flags);
OpenPOWER on IntegriCloud