Skip to content

Commit

Permalink
dmfe: enforce consistent timing delay.
Browse files Browse the repository at this point in the history
The driver does not always use the same timing for what looks like
the same operations.

- DCR0
  Use the same udelay everywhere for reset. Upper bound is 100 us.
- DCR9
  Use 5us delay for srom clock. 1us delay for phy_write_1bit (writes
  PHY_DATA_[01]) are not changed as they stay withing a 2,5MHz MDIO
  clock range.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Reviewed-by: Grant Grundler <grundler@parisc-linux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
françois romieu authored and David S. Miller committed Apr 18, 2012
1 parent 584c5e2 commit 0c20494
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/net/ethernet/dec/tulip/dmfe.c
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,7 @@ static int dmfe_stop(struct DEVICE *dev)

/* Reset & stop DM910X board */
dw32(DCR0, DM910X_RESET);
udelay(5);
udelay(100);
phy_write(ioaddr, db->phy_addr, 0, 0x8000, db->chip_id);

/* free interrupt */
Expand Down Expand Up @@ -1601,7 +1601,9 @@ static u16 read_srom_word(void __iomem *ioaddr, int offset)
int i;

dw32(DCR9, CR9_SROM_READ);
udelay(5);
dw32(DCR9, CR9_SROM_READ | CR9_SRCS);
udelay(5);

/* Send the Read Command 110b */
srom_clk_write(ioaddr, SROM_DATA_1);
Expand All @@ -1615,6 +1617,7 @@ static u16 read_srom_word(void __iomem *ioaddr, int offset)
}

dw32(DCR9, CR9_SROM_READ | CR9_SRCS);
udelay(5);

for (i = 16; i > 0; i--) {
dw32(DCR9, CR9_SROM_READ | CR9_SRCS | CR9_SRCLK);
Expand All @@ -1626,6 +1629,7 @@ static u16 read_srom_word(void __iomem *ioaddr, int offset)
}

dw32(DCR9, CR9_SROM_READ);
udelay(5);
return srom_data;
}

Expand Down

0 comments on commit 0c20494

Please sign in to comment.