I have a PCI device as follows
DEVPATH=/devices/pci0000:00/0000:00:0c.0/0000:04:00.0
% lspci -s 04:0
04:00.0 Non-VGA unclassified device:
This publishes multiple i2c buses. So am attempting to learn how to translate this to ACPI.
Investigation so far
% cat /sys/bus/pci/devices/0000\:00\:0c.0/firmware_node/path
\_SB_.PCI0.PEX3
So, I create the device within the scope of this device and address as shown by the last part of DEVPATH
Scope (\_SB_.PCI0.PEX3)
{
Device (PD01)
{
Name (_ADR, 0x00040000)
Device (CH00)
{
Name (_ADR, 00)
Name (_HID, "PRP0001")
Name (_STR, Unicode("MUX0"))
Name (_CRS, ResourceTemplate ()
{
I2cSerialBus (0x70, ControllerInitiated, 100000,
AddressingMode7Bit, "\\_SB_.PCI0.PEX3.PD01.CH00", 0x00,
ResourceConsumer,,)
})
Name (_DSD, Package ()
{
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
Package () {
Package (2) { "compatible", "nxp,pca9548" },
}
})
}
}
}
I then compile this with iASL and add the table dynamically using the Loading SSDT with configfs.
When I monitor this using the udevadm monitor
I see that the ACPI device are created, but the PCA9548 is not loaded.
% cat /sys/bus/acpi/devices/PRP0001\:03/path
\_SB_.PCI0.PEX3.OCOR.CH03
Should the kernel driver used for the FPGA do any special handling to allow ACPI to permit the devices below it be discovered?
The FPGA driver is auto-loaded as part of PCI enumeration.
Is there any error in how I have nested the Device definition?
User contributions licensed under CC BY-SA 3.0