Scrolling not working after suspend, looking for permanent solution

After some digging I used a combination of your solution and this answer.

On Ubuntu 18.04, I placed the following script in /lib/systemd/system-sleep/psmouse-refresh. This reloads the module after suspend.

#!/bin/bash

# $1 is the state (pre or post)-sleep
if [[ $1 == post ]]; then
    modprobe -r psmouse
    modprobe psmouse
fi

make it executable

chmod +x /lib/systemd/system-sleep/psmouse-refresh

The above worked for me using...

modprobe -r usbhid
modprobe usbhid

I tried a few workarounds. Following worked for me.

Updated the /etc/default/grub parameters as:

GRUB_CMDLINE_LINUX_DEFAULT="psmouse.synaptics_intertouch=0 quiet splash"
GRUB_CMDLINE_LINUX="i8042.reset i8042.nomux i8042.nopnp i8042.noloop"

After this run:

sudo update-grub
sudo reboot

For testing the workaround: Put your system to sleep using following command:

sudo systemctl suspend

Turn on the system and verify the mouse scroll wheel if it works.