aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/sun4m_irq.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-09-19 18:33:21 -0400
committerDavid S. Miller <davem@davemloft.net>2008-09-20 00:18:05 -0400
commit778b1c65bfa2bfe4018394480f97d387e8f00a91 (patch)
treed8c83ee8c31c89cf9cdbc34163c4d284c3801922 /arch/sparc/kernel/sun4m_irq.c
parente7913de9285a4e40733cdabbe62b6f1fa3bbdf01 (diff)
sparc32: Add more extensive documentation of sun4m interrupts.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/sun4m_irq.c')
-rw-r--r--arch/sparc/kernel/sun4m_irq.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/arch/sparc/kernel/sun4m_irq.c b/arch/sparc/kernel/sun4m_irq.c
index c6096fc70c61..ec66d4aab098 100644
--- a/arch/sparc/kernel/sun4m_irq.c
+++ b/arch/sparc/kernel/sun4m_irq.c
@@ -87,6 +87,59 @@ struct sun4m_irq_global __iomem *sun4m_irq_global;
87#define SUN4M_INT_SBUS(x) (1 << (x+7)) 87#define SUN4M_INT_SBUS(x) (1 << (x+7))
88#define SUN4M_INT_VME(x) (1 << (x)) 88#define SUN4M_INT_VME(x) (1 << (x))
89 89
90/* Interrupt level assignment on sun4m:
91 *
92 * level source
93 * ------------------------------------------------------------
94 * 1 softint-1
95 * 2 softint-2, VME/SBUS level 1
96 * 3 softint-3, VME/SBUS level 2
97 * 4 softint-4, onboard SCSI
98 * 5 softint-5, VME/SBUS level 3
99 * 6 softint-6, onboard ETHERNET
100 * 7 softint-7, VME/SBUS level 4
101 * 8 softint-8, onboard VIDEO
102 * 9 softint-9, VME/SBUS level 5, Module Interrupt
103 * 10 softint-10, system counter/timer
104 * 11 softint-11, VME/SBUS level 6, Floppy
105 * 12 softint-12, Keyboard/Mouse, Serial
106 * 13 softint-13, VME/SBUS level 7, ISDN Audio
107 * 14 softint-14, per-processor counter/timer
108 * 15 softint-15, Asynchronous Errors (broadcast)
109 *
110 * Each interrupt source is masked distinctly in the sun4m interrupt
111 * registers. The PIL level alone is therefore ambiguous, since multiple
112 * interrupt sources map to a single PIL.
113 *
114 * This ambiguity is resolved in the 'intr' property for device nodes
115 * in the OF device tree. Each 'intr' property entry is composed of
116 * two 32-bit words. The first word is the IRQ priority value, which
117 * is what we're intersted in. The second word is the IRQ vector, which
118 * is unused.
119 *
120 * The low 4 bits of the IRQ priority indicate the PIL, and the upper
121 * 4 bits indicate onboard vs. SBUS leveled vs. VME leveled. 0x20
122 * means onboard, 0x30 means SBUS leveled, and 0x40 means VME leveled.
123 *
124 * For example, an 'intr' IRQ priority value of 0x24 is onboard SCSI
125 * whereas a value of 0x33 is SBUS level 2. Here are some sample
126 * 'intr' property IRQ priority values from ss4, ss5, ss10, ss20, and
127 * Tadpole S3 GX systems.
128 *
129 * esp: 0x24 onboard ESP SCSI
130 * le: 0x26 onboard Lance ETHERNET
131 * p9100: 0x32 SBUS level 1 P9100 video
132 * bpp: 0x33 SBUS level 2 BPP parallel port device
133 * DBRI: 0x39 SBUS level 5 DBRI ISDN audio
134 * SUNW,leo: 0x39 SBUS level 5 LEO video
135 * pcmcia: 0x3b SBUS level 6 PCMCIA controller
136 * uctrl: 0x3b SBUS level 6 UCTRL device
137 * modem: 0x3d SBUS level 7 MODEM
138 * zs: 0x2c onboard keyboard/mouse/serial
139 * floppy: 0x2b onboard Floppy
140 * power: 0x22 onboard power device (XXX unknown mask bit XXX)
141 */
142
90/* These tables only apply for interrupts greater than 15.. 143/* These tables only apply for interrupts greater than 15..
91 * 144 *
92 * any intr value below 0x10 is considered to be a soft-int 145 * any intr value below 0x10 is considered to be a soft-int