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

x86系统PCF8574 GPIO扩展器ACPI配置:LED驱动加载失败(-16)求助

PCF8574 GPIO扩展器ACPI配置中LED驱动加载失败(错误码-16)

环境与需求

  • x86架构系统,通过SMBus连接PCF8574 GPIO扩展器
  • GPIO0-3配置为通用GPIO,GPIO4-7用于控制LED
  • 系统:Ubuntu 22.04.03 LTS,内核:HWE 6.5.0-14
  • 通过ACPI ASL编写配置文件,目标是将该配置后续集成至BIOS/EFI中

问题现象

加载自定义ASL文件后,GPIO功能正常:可通过gpioinfo/gpiodetect正常识别、控制,且引脚命名正确。但LED驱动加载时出现资源忙错误:

[   48.736439] ACPI: Host-directed Dynamic ACPI Table Load:
[   48.736468] ACPI: SSDT 0xFFFF8A7BCF287800 000435 (v01 VENDOR EXPANDER 00000001 INTL 20200925)
[   48.747914] pcf857x i2c-PRP0001:03: probed
[   48.748820] leds-gpio: probe of PRP0001:04 failed with error -16

错误码-16对应设备或资源忙,原本预期leds-gpio驱动会直接使用指定的GPIO资源而非占用I2C资源,想确认是否可以这样拆分GPIO扩展器的资源。

当前使用的ASL代码

DefinitionBlock ("expander.aml", "SSDT", 1, "VENDOR", "EXPANDER", 0x00000001)
{
    External (_SB.PC00.SBUS, DeviceObj) 

    Scope (_SB.PC00.SBUS)  // Scope of the I2C controller
    {
        Device (EXIO)  // GPIO expander device
        {
            Name (_HID, "PRP0001")  // Hardware ID
            Name (_DDN, "GPIO-Expander")
            Name (_UID, 3)     // Unique ID
            Name (_CID, "nxp,pcf8574")
            Name (_DSD, Package ()
            {
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "compatible", Package() { "nxp,pcf8574" } },
                    Package () { "gpio-line-names", Package () {
                        "SATA1-Status",
                        "SATA1-Hotplug",
                        "SATA2-Status",
                        "SATA2-Hotplug",
                        }
                    },
                }
            })

            Name (_CRS, ResourceTemplate () {
                I2CSerialBusV2 (
                    0x21,                        // SlaveAddress
                    ControllerInitiated,         // SlaveMode
                    100000,                      // ConnectionSpeed
                    AddressingMode7Bit,          // AddressingMode
                    "\\_SB.PC00.SBUS",           // ResourceSource
                    0x00,                        // ResourceSourceIndex
                    ResourceConsumer,            // ResourceUsage
                    ,                            // DescriptorName
                    Exclusive                    // ShareType
                                                 // VendorData
                )
            })

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }
        }

        Device (LEDS)
        {
            Name (_HID, "PRP0001")
            Name (_DDN, "GPIO LEDs device")
            Name (_UID, 3)
            Name (_CRS, ResourceTemplate () {
                GpioIo (
                    Exclusive,                  // Not shared
                    PullNone,                   // Default off
                    0,                          // Debounce timeout
                    0,                          // Drive strength
                    IoRestrictionOutputOnly,    // Only used as output
                    "\\_SB.PC00.SBUS.EXIO",     // GPIO controller
                    0)                          // Must be 0
                {
                    4,  // LED1
                    5,  // LED2
                    6,  // LED3
                    7,  // LED4                        
                }
            })
            
            Name (_DSD, Package () {
                ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
                Package () {
                    Package () { "led-4", "LED0" },
                    Package () { "led-5", "LED1" },
                    Package () { "led-6", "LED2" },
                    Package () { "led-7", "LED3" },
                },
                
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "compatible", Package() { "gpio-leds" } },
                },
            })
            
            Name (LED0, Package () {
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "label", "led-4" },
                    Package () { "led-max-microamp", 10000 },
                    Package () { "default-state", "off"},
                    Package () { "gpios", Package () {^LEDS, 0, 0, 1}},
                }
            })
            
            Name (LED1, Package () {
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "label", "led-5" },
                    Package () { "led-max-microamp", 10000 },
                    Package () { "default-state", "off"},
                    Package () { "gpios", Package () {^LEDS, 0, 1, 1}},
                }
            })
            
            Name (LED2, Package () {
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "label", "led-6" },
                    Package () { "led-max-microamp", 10000 },
                    Package () { "default-state", "off"},
                    Package () { "gpios", Package () {^LEDS, 0, 2, 1}},
                }
            })
            
            Name (LED3, Package () {
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () {
                    Package () { "label", "led-7" },
                    Package () { "led-max-microamp", 10000 },
                    Package () { "default-state", "off"},
                    Package () { "gpios", Package () {^LEDS, 0, 3, 1}},
                }
            })
        }
    }
}

编辑补充

修改LED属性中的对应引脚索引编号后,问题已解决,感谢0andriy的指点。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:52:03