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
相关产品推荐
相关产品推荐

