Auto-wake behavior when external power is connected
#1
I've noticed that my Pinebook Pro immediately wakes up from a suspend-to-RAM state whenever external power is connected or disconnected. I find this concerning, because this is approximately the last time I would ever want it to wake from sleep mode automatically - particularly since it does this even if the lid is closed at the time, and it's very hard to tell from the outside if the device is asleep or awake with the lid down.

What will it take to change this? I'm bracing myself for the worst, because I can't imagine the OS is involved at all in wake conditions - hence my posting in the hardware section. Is this something that could be fixed in the firmware with a straightforward method, or is it going to require attaching debugging clips to an IC in there somewhere, or what?

It's puzzling to me how this behavior was established in the first place. Is it affecting other units as well, or is ours somehow a fluke?
#2
Just confirmed that our pinebook pro exhibits the same behavior running ayufan's bionic lxde image 0.9.16 using the barrel connector for power.

Also agree that this is sub-optimal.
A64, SOPINE, Rock64, RockPro64, Pinebook1080p, Pinebook Pro, Pinephone, Pinewatch dev kit, and Pinetab (so far)
#3
After having dealt with it for a couple days, this behavior is driving me mad. I can't close the lid and then put it on its charger, because connecting the charger immediately wakes it up. I can't unplug it and stuff it into a backpack, either, because that wakes it up too. If the power flickers in the night, it wakes up. If I jostle the cord by accident and it momentarily loses contact, it wakes up. It's kind of absurd.

Can anyone familiar with the hardware tell us more about why this happens, and perhaps how it might be fixed? Keeping my computers asleep until I purposefully wake them is a rather important part of my use of them.
#4
If I had to guess, I would say it's the PMIC interrupt from the RK808 that notifies the OS of a power management event:

15.2.5.4 INT_STS_MSK_REG2 : Interrupt Status Register #2
Bit 1 PLUG_OUT_INT_IM: Charger plug out event interrupt mask.
1: Mask the interrupt
0: Do not mask the interrupt
Bit 0 PLUG_IN_INT_IM: Charger plug in event interrupt mask
1: Mask the interrupt
0: Do not mask the interruptk

In normal operation you want to handle those to know that a charger is present, in suspend probably those and other PMIC IRQs should be masked.
The question is, where in the software stack is this handled exactly, ATF or Linux?
Come have a chat in the Pine IRC channel >>
#5
(11-08-2019, 12:02 PM)xalius Wrote: If I had to guess, I would say it's the PMIC interrupt from the RK808 that notifies the OS of a power management event:

15.2.5.4 INT_STS_MSK_REG2 : Interrupt Status Register #2
Bit 1 PLUG_OUT_INT_IM: Charger plug out event interrupt mask.
1: Mask the interrupt
0: Do not mask the interrupt
Bit 0 PLUG_IN_INT_IM: Charger plug in event interrupt mask
1: Mask the interrupt
0: Do not mask the interruptk

In normal operation you want to handle those to know that a charger is present, in suspend probably those and other PMIC IRQs should be masked.
The question is, where in the software stack is this handled exactly, ATF or Linux?

Did you ever find a solution here? I'm having the same issue with a really vanilla Manjaro Sway install.  I was hoping it was something in systemd or something?
#6
(11-08-2019, 12:02 PM)xalius Wrote: If I had to guess, I would say it's the PMIC interrupt from the RK808 that notifies the OS of a power management event:

15.2.5.4 INT_STS_MSK_REG2 : Interrupt Status Register #2
Bit 1 PLUG_OUT_INT_IM: Charger plug out event interrupt mask.
1: Mask the interrupt
0: Do not mask the interrupt
Bit 0 PLUG_IN_INT_IM: Charger plug in event interrupt mask
1: Mask the interrupt
0: Do not mask the interruptk

In normal operation you want to handle those to know that a charger is present, in suspend probably those and other PMIC IRQs should be masked.
The question is, where in the software stack is this handled exactly, ATF or Linux?

As far as I can see, it should be done in the RK808 Linux kernel driver.  Haven't had the time to check in detail, but it should be performed in the rk8xx_suspend() and rk8xx_resume() functions.
#7
Good news!  I'll implement the required changes to the RK808 driver, so the respective wakeup events (i.e., interrupts) are ignored, and provide a patched kernel package for testing.  After the issue is confirmed to be resolved, I'll submit the patch for upstreaming into the Linux kernel mainline.
#8
Even better news! Smile

No changes to the RK808 kernel driver are required, simply do the following as root and (un)plugging the charger will no longer wake up a suspended PineBook Pro:

Code:
echo disabled > /sys/devices/platform/dc-charger/power/wakeup

You may also create a sysctl rule and place it in /etc/sysctl.d, to have this configured automatically upon every boot.

Here are more details about the whole ordeal with charger (un)plugging detection.  As already described earlier in this thread, the RK808 PMIC has a very nice built-in feature that senses the charger voltage and generates interrupts upon the charger plug in and plug out events.  However, as visible on page 12 in the PineBook Pro schematicc, there's pretty much no way that anything reaches the RK808's pin #34 (VDC input).  Why would anyone connect capacitors in series with a stabilized DC input?

The ugly fix we're dealing with is that one of the RK3399's GPIO inputs is used for sensing the presence of charger, which makes no sense whatsoever.  That's the "dc-charger" device/node from above, which is just a charger present/absent flag.  This is clearly a bug in the PineBook Pro schematic, and I suppose that it could (and should) be fixed by using a pair of isolation diodes instead of the capacitors.

The proper way, however, is to use the RK808's functionality, instead of abusing a RK3399's GPIO line.  Furthermore, should we start a list of bugs to be fixed in the next PineBook Pro PCB revision?


Possibly Related Threads…
Thread Author Replies Views Last Post
  Increasing the maximum power draw dsimic 12 4,493 06-11-2021, 10:34 AM
Last Post: dsimic
Question External Monitor not Working sciolus 5 959 05-05-2021, 02:05 AM
Last Post: aurora.borealis
  Alternative Power supply options gallomimia 10 5,140 02-13-2021, 04:36 AM
Last Post: angryminer
Question UK Power Supply Feakster 11 5,439 02-09-2021, 12:30 PM
Last Post: dieselnutjob
  Blinking red light for charger, no power-on bifo 9 1,933 01-07-2021, 07:31 AM
Last Post: dsimic
  Pinebook Pro Dock Power Requirements calinb 9 3,131 12-16-2020, 09:24 AM
Last Post: dsimic
Question Why two power ports on a budget laptop?? gurk 58 23,219 11-26-2020, 02:40 PM
Last Post: dsimic
Question Powering off & won't power back on w/o battery disconnect jimsurvak 5 1,652 11-10-2020, 08:42 PM
Last Post: wdt
  Horrible screen flicker/strobe on battery power mattjb 19 9,235 09-14-2020, 03:19 AM
Last Post: m.bakhterev
  PBP Battery issues. Drainage on load with external accessories WhiteDragon 11 6,301 09-02-2020, 05:42 AM
Last Post: Nora No

Forum Jump:


Users browsing this thread: 1 Guest(s)