You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Alder Lake N平台修改ACPI/DSDT设置GPIO默认值求助

关于Zspace Z4Pro NAS硬盘仓默认供电的DSDT修改求助

我买了一款仅面向国内市场的小众NAS(Zspace Z4Pro),它基于Intel i3-N305(Alder Lake N)平台,打算更换ESXi/Proxmox这类第三方系统。目前系统能正常启动运行,但硬盘仓没有供电。

从厂商拿到恢复镜像分析后,发现硬盘仓供电是由OS层的内核模块gpio-z4pro-sata-power.ko通过GPIO控制的(LED同理,暂时不处理)。

已经完成GPIO映射(这些GPIO属于Intel侧,不是SuperIO):

sata0_power_gpio = pin 17 (GPPC_B_17): (MUX UNCLAIMED) INTC1057:00:681 GPIO 0x04000200 0x00000029 0x00000100
sata1_power_gpio = pin 16 (GPPC_B_16): (MUX UNCLAIMED) INTC1057:00:680 GPIO 0x04000200 0x00000028 0x00000100
sata2_power_gpio = pin 8 (GPPC_B_8): (MUX UNCLAIMED) INTC1057:00:672 GPIO 0x04000200 0x00000020 0x00000100
sata3_power_gpio = pin 7 (GPPC_B_7): (MUX UNCLAIMED) INTC1057:00:671 GPIO 0x04000200 0x0000001f 0x00000100

拉低电平就能开启供电:

echo 0 > /sys/class/gpio/gpio681/value

我希望把这个设置改成默认状态,不用依赖OS控制。觉得可以通过修改DSDT实现,已经导出了DSDT,找到了唯一和INTC1057相关的部分,但不知道怎么改:

Scope (_SB)
    {
        Device (GPI0)
        {
            Method (_HID, 0, NotSerialized)  // _HID: Hardware ID
            {
                If ((GPHD == One))
                {
                    Return ("PNP0C02")
                }

                If ((PCHS == 0x03))
                {
                    Return ("INTC1057")
                }
                Else
                {
                    Return ("INTC1055")
                }
            }

            Name (LINK, "\_SB.GPI0")
            Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
            {
                Name (RBFL, ResourceTemplate ()
                {
                    Interrupt (ResourceConsumer, Level, ActiveLow, Shared, ,, _Y41)
                    {
                        0x0000000E,
                    }
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x00010000,         // Address Length
                        _Y42)
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x00010000,         // Address Length
                        _Y43)
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x00010000,         // Address Length
                        _Y44)
                    Memory32Fixed (ReadWrite,
                        0x00000000,         // Address Base
                        0x00010000,         // Address Length
                        _Y45)
                })
                CreateDWordField (RBFL, \_SB.GPI0._CRS._Y41._INT, INTL)  // _INT: Interrupts
                INTL = SGIR /* \SGIR */
                CreateDWordField (RBFL, \_SB.GPI0._CRS._Y42._BAS, CML0)  // _BAS: Base Address
                CML0 = (SBRG + 0x006E0000)
                CreateDWordField (RBFL, \_SB.GPI0._CRS._Y43._BAS, CML1)  // _BAS: Base Address
                CML1 = (SBRG + 0x006D0000)
                CreateDWordField (RBFL, \_SB.GPI0._CRS._Y44._BAS, CML4)  // _BAS: Base Address
                CML4 = (SBRG + 0x006A0000)
                CreateDWordField (RBFL, \_SB.GPI0._CRS._Y45._BAS, CML5)  // _BAS: Base Address
                CML5 = (SBRG + 0x00690000)
                Return (RBFL) /* \_SB_.GPI0._CRS.RBFL */
            }

            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If ((GPHD == One))
                {
                    Return (0x08)
                }

                Return (0x0F)
            }
        }
    }

希望能得到修改建议或指导。我打算先通过grub覆盖DSDT测试修改效果,之后再更新BIOS实现永久生效。

内容的提问来源于stack exchange,提问作者Whiterat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:15:01