Embedded Intel Atom® Processors
Technological Conversations about Intel Atom® Hardware, Software, Firmware, Graphics
1154 Discussions

Adding peripherals to ACPI tables on Apollo Lake

DMora4
Novice
2,204 Views

Hello,

 

I am bringing up a new board containing an Apollo Lake CPU. I have compiled a Yocto distribution according to document #334828. It generally runs well on the board: CPU works, memories, USB, DisplayPort, disk drives, all essential things work.

 

Now I need to add various peripherals we have on the board, mostly connected/initialized through I2C and SPI. I know how to do it with a "classical" device tree, but Apollo Lake uses ACPI tables instead.

 

So I've added necessary packages using instructions from https://github.com/westeri/meta-acpi/, and created a new ASL file containing 1 new device. However when I run acpidump and acpxtract, my new device isn't there, so the corresponding kernel device driver is not loaded as well.

 

I've then tried https://github.com/torvalds/linux/blob/master/Documentation/acpi/ssdt-overlays.txt. Using the recommended efivars method, again everything compiles, but my new device is not visible in acpi dumps. My ASL file compiles; as far as I can say from briefly examining the binary compiled file it seems to be correctly compiled; it is loaded in efivars table; efi subsystem must be generally working well because the efivars table survives a soft reboot; I have added efivars_ssdt kernel line option; dmesg shows various stuff being initialized using DSDT and SSTD data; just my new device is not visible anywhere.

 

What should I do to make the ACPI subsystem aware of my new device? It looks to me that I'm following all the instructions and everything compiles and runs successfully, except the system still just ignores my data.

 

1 Solution
DMora4
Novice
1,396 Views

Hello Maecenas,

 

Thank you for your reply. In the meantime we've managed to fix the issue on our own. It turned out that Intel's Yocto distribution, while reasonably up to date and with support for UEFI BIOS and EFI variables, didn't contain code that would read EFI variables and append them to runtime SSDT tables. The "fix" was simply to switch to a Linux distribution with a bit more recent kernel.

 

Best regards,

Dubravko

View solution in original post

3 Replies
CarlosAM_INTEL
Moderator
1,397 Views

Hello, @DMora4​:

 

Thank you for contacting Intel Embedded Community.

 

In order to be on the same page, could you please inform us the  part number and SKU of the processor related to your question?

 

Also, could you please clarify if the design related to this thread has been developed by you or by a third party company? In case that it is a third-party design, please give us the name of the manufacturer, the model, part number , and where is stated the documentation related to it.

 

Waiting for the information that should answer these questions.

 

Best regards,

@Mæcenas_INTEL​.  ​

0 Kudos
DMora4
Novice
1,397 Views

Hello Maecenas,

 

Thank you for your reply. In the meantime we've managed to fix the issue on our own. It turned out that Intel's Yocto distribution, while reasonably up to date and with support for UEFI BIOS and EFI variables, didn't contain code that would read EFI variables and append them to runtime SSDT tables. The "fix" was simply to switch to a Linux distribution with a bit more recent kernel.

 

Best regards,

Dubravko

CarlosAM_INTEL
Moderator
1,397 Views

​Hello, @DMora4​:

 

Thanks for share your solution.

 

Best regards,

@Mæcenas_INTEL​.

0 Kudos
Reply