• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Portable 5120 (non-backlit) always goes to sleep

cb5890

Member
No, locks at the desktop.
I know that this post is a bit old by now, but if you're still interested, then you could check the A/D line on the hybrid again.

If the A/D line is pulled low to GND, the portable doesn't output the "System going to sleep" message anymore. What should happen is that the power manager should pull SYS_PWR high then and the CPU etc. should shut off. But it turns out that the sleep command isn't send to the power manager in the first place if the result of the ADC of the A/D line in the PMU is just zero, i.e. 0x00. Instead, the CPU kind of loops around in a repetitive pattern that is very likely in the battery manager code.

You can see that very behaviour when messing with the portable emulation in MAME when setting the ADC line to 0x00. There, the CPU will stay on and keep hanging.
I just implemented the necessary logic for the SYS_PWR line in the portable driver for the emulator, since it wasn't implemented before. For any other ADC conversion result, the "going to sleep" message is displayed and then CPU just remains in "jmp $pc" a.k.a. "while (1)" loop while it waits for the PMU to "turn off the lights" :D Afterwards, waking the portable and putting it to sleep again works totally fine.

If the A/D voltage is after all at ~3V, then it could be also the ADC in the power manager being previously damaged from a voltage spike on the A/D line caused by the hybrid. I could imagine that the power manager then just reports 0x00 to the battery manager code, since that's the value the ADC IO memory is initialized with.

Could be also something entirely else though, but I would be also interested to know what's going on :)
 
Top