1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| // SD Card Device (_ADR 定义设备地址) Device (SDC0) { Name (_ADR, 0x00000000) // SD Host Controller 地址
// 电源管理方法 Method (_PS0, 0, NotSerialized) // D0 进入 { // 电源打开后,等待中断控制器就绪 Sleep(100) // 100ms 等待 }
Method (_PS3, 0, NotSerialized) // D3 退出 { // 电源关闭 }
// ★ 关键: 卡插拔事件通知 Method (_EJ0, 1, NotSerialized) // 卡弹出 { // 通知驱动卡被移除 Notify (SDC0, 0x02) // Device Specific Event }
// 自定义事件处理 Name (_PLD, Package () { Buffer () { ... } // 设备物理位置描述 }) }
// SD Card Slot Device (卡槽设备) Device (SLOT) { Name (_ADR, 0x00010000) // 卡槽地址
// 卡状态变化检测 Method (_STA, 0, NotSerialized) { If (\_SB.CARD.Present) { Return (0x0F) // 设备存在且运行 } Else { Return (0x00) // 设备不存在 } }
// 卡插入事件 (★ 软中断触发点) Method (_ADR, 0, NotSerialized) { // 检测到卡插入 If (\_SB.CARD.Inserted) { // 通知操作系统 Notify (SLOT, 0x81) // 0x81 = Card Inserted Event } } }
// 全局卡状态 Device (CARD) { Name (_HID, "CARD0000") Name (_CID, "CARD_STATUS")
// 卡是否存在 Variable (Present, 0)
// GPIO 检测方法 Method (_CRS, 0, NotSerialized) { Return (Package () { GpioIo (Shared, PullUp, 0, 0, IoRestrictionNone, "\\_SB.GIO0", 0, ResourceConsumer, , ) { 71 } // GPIO 71 }) } }
|