How to make the interrupt function working on Windows 10?

Options
joseph_hsiao
joseph_hsiao New Member Posts: 2
edited March 2018 in UP Squared Windows

Hi,

I'm developing Windows 10 device driver on UP2 board. My driver needs the interrupt function to report data to Windows. I set pin16 of HAT40 (GPIO19) as the interrupt pin in BIOS and ASL code:

GpioInt(Level, ActiveLow, Exclusive, PullNone, 0, "\\_SB.GPO0", ) {0x13}

But my driver never receives interrupt with this configuration. Besides, I found no GPIO controller is shown in System devices of Device Manager. Could you please advise how to make the interrupt function working on Windows 10?

Comments

  • joseph_hsiao
    joseph_hsiao New Member Posts: 2
    edited April 2018
    Options
    • After further checking DSDT table, I found why GPIO controller is not shown in Device Manager - the _STA method returns 0x0B.
      Any reason for doing so?

      Device (GPO0)
      {
          Name (_ADR, Zero)  // _ADR: Address
          Name (_HID, "INT3452")  // _HID: Hardware ID
          Name (_CID, "INT3452")  // _CID: Compatible ID
          Name (_DDN, "General Purpose Input/Output (GPIO) Controller - North")  // _DDN: DOS Device Name
          Name (_UID, One)  // _UID: Unique ID
          Name (LINK, "\\_SB.GPO0")
          Name (RBUF, ResourceTemplate ()
          {
              Memory32Fixed (ReadWrite,
                  0x00000000,         // Address Base
                  0x00004000,         // Address Length
                  _Y07)
              Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, )
              {
                  0x0000000E,
              }
          })
          Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
          {
              CreateDWordField (RBUF, \_SB.GPO0._Y07._BAS, B0BA)  // _BAS: Base Address
              CreateDWordField (RBUF, \_SB.GPO0._Y07._LEN, B0LN)  // _LEN: Length
              B0BA = GP0A /* \GP0A */
              B0LN = GP0L /* \GP0L */
              Return (RBUF) /* \_SB_.GPO0.RBUF */
          }
      
          Method (_STA, 0, NotSerialized)  // _STA: Status
          {
              Return (0x0B)
          }
                           :