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

Apollo Lake: Windows does not respond to power button press

AnthonyC1
Novice
776 Views

We have an motherboard design using the Apollo Lake (E3950) CPU. The soft power button is not working in its usual capacity to trigger a Windows shutdown operation (or sleep, depending on Windows “Choose what power buttons do” configuration). We are using Windows 10 64-bit in UEFI mode.

The button works to shut down the board in Linux, but Windows ignores the button press. The button also works while in BIOS Setup to immediately power down the board.

We asked our BIOS vendor to investigate this issue, and they found Intel document 665880_Apollo_Lake_Workaround_System_Failed_Enter_S3_Pressing_Power_Button.pdf.

The workaround described in the document suggests there may be an APL silicon issue that prevents the power button from generating an SCI, so the workaround connects the power button to APL GPIO_11 and updates the ACPI code to include a second power button device (PWBT) that can be notified (causing Windows to register the button press event) when the GPIO SCI is raised.

Our board does not have the GPIO_11 signal available to connect to, so to demonstrate a working solution to our customer, we modified the workaround to use GPIO_6, which is also in the NORTH GPIO community. GPIO_6 was previously used as one of 3 GPIOs (GPIO_5,6,7) that the BIOS reads early to determine the MEMORY_SPD_DATA index. Since this value and index never change, I hard-coded the value to zero so that GPIO_6 can be re-purposed.

Unfortunately, Windows still does not respond to the power button press. We demonstrated that GPIO_6 was correctly connected and the BIOS ACPI updates were working by using WinDbg to confirm that the ACPI SCI method (_E2B in the workaround document, and _E26 in our GPIO_6 solution variant) triggers when the power button is pressed.

Intel no longer offers interactive support for the Elkhart Lake platform launched in 2016, so they referred me to these forums.

Note that I will be out of the office next week, but will be happy to provide additional information upon my return.

Thanks,

Anthony

0 Kudos
1 Solution
Diego_INTEL
Moderator
731 Views

Hello @AnthonyC1,

 

Thank you for contacting Intel Embedded Community.

 

Yes, just to correct, the interactive support is not available for Apollo Lake, this includes Intel communities, at least I try to help in a way I can.

Elkhart Lake support is available in all services at this moment.

 

I looked internally and for a Windows fix, you may try using the GPIO 31, also, you can turn off the PWR_BTN input to avoid getting two power button events.

 

Best regards,

 

@Diego_INTEL 

View solution in original post

6 Replies
Diego_INTEL
Moderator
732 Views

Hello @AnthonyC1,

 

Thank you for contacting Intel Embedded Community.

 

Yes, just to correct, the interactive support is not available for Apollo Lake, this includes Intel communities, at least I try to help in a way I can.

Elkhart Lake support is available in all services at this moment.

 

I looked internally and for a Windows fix, you may try using the GPIO 31, also, you can turn off the PWR_BTN input to avoid getting two power button events.

 

Best regards,

 

@Diego_INTEL 

AnthonyC1
Novice
696 Views

Diego,

Thank you for looking into this, despite the expired status of interactive support that includes community forums!

I mistakenly mentioned Elkhart Lake. This issue concerns Apollo Lake only.

GPIO_31 (pin H34) is also not accessible on our board, and would likely take a PCB update to connect to. With an ACPI response from GPIO_6 verified, the benefit of trying a different GPIO is not clear to me.

So far, it is looking like your suggestion to turn off the PWR_BTN input is quite promising! Testing is on-going, but I was able to get Windows to shut down by disabling the native power button in the Power Management Config policy (the pwrbtn_dis bit in the APL datasheet and PmConfig->DisableNativePowerButton in the source code).

Perhaps there is some interference between the ACPI Control method power button and the Fixed hardware / native power button types described in the ACPI spec.

I will follow up when I am able to wrap up testing when I return to the office next week.

In the mean time, thank you so much for your helpful suggestions!

Anthony

Diego_INTEL
Moderator
610 Views

Hello @AnthonyC1,

 

You are very welcome, I hope you can solve the issue, let me know for any update if needed so I can try to help.

 

Best regards,

 

@Diego_INTEL 

0 Kudos
AnthonyC1
Novice
523 Views

Diego,

The soft power button is now working to initiate a graceful Windows shutdown or S3 sleep. Great!

Unfortunately, turning off the PWR_BTN input appears to have introduced a related issue in that the power button is no longer able to wake the system from sleep. The system is still able to wake with a mouse click.

With the native power button functionality disabled, perhaps this is expected, but it was not desired.

I noticed Document 665880 specified initializing the GPIO with the "Wake_Disabled" parameter, but changing this to "Wake_Enabled" did not resolve the issue. I'm continuing to investigate this, and would welcome your suggestions.

Thanks,
Anthony

0 Kudos
AnthonyC1
Novice
301 Views

Although the fix introduced a new issue, the original issue of Windows not responding to the power button press was resolved, so I marked the solution as accepted.

Thanks Diego!

0 Kudos
Diego_INTEL
Moderator
290 Views

Hello @AnthonyC1,

 

You are very welcome, I'm glad that at least the initial issue has been addressed.

 

I tried looking and maybe a wake_irq event may help?

https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/general-purpose-i-o--gpio-

https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/device-power-management

 

Right now, to wake the device from a sleep state is possible only with a mouse click?

 

Best regards,

 

@Diego_INTEL 

0 Kudos
Reply