svn commit: r190645 - head/sys/dev/ed
Warner Losh
imp at FreeBSD.org
Thu Apr 2 10:15:51 PDT 2009
Author: imp
Date: Thu Apr 2 17:15:49 2009
New Revision: 190645
URL: http://svn.freebsd.org/changeset/base/190645
Log:
Minor DLINK DL100xx support tweaks:
The DIROUT bit difference between the 19 and 22 is annoying. We can
set both bits on both parts without ill effect. Use this trick to
simplify the code.
The DELAYS in the MII bus bit-bang code for the DL100xx parts aren't
needed. Eliminate them.
Modified:
head/sys/dev/ed/dl100xxreg.h
head/sys/dev/ed/if_ed_pccard.c
Modified: head/sys/dev/ed/dl100xxreg.h
==============================================================================
--- head/sys/dev/ed/dl100xxreg.h Thu Apr 2 17:08:54 2009 (r190644)
+++ head/sys/dev/ed/dl100xxreg.h Thu Apr 2 17:15:49 2009 (r190645)
@@ -38,5 +38,6 @@
#define ED_DL100XX_MII_DATAIN 0x10
#define ED_DL100XX_MII_DIROUT_22 0x20
#define ED_DL100XX_MII_DIROUT_19 0x10
+#define ED_DL100XX_MII_DIROUT 0x30
#define ED_DL100XX_MII_DATAOUT 0x40
#define ED_DL100XX_MII_CLK 0x80
Modified: head/sys/dev/ed/if_ed_pccard.c
==============================================================================
--- head/sys/dev/ed/if_ed_pccard.c Thu Apr 2 17:08:54 2009 (r190644)
+++ head/sys/dev/ed/if_ed_pccard.c Thu Apr 2 17:15:49 2009 (r190645)
@@ -701,21 +701,14 @@ ed_pccard_dl100xx_mii_writebits(struct e
{
int i;
- if (sc->chip_type == ED_CHIP_TYPE_DL10022)
- DL100XX_MIISET(sc, ED_DL100XX_MII_DIROUT_22);
- else
- DL100XX_MIISET(sc, ED_DL100XX_MII_DIROUT_19);
-
+ DL100XX_MIISET(sc, ED_DL100XX_MII_DIROUT);
for (i = nbits - 1; i >= 0; i--) {
if ((val >> i) & 1)
DL100XX_MIISET(sc, ED_DL100XX_MII_DATAOUT);
else
DL100XX_MIICLR(sc, ED_DL100XX_MII_DATAOUT);
- DELAY(10);
DL100XX_MIISET(sc, ED_DL100XX_MII_CLK);
- DELAY(10);
DL100XX_MIICLR(sc, ED_DL100XX_MII_CLK);
- DELAY(10);
}
}
@@ -725,19 +718,13 @@ ed_pccard_dl100xx_mii_readbits(struct ed
int i;
u_int val = 0;
- if (sc->chip_type == ED_CHIP_TYPE_DL10022)
- DL100XX_MIICLR(sc, ED_DL100XX_MII_DIROUT_22);
- else
- DL100XX_MIICLR(sc, ED_DL100XX_MII_DIROUT_19);
-
+ DL100XX_MIICLR(sc, ED_DL100XX_MII_DIROUT);
for (i = nbits - 1; i >= 0; i--) {
DL100XX_MIISET(sc, ED_DL100XX_MII_CLK);
- DELAY(10);
val <<= 1;
if (ed_asic_inb(sc, ED_DL100XX_MIIBUS) & ED_DL100XX_MII_DATAIN)
val++;
DL100XX_MIICLR(sc, ED_DL100XX_MII_CLK);
- DELAY(10);
}
return val;
}
More information about the svn-src-head
mailing list