summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/pccard/pcic.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c
index 943bbc0..651c1d5 100644
--- a/sys/pccard/pcic.c
+++ b/sys/pccard/pcic.c
@@ -526,7 +526,7 @@ int
pcic_probe(void)
{
int slotnum, validslots = 0;
- u_int free_irqs;
+ u_int free_irqs, desired_irq;
struct slot *slt;
struct pcic_slot *sp;
unsigned char c;
@@ -716,7 +716,19 @@ pcic_probe(void)
* then attempt to get one.
*/
if (pcic_irq == 0) {
+
pcic_imask = soft_imask;
+
+ /* See if the user has requested a specific IRQ */
+ if (getenv_int("machdep.pccard.pcic_irq", &desired_irq))
+ /* legal IRQ? */
+ if ((desired_irq >= 1) && (desired_irq <= ICU_LEN) &&
+ ((1ul << desired_irq) & soft_imask))
+ pcic_imask = 1ul << desired_irq;
+ else
+ /* illeagal, disable use of IRQ */
+ pcic_imask = 0;
+
pcic_irq = pccard_alloc_intr(free_irqs,
pcicintr, 0, &pcic_imask, NULL);
if (pcic_irq < 0)
OpenPOWER on IntegriCloud