- 积分
- 3754
- 最后登录
- 2024-5-11
- 精华
- 0
- 阅读权限
- 70
- 主题
- 96
- UID
- 245936
- 帖子
- 3131
- PB币
- 1231
- 威望
- 417
- 贡献
- 0
- 技术
- 290
- 活跃
- 1629
- UID
- 245936
- 帖子
- 3131
- PB币
- 1231
- 贡献
- 0
- 技术
- 290
- 活跃
- 1629
|
沙发
发表于 2013-1-15 00:50:57
IP属地福建
|只看该作者
补充关于IRQ、FIREWIRE提示、SMBUS、有线网卡内建、SATA内建、Fn键、小太阳、睡眠等
本帖最后由 gcafrk 于 2013-1-27 23:27 编辑
补充关于IRQ、FIREWIRE提示、SMBUS、有线网卡内建、SATA内建、Fn键、小太阳、按电源键睡眠、关机断电、指纹驱动等DSDT修改。
一、关于IRQ
1)HPET的IRQ。由于i5-520m是双核四线程CPU,它需要4个IRQ。我们参考DSDTSE或者DSDT Editor中的说明,添加2个IRQ(0和8),同时也参考其他帖子,再为其增加2个IRQ(11和15),则代码变成:
- Device (HPET)
- {
- Name (_HID, EisaId ("PNP0103"))
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0F)
- }
- Name (_CRS, ResourceTemplate ()
- {
- IRQNoFlags ()
- {0}
- IRQNoFlags ()
- {8}
- IRQNoFlags ()
- {11}
- IRQNoFlags ()
- {15}
- Memory32Fixed (ReadOnly,
- 0xFED00000, // Address Base
- 0x00000400, // Address Length
- )
- })
- }
复制代码 2)RTC的IRQ,需要删除。删除之后的代码如下:
- Device (RTC)
- {
- Name (_HID, EisaId ("PNP0B00"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16,
- 0x0070, // Range Minimum
- 0x0070, // Range Maximum
- 0x01, // Alignment
- 0x02, // Length
- )
- })
- }
复制代码
3)TIMR的IRQ,需要删除。删除之后的代码如下:
- Device (TIMR)
- {
- Name (_HID, EisaId ("PNP0100"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16,
- 0x0040, // Range Minimum
- 0x0040, // Range Maximum
- 0x01, // Alignment
- 0x04, // Length
- )
- })
- }
复制代码
二、Firewire(火线)启动日志FireWire runtime power conservation disabled去除:
1)在IORegistryExplorer中查询到火线Firewire的位置:在EXP5。因此,在DSDT的Device (EXP5)的Method (_PRT, 0, NotSerialized)之前,添加以下代码:
- Device (FRWR)
- {
- Name (_ADR, 0x03)
- Name (_GPE, 0x1A)
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "fwhub",
- Buffer (0x04)
- {
- 0x00, 0x00, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码
2)在Scope (_GPE)中添加以下代码:
- Method (_L1A, 0, NotSerialized)
- {
- Notify (\_SB.PCI0.EXP5.FRWR, Zero)
- }
复制代码
三、SMBUS:在T410的DSDT原始代码中,SMBUS只有以下这些:
- Device (SMBU)
- {
- Name (_ADR, 0x001F0003)
- Name (_S3D, 0x03)
- Name (RID, 0x00)
- }
复制代码
我们需要将其改成:
- Device (SMBU)
- {
- Name (_ADR, 0x001F0003)
- Name (_S3D, 0x03)
- Name (RID, Zero)
- Device (BUS0)
- {
- Name (_CID, "smbus")
- Name (_ADR, Zero)
- Device (DVL0)
- {
- Name (_ADR, 0x57)
- Name (_CID, "diagsvault")
- }
- }
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x04)
- {
- "name",
- Buffer (0x0D)
- {
- "pci8086,3a30"
- },
- "device-id",
- Buffer (0x04)
- {
- 0x30, 0x3A, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码
四、有线网卡内建:
在Device (IGBE)中添加有线网卡内建代码,最终Device (IGBE)如下:
- Device (IGBE)
- {
- Name (_ADR, 0x00190000)
- Name (_S3D, 0x03)
- Name (RID, Zero)
- Name (_PRW, Package (0x02)
- {
- 0x0D,
- 0x04
- })
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x06)
- {
- "built-in",
- Buffer (One)
- {
- 0x01
- },
- "device_type",
- Buffer (0x09)
- {
- "ethernet"
- },
- "name",
- Buffer (0x16)
- {
- "Intel 82577LM Gigabit"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
- }
复制代码
五、SATA内建:
* T410原始DSDT的SATA代码并未带有内建代码,因此,为Device (SAT1)和Device (SAT2)其添加以下部分:
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x2F, 0x3B, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码
六、添加Fn键功能:
* 找到Device (KBD),在其中添加:
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "AAPL,has-embedded-fn-keys",
- Buffer (0x04)
- {
- 0x01, 0x00, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码
七、关于小太阳:
*T410用的是ScrLk和Pause两个按键来调节显示器的亮度。需要在Scope (_SB)中添加以下代码,我添加的位置是在Method (_INI, 0, NotSerialized)之后,在Device (LNKA)之前:
- Device (PNLF)
- {
- Name (_HID, EisaId ("APP0002"))
- Name (_CID, "backlight")
- Name (_UID, 0x0A)
- Name (_STA, 0x0B)
- }
复制代码
八、按电源键睡眠:
* 在Device (SLPB)之前添加:
- Device (PWRB)
- {
- Name (_CID, EisaId ("PNP0C0C"))
- Name (_UID, 0xAA)
- Method (_STA, 0, NotSerialized)
- {
- Return (0x0B)
- }
- }
复制代码
九、关机断电:
在Method (_PTS, 1, NotSerialized)之前,添加以下代码:【注意第一行的0x1030是T410专用的,相关资料看我的日志】
- OperationRegion (PMRS, SystemIO, 0x1030, 0x13)
- Field (PMRS, ByteAcc, NoLock, Preserve)
- {
- , 4,
- SLPE, 1
- }
复制代码
同时,在Method (_PTS, 1, NotSerialized)中的If (LEqual (Arg0, 0x05))里面添加非常关键的两行:
- Store (Zero, SLPE)
- Sleep (0x10)
复制代码 之后,完整的代码如下:- If (LEqual (Arg0, 0x05))
- {
- TRAP ()
- TPHY (0x02)
- AWON (0x05)
- Store (Zero, SLPE)
- Sleep (0x10)
- }
复制代码
十、添加指纹设备:搜索:FPU,在代码:
- Name (_HID, EisaId ("PNP0C04"))
- Name (_CRS, ResourceTemplate ()
- {
- IO (Decode16,
- 0x00F0, // Range Minimum
- 0x00F0, // Range Maximum
- 0x02, // Alignment
- 0x02, // Length
- )
- IRQNoFlags ()
- {13}
- })
复制代码 下面加入内建USB代码:
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x02)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x16, 0x20, 0x00, 0x00
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码
|
-
1
查看全部评分
-
|