Prev: 0x27:CM_PROB_DRIVER_FAILED OnlyIn Server2008&Vista64 worksIn Win7-
Next: Bug Check While Unloading Driver
From: Garey Engle on 29 Mar 2010 11:54 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 30 Mar 2010 09:32 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 30 Mar 2010 11:28 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 30 Mar 2010 12:49
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? > >> |