Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=86c62fab5aafe33d033d2f616ba8be0527e1c286
Commit:     86c62fab5aafe33d033d2f616ba8be0527e1c286
Parent:     321f69a4c3bb807abdf1fd6329403ec0449a3d78
Author:     Ben Dooks <[EMAIL PROTECTED]>
AuthorDate: Tue Feb 5 00:02:09 2008 +0000
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Mon Feb 11 11:06:28 2008 -0500

    DM9000: Remove barely used SROM array read.
    
    The srom array in the board data is only being used in the device probe
    routines. The probe also only uses the first 6 bytes of an array
    we spend 512ms reading 128 bytes from. Change to reading the
    MAC area directly to the MAC address structure.
    
    As a side product, we rename the read_srom_word to dm9000_read_eeprom
    to bring it into line with the rest of the driver. No change is made
    to the delay in this function, which will be dealt with in a later
    patch.
    
    Signed-off-by: Ben Dooks <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/dm9000.c |   24 +++++++++++-------------
 1 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/drivers/net/dm9000.c b/drivers/net/dm9000.c
index 2e0add0..fa7eb39 100644
--- a/drivers/net/dm9000.c
+++ b/drivers/net/dm9000.c
@@ -132,7 +132,6 @@ typedef struct board_info {
        struct resource *data_req;
        struct resource *irq_res;
 
-       unsigned char srom[128];
        spinlock_t lock;
 
        struct mii_if_info mii;
@@ -166,7 +165,8 @@ static irqreturn_t dm9000_interrupt(int, void *);
 static int dm9000_phy_read(struct net_device *dev, int phyaddr_unsused, int 
reg);
 static void dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int 
reg,
                           int value);
-static u16 read_srom_word(board_info_t *, int);
+
+static void dm9000_read_eeprom(board_info_t *, int addr, unsigned char *to);
 static void dm9000_rx(struct net_device *);
 static void dm9000_hash_table(struct net_device *);
 
@@ -630,13 +630,9 @@ dm9000_probe(struct platform_device *pdev)
        db->mii.mdio_read    = dm9000_phy_read;
        db->mii.mdio_write   = dm9000_phy_write;
 
-       /* Read SROM content */
-       for (i = 0; i < 64; i++)
-               ((u16 *) db->srom)[i] = read_srom_word(db, i);
-
-       /* Set Node Address */
-       for (i = 0; i < 6; i++)
-               ndev->dev_addr[i] = db->srom[i];
+       /* try reading the node address from the attached EEPROM */
+       for (i = 0; i < 6; i += 2)
+               dm9000_read_eeprom(db, i / 2, ndev->dev_addr+i);
 
        if (!is_valid_ether_addr(ndev->dev_addr)) {
                /* try reading from mac */
@@ -998,17 +994,19 @@ dm9000_rx(struct net_device *dev)
 }
 
 /*
- *  Read a word data from SROM
+ *  Read a word data from EEPROM
  */
-static u16
-read_srom_word(board_info_t * db, int offset)
+static void
+dm9000_read_eeprom(board_info_t * db, int offset, unsigned char *to)
 {
        iow(db, DM9000_EPAR, offset);
        iow(db, DM9000_EPCR, EPCR_ERPRR);
        mdelay(8);              /* according to the datasheet 200us should be 
enough,
                                   but it doesn't work */
        iow(db, DM9000_EPCR, 0x0);
-       return (ior(db, DM9000_EPDRL) + (ior(db, DM9000_EPDRH) << 8));
+
+       to[0] = ior(db, DM9000_EPDRL);
+       to[1] = ior(db, DM9000_EPDRH);
 }
 
 #ifdef DM9000_PROGRAM_EEPROM
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to