OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [net/] [auto_irq.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* auto_irq.c: Auto-configure IRQ lines for linux. */
2
/*
3
    Written 1994 by Donald Becker.
4
 
5
    The author may be reached as becker@scyld.com
6
 
7
    This code is a general-purpose IRQ line detector for devices with
8
    jumpered IRQ lines.  If you can make the device raise an IRQ (and
9
    that IRQ line isn't already being used), these routines will tell
10
    you what IRQ line it's using -- perfect for those oh-so-cool boot-time
11
    device probes!
12
 
13
    To use this, first call autoirq_setup(timeout). TIMEOUT is how many
14
    'jiffies' (1/100 sec.) to detect other devices that have active IRQ lines,
15
    and can usually be zero at boot.  'autoirq_setup()' returns the bit
16
    vector of nominally-available IRQ lines (lines may be physically in-use,
17
    but not yet registered to a device).
18
    Next, set up your device to trigger an interrupt.
19
    Finally call autoirq_report(TIMEOUT) to find out which IRQ line was
20
    most recently active.  The TIMEOUT should usually be zero, but may
21
    be set to the number of jiffies to wait for a slow device to raise an IRQ.
22
 
23
    The idea of using the setup timeout to filter out bogus IRQs came from
24
    the serial driver.
25
*/
26
 
27
 
28
#ifdef version
29
static const char *version=
30
"auto_irq.c:v1.11 Donald Becker (becker@scyld.com)";
31
#endif
32
 
33
#include <linux/module.h>
34
#include <linux/sched.h>
35
#include <linux/delay.h>
36
#include <asm/bitops.h>
37
#include <asm/io.h>
38
#include <asm/irq.h>
39
#include <linux/netdevice.h>
40
 
41
static unsigned long irqs;
42
 
43
void autoirq_setup(int waittime)
44
{
45
        irqs = probe_irq_on();
46
}
47
 
48
#define BUSY_LOOP_UNTIL(j) while ((long)(jiffies-(j)) < 0) ;
49
int autoirq_report(int waittime)
50
{
51
        unsigned long delay = jiffies + waittime;
52
        BUSY_LOOP_UNTIL(delay)
53
        return probe_irq_off(irqs);
54
}
55
 
56
EXPORT_SYMBOL(autoirq_setup);
57
EXPORT_SYMBOL(autoirq_report);
58
 
59
 
60
/*
61
 * Local variables:
62
 *  compile-command: "gcc -DKERNEL -Wall -O6 -fomit-frame-pointer -I/usr/src/linux/net/tcp -c auto_irq.c"
63
 *  version-control: t
64
 *  kept-new-versions: 5
65
 *  c-indent-level: 4
66
 *  tab-width: 4
67
 * End:
68
 */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.