I've got one of those situations whereby I write the offset of the
data I want into an ADDR register and then I have to wait until a
certain bit in a STATUS register switches before I can read the data
out from the DATA register.
This occurs in "regular" driver mode, i.e. in an IOCTL so there's no
worries about being in interrupt mode or anything like that.
Currently I check the bit and if it isn't set I perform an:
msleep_interruptible (1);
before re-reading the register and checking again. This is all wrapped
in a for() loop so it can't go on forever.
The problem I'm having is that I find this is too slow, waiting a
millisecond each time is very long to wait and I'm curious to know if
there are any other units of time I could try that would be smaller.
Grepping around in the kernel sources the obvious
"usleep_interruptible()" doesn't exist :-(
Any ideas?
|