We have board with GPIO chip connected via I2C bus. So it can’t be detected by PnP. Its interrupt line is connected to System Control Intterrupt (IRQ9). In Linux OS interrupt service routine is simply connected to IRQ9 by request_irq(…) call. In Windows XPE I try to assign interrupt via “IRQConfig=9” in inf-file but it caused conflict with “ACPI-compliant system” device. How to connect this interrupt in Windows XPE driver? Is it possible?
I’m looking at one XP machine with 802801 chipset, it also has IRQ9 assigned to ACPI, this IRQ is shared and level sensitive (translated to vector 433, level 10).
Do you specify your interrupt resource as shared in the INF?
Regards,
– pa
Yes, I set all possible parameters in “IRQConfig” string (L, S, LS). Device Manager always displays resource conflict.
I think that the previous response was probably right. You can confirm it
by looking in the debugger at your resource requirements list. “!devnode
6” will dump it.
However, the better architectural solution here is to have your driver
receive a notification from ACPI, instead of registering for the ACPI
interrupt. You can declare a handler for the GPIO pin in the ACPI namespace
which notifies a device. Your driver would have to be loaded on top of that
device object and it would have to register with ACPI for notifications.
Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group
This post implies no warranties and confers no rights.
--------------------------------------------------------------
wrote in message news:xxxxx@ntdev…
Yes, I set all possible parameters in “IRQConfig” string (L, S, LS). Device
Manager always displays resource conflict.
Jake, thanks a lot for your answer. Is it possible to register with ACPI for notifications from driver? Or it is necessary to create new entries in ACPI table?
Well, you structured your question as either/or, when in fact the answer to
both halves is yes.
You would need to change the ACPI BIOS, in a couple of places, both in the
GPE handling section and in the device enumeration section.
But after that, writing the driver is pretty straightforward. You change
your INF to load your driver on top of ACPI<insertnameofyourdevicehere>.
And you send a query-interface IRP down the stack, looking for ACPI
interfaces. Then you use those to register a “notify handler”. The ASL
“Notify” statement that you placed in the ACPI BIOS’s GPE handler will then
result in your driver’s callback being executed. No interrupt registration
required.
Jake Oshins
Hyper-V I/O Architect (former ACPI guy)
Windows Kernel Group
This post implies no warranties and confers no rights.
--------------------------------------------------------------
wrote in message news:xxxxx@ntdev…
Jake, thanks a lot for your answer. Is it possible to register with ACPI for
notifications from driver? Or it is necessary to create new entries in ACPI
table?
Many thanks, Jake. And the last question: I have found a document “ACPI Driver Interface in Windows Vista” which describes in detail how to register notify handler. Is this information actual for Windows XP/XPE? Or only for Vista and Server 2008?
Sorry, one more question. Is it possible to change ACPI table via registry (HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT) or it is nesessary to modify ACPI tables in BIOS?
Those are extensions to the ones that were available in XP. The XP stuff is
enough for your purposes.
Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group
This post implies no warranties and confers no rights.
wrote in message news:xxxxx@ntdev…
Many thanks, Jake. And the last question: I have found a document “ACPI
Driver Interface in Windows Vista” which describes in detail how to register
notify handler. Is this information actual for Windows XP/XPE? Or only for
Vista and Server 2008?
Yes, it is, though that’s usually too fragile for real products.
Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group
This post implies no warranties and confers no rights.
wrote in message news:xxxxx@ntdev…
Sorry, one more question. Is it possible to change ACPI table via registry
(HKEY_LOCAL_MACHINE\HARDWARE\ACPI\DSDT) or it is nesessary to modify ACPI
tables in BIOS?
Everything is working properly. Notifications come. Jake, many thanks for your help.
I’m glad you were able to get it working with so cursory an explanation. I
figured I was giving you an outline and it would take longer than that to
translate into practice.
Jake Oshins
Hyper-V I/O Architect
Windows Kernel Group
This post implies no warranties and confers no rights.
wrote in message news:xxxxx@ntdev…
Everything is working properly. Notifications come. Jake, many thanks for
your help.