tonyzhong1212 发表于 2025-2-26 13:47

I2C瑙︽懜鏉 姹傚姪

Scope (_SB.PCI0.I2C0)
    {
      Name (I2CN, Zero)
      Name (I2CX, Zero)
      Store (SDS0, I2CN)
      Store (Zero, I2CX)
      OperationRegion (IC0P, PCI_Config, Zero, 0x10)
      Field (IC0P, AnyAcc, NoLock, Preserve)
      {
            Offset (0x04),
                ,   1,
                ,   1,
            ICBM,   1
      }

      OperationRegion (SRRM, GenericSerialBus, Zero, 0x0100)
      Name (SBFS, ResourceTemplate ()
      {
            I2cSerialBusV2 (0x002C, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.PCI0.I2C0",
                0x00, ResourceConsumer, , Exclusive,
                )
      })
      Field (SRRM, BufferAcc, NoLock, Preserve)
      {
            Connection (SBFS),
            Offset (0x20),
            AccessAs (BufferAcc, AttribByte),
            SHID,   8
      }

      Name (SBFE, ResourceTemplate ()
      {
            I2cSerialBusV2 (0x0015, ControllerInitiated, 0x000186A0,
                AddressingMode7Bit, "\\_SB.PCI0.I2C0",
                0x00, ResourceConsumer, , Exclusive,
                )
      })
      Field (SRRM, BufferAcc, NoLock, Preserve)
      {
            Connection (SBFE),
            Offset (0x01),
            AccessAs (BufferAcc, AttribByte),
            EHID,   8
      }

      Method (_REG, 2, NotSerialized)// _REG: Region Availability
      {
            If (LAnd (LEqual (Arg0, 0x09), LEqual (Arg1, One)))
            {
                If (LEqual (ICBM, One))
                {
                  Name (LBUF, Buffer (0x03)
                  {
                         0x00, 0x00, 0x00                              
                  })
                  CreateByteField (LBUF, Zero, LSTS)
                  CreateByteField (LBUF, 0x02, LDAT)
                  Store (SHID, LBUF)
                  If (LEqual (LSTS, Zero))
                  {
                        If (LEqual (LDAT, 0x1E))
                        {
                            Store (0x4E, TPVD)
                        }

                        If (LEqual (LDAT, Zero))
                        {
                            Store (0x53, TPVD)
                        }
                  }

                  Store (EHID, LBUF)
                  If (LEqual (LSTS, Zero))
                  {
                        Store (0x45, TPVD)
                  }
                }
            }
      }

      Device (TPD0)
      {
            Name (_ADR, Zero)// _ADR: Address
            Name (IDAD, Zero)
            Name (HID2, Zero)
            Name (_HID, "SYNA2B60")// _HID: Hardware ID
            Name (_CID, "PNP0C50")// _CID: Compatible ID
            Name (_UID, One)// _UID: Unique ID
            Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
            {
                If (LEqual (Arg0, ToUUID ("3cdff6f7-4267-4555-ad05-b30a3d8938de") /* HID I2C Device */))
                {
                  If (LEqual (Arg2, Zero))
                  {
                        If (LEqual (Arg1, One))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                          
                            })
                        }
                        Else
                        {
                            Return (Buffer (One)
                            {
                                 0x00                                          
                            })
                        }
                  }

                  If (LEqual (Arg2, One))
                  {
                        Return (IDAD)
                  }

                  Return (Buffer (One)
                  {
                         0x00                                          
                  })
                }
                Else
                {
                  Return (Buffer (One)
                  {
                         0x00                                          
                  })
                }
            }

            Method (_STA, 0, NotSerialized)// _STA: Status
            {
                If (LEqual (TPVD, 0x53))
                {
                  Return (0x0F)
                }

                Return (Zero)
            }

            Method (_CRS, 0, Serialized)// _CRS: Current Resource Settings
            {
                Name (SBFI, ResourceTemplate ()
                {
                  Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, ,, _Y3F)
                  {
                        0x00000000,
                  }
                })
                CreateDWordField (SBFI, \_SB.PCI0.I2C0.TPD0._CRS._Y3F._INT, INT1)// _INT: Interrupts
                Store (INUM (0x0603000F), INT1)
                Store (0x20, IDAD)
                Return (ConcatenateResTemplate (SBFS, SBFI))
            }
      }
姹傚姪澶т浆銆傚府蹇 瑙︽懜鏉 鎼炰簡鏃犳暟閬嶄簡 灏辨槸鏃犺В

bboo1218 发表于 2025-2-26 14:28

23年水窝,感谢有你

darling619 发表于 2025-2-26 15:30

我是来抢楼的

vevelog 发表于 2025-2-26 16:31

不错不错,很好哦

xiaoxin3 发表于 2025-2-26 17:31

水窝老用户,支持下

zhulinjushi 发表于 2025-2-26 18:32

来顶下,攒一些窝币

daihangzhou 发表于 2025-2-26 18:32

:lol20年水粉

fhgg888 发表于 2025-2-26 19:32

不错,支持下楼主

xiaoxin5 发表于 2025-2-26 20:33

黑哥的论坛,要支持

seeker 发表于 2025-2-26 21:33

不错不错,很好哦
页: [1] 2 3 4 5 6
查看完整版本: I2C瑙︽懜鏉 姹傚姪