linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Chris Friesen <cfriesen@nortelnetworks.com>
To: linux-kernel@vger.kernel.org
Cc: becker@scyld.com, root@chaos.analogic.com
Subject: why this 1ms delay in mdio_read?  (cont'd from "are ioctl calls supposed  to take this long?")
Date: Fri, 06 Jul 2001 14:26:02 -0400	[thread overview]
Message-ID: <3B4602BA.91C5DAD3@nortelnetworks.com> (raw)
In-Reply-To: <Pine.LNX.3.95.1010706112457.1472A-100000@chaos.analogic.com>

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...


The chip I'm using is the DEC 21143, which means that we skip over the two
conditional blocks, so \x13the first thing that happens when we call this is to
wait around doing nothing for a millisecond.  Is there some subtle reason why we
would want to wait around for a millisecond before doing anything?

Thanks for your help,

Chris



-- 
Chris Friesen                    | MailStop: 043/33/F10  
Nortel Networks                  | work: (613) 765-0557
3500 Carling Avenue              | fax:  (613) 765-2986
Nepean, ON K2H 8E9 Canada        | email: cfriesen@nortelnetworks.com

  parent reply	other threads:[~2001-07-06 18:26 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-07-06 13:34 are ioctl calls supposed to take this long? Chris Friesen
2001-07-06 14:41 ` Richard B. Johnson
2001-07-06 15:14   ` Chris Friesen
2001-07-06 15:32     ` Richard B. Johnson
2001-07-06 15:40       ` Chris Friesen
2001-07-06 18:26       ` Chris Friesen [this message]
2001-07-06 18:48         ` why this 1ms delay in mdio_read? (cont'd from "are ioctl calls supposed to take this long?") Richard B. Johnson
2001-07-06 19:35           ` Chris Friesen
2001-07-06 21:41         ` Donald Becker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3B4602BA.91C5DAD3@nortelnetworks.com \
    --to=cfriesen@nortelnetworks.com \
    --cc=becker@scyld.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=root@chaos.analogic.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).