From: Garey Engle on
My company has developed a system board that has a device on it that we need
to have send an interrupt when a paticular event occurs in the system. We
have connected the device to a GPIO line that he we have configured to be
used as an interrupt.

Because the device is non-PCI, I have created an entry in the ACPI table for
it so that Windows will recognize that there is a device that wants to use
the interrupt, IRQ 32.

Even though there is no other device using this interrupt Windows will not
call IRP_MN_START_DEVICE in my driver because Windows reports a resource
conflict, although Windows cannot tell me what device it thinks is causing
the conflict.

I have found that if I change the ACPI entry to request in IRQ less than 16
Windows will assign the resource and send my driver a IRP_MN_START_DEVICE. Is
there some rule in Windows that says that a non-PCI or non-plug and play
device must use an IRQ of 15 or less?

I would connect my device to an IRQ less than 15, but the GPIO lines I have
access to on the chip we are using are only IRQs 24 and higher. What are my
options?

From: Garey Engle on
I have found a way using ACPI to redirect INTIN32 on the I/O APIC to IRQ 5
using an Interrupt Source Override structure. The ACPI documentation says
that this redirects a Global System Interrupt to a bus relative interrupt or
IRQ.

I tried this on my system and it works, but I am still wondering, does
Windows XP limit non-PCI devices to having an IRQ less than 16? I would like
to understand why this doesn't work when I have my device try to claim IRQ 32.

"Garey Engle" wrote:

> My company has developed a system board that has a device on it that we need
> to have send an interrupt when a paticular event occurs in the system. We
> have connected the device to a GPIO line that he we have configured to be
> used as an interrupt.
>
> Because the device is non-PCI, I have created an entry in the ACPI table for
> it so that Windows will recognize that there is a device that wants to use
> the interrupt, IRQ 32.
>
> Even though there is no other device using this interrupt Windows will not
> call IRP_MN_START_DEVICE in my driver because Windows reports a resource
> conflict, although Windows cannot tell me what device it thinks is causing
> the conflict.
>
> I have found that if I change the ACPI entry to request in IRQ less than 16
> Windows will assign the resource and send my driver a IRP_MN_START_DEVICE. Is
> there some rule in Windows that says that a non-PCI or non-plug and play
> device must use an IRQ of 15 or less?
>
> I would connect my device to an IRQ less than 15, but the GPIO lines I have
> access to on the chip we are using are only IRQs 24 and higher. What are my
> options?
>
From: Scott Noone on
You might want to try asking this over on NTDEV
(http://www.osronline.com/page.cfm?name=ListServer). There's a chance that
you might find someone that would know the definitive answer to this.

-scott

--
Scott Noone
Consulting Associate
OSR Open Systems Resources, Inc.
http://www.osronline.com


"Garey Engle" <GareyEngle(a)discussions.microsoft.com> wrote in message
news:AFA71A75-7508-4E2A-833C-9C76A501F9B8(a)microsoft.com...
> I have found a way using ACPI to redirect INTIN32 on the I/O APIC to IRQ 5
> using an Interrupt Source Override structure. The ACPI documentation says
> that this redirects a Global System Interrupt to a bus relative interrupt
> or
> IRQ.
>
> I tried this on my system and it works, but I am still wondering, does
> Windows XP limit non-PCI devices to having an IRQ less than 16? I would
> like
> to understand why this doesn't work when I have my device try to claim IRQ
> 32.
>
> "Garey Engle" wrote:
>
>> My company has developed a system board that has a device on it that we
>> need
>> to have send an interrupt when a paticular event occurs in the system. We
>> have connected the device to a GPIO line that he we have configured to be
>> used as an interrupt.
>>
>> Because the device is non-PCI, I have created an entry in the ACPI table
>> for
>> it so that Windows will recognize that there is a device that wants to
>> use
>> the interrupt, IRQ 32.
>>
>> Even though there is no other device using this interrupt Windows will
>> not
>> call IRP_MN_START_DEVICE in my driver because Windows reports a resource
>> conflict, although Windows cannot tell me what device it thinks is
>> causing
>> the conflict.
>>
>> I have found that if I change the ACPI entry to request in IRQ less than
>> 16
>> Windows will assign the resource and send my driver a
>> IRP_MN_START_DEVICE. Is
>> there some rule in Windows that says that a non-PCI or non-plug and play
>> device must use an IRQ of 15 or less?
>>
>> I would connect my device to an IRQ less than 15, but the GPIO lines I
>> have
>> access to on the chip we are using are only IRQs 24 and higher. What are
>> my
>> options?
>>
From: Garey Engle on
Thanks Scott, I will try that.
After looking at a pinout for the 16 bit ISA slot I think I might be
starting to answer my own question. A 16 bit ISA slot only has IRQs 1 to 15
routed to it.

My device is not PCI or ISA, it's just a single signal attached to a GPIO
line. Looking in the device manager I see that Windows assumes that my device
is on an ISA bus however.

"Scott Noone" wrote:

> You might want to try asking this over on NTDEV
> (http://www.osronline.com/page.cfm?name=ListServer). There's a chance that
> you might find someone that would know the definitive answer to this.
>
> -scott
>
> --
> Scott Noone
> Consulting Associate
> OSR Open Systems Resources, Inc.
> http://www.osronline.com
>
>
> "Garey Engle" <GareyEngle(a)discussions.microsoft.com> wrote in message
> news:AFA71A75-7508-4E2A-833C-9C76A501F9B8(a)microsoft.com...
> > I have found a way using ACPI to redirect INTIN32 on the I/O APIC to IRQ 5
> > using an Interrupt Source Override structure. The ACPI documentation says
> > that this redirects a Global System Interrupt to a bus relative interrupt
> > or
> > IRQ.
> >
> > I tried this on my system and it works, but I am still wondering, does
> > Windows XP limit non-PCI devices to having an IRQ less than 16? I would
> > like
> > to understand why this doesn't work when I have my device try to claim IRQ
> > 32.
> >
> > "Garey Engle" wrote:
> >
> >> My company has developed a system board that has a device on it that we
> >> need
> >> to have send an interrupt when a paticular event occurs in the system. We
> >> have connected the device to a GPIO line that he we have configured to be
> >> used as an interrupt.
> >>
> >> Because the device is non-PCI, I have created an entry in the ACPI table
> >> for
> >> it so that Windows will recognize that there is a device that wants to
> >> use
> >> the interrupt, IRQ 32.
> >>
> >> Even though there is no other device using this interrupt Windows will
> >> not
> >> call IRP_MN_START_DEVICE in my driver because Windows reports a resource
> >> conflict, although Windows cannot tell me what device it thinks is
> >> causing
> >> the conflict.
> >>
> >> I have found that if I change the ACPI entry to request in IRQ less than
> >> 16
> >> Windows will assign the resource and send my driver a
> >> IRP_MN_START_DEVICE. Is
> >> there some rule in Windows that says that a non-PCI or non-plug and play
> >> device must use an IRQ of 15 or less?
> >>
> >> I would connect my device to an IRQ less than 15, but the GPIO lines I
> >> have
> >> access to on the chip we are using are only IRQs 24 and higher. What are
> >> my
> >> options?
> >>