On Fri, 6 Jul 2001, Chris Friesen wrote:

> The beginning of mdio_read() in tulip.c goes like this:
> 
> static int mdio_read(struct device *dev, int phy_id, int location)
> {
>       struct tulip_private *tp = (struct tulip_private *)dev->priv;
>       int i;
>       int read_cmd = (0xf6 << 10) | (phy_id << 5) | location;
>       int retval = 0;
>       long ioaddr = dev->base_addr;
>       long mdio_addr = ioaddr + CSR9;
> 
>       if (tp->chip_id == LC82C168) {
>               int i = 1000;
>               outl(0x60020000 + (phy_id<<23) + (location<<18), ioaddr + 0xA0);
>               inl(ioaddr + 0xA0);
>               inl(ioaddr + 0xA0);
>               while (--i > 0)
>                       if ( ! ((retval = inl(ioaddr + 0xA0)) & 0x80000000))
>                               return retval & 0xffff;
>               return 0xffff;
>       }
> 
>       if (tp->chip_id == COMET) {
>               if (phy_id == 1) {
>                       if (location < 7)
>                               return inl(ioaddr + 0xB4 + (location<<2));
>                       else if (location == 17)
>                               return inl(ioaddr + 0xD0);
>                       else if (location >= 29 && location <= 31)
>                               return inl(ioaddr + 0xD4 + ((location-29)<<2));
>               }
>               return 0xffff;
>       }
> 
>       mdelay(1); /* One ms delay... */
> 
>       ...rest of code...
> 

What? What kernel version? 
The code here says:
     /* Establish sync by sending at least 32 logic ones */
     for (i = 32; i >=0; i--) {..........}

There is a mdio_delay() between each of the bit operations. This
is required to give time for the chip's internals to set up.

There is no mdelay in any of the code in .../linux/drivers/net/tulip/.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

    I was going to compile a list of innovations that could be
    attributed to Microsoft. Once I realized that Ctrl-Alt-Del
    was handled in the BIOS, I found that there aren't any.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to