It's possible to suspend for a specified amount of time, i.e. it'll wake up automatically.
There's a utility called rtcwake for it.
Now how do we do it (I'll write a step by step guide so anyone can use it, even if they're not familiar with cron jobs and the command line.)
Note: I'm running Arch Linux, so some of the commands might differ from your use case.
First we need to install cron if it's not already on the
sudo pacman -S cronie
Now we nee to enable cronie (assuming you run systemd based distribution, if not - use your init system here)
sudo systemctl enable cronie.service
Now we need to create a crontab file from which cron will take what to do, since we need to only run it once during the boot, we can't use any of the files provided by cronie.
sudo touch /etc/crontab
The last thing we have to do is edit the (the -E flag for sudo is used for the program that is gonna run, so that it uses the users configuration and not the configuration that the root user has for it) (I use neovim, you can use whatever you want, if you don't know what to use, use nano)
sudo -E nvim /etc/crontab
Put this into the file:
@reboot root rtcwake -m mem -s 2
Now just reboot
NOTE:
Do not use this if you run some old kernel, like the default one on ubuntu or debian, those 5.4.x kernels don't have proper support for our hardware and it was previously reported here that the laptop doesn't wake up from suspend on old kernels.
***That is not kernel or distro or lenovo fault, that's user error since it's dumb to run new hardware with old kernel.
EXPLANATION:
This will suspend the laptop to memory for 2 seconds during the boot and automatically wake it up before user login.
If you have any questions throw them at me.