On a recent version of kernels, "intel_ipts" module will be used by companion
driver "ipts_surface". So, unload the module first on unloading whole IPTS
modules and load the module last on loading whole IPTS modules.
Otherwise, unloading "intel_ipts" will fail.
Unloading the module will automatically unload "intel_ipts" module but
I did not remove the line for clarity and for kernels that don't have
the companion driver ("ipts_surface").
On my 5.3 kernel:
$ lsmod | grep -e "Used by" -e "ipts"
Module Size Used by
ipts_surface 16384 0
intel_ipts 45056 1 ipts_surface
hid 143360 6 i2c_hid,usbhid,hid_multitouch,hid_sensor_hub,intel_ipts,hid_generic
mei 122880 5 mei_hdcp,intel_ipts,mei_me
i915 2273280 18 intel_ipts
Tested on kernel 5.3.12 and 4.19.85 that use the "ipts_surface" companion driver with IPTS lines
uncommented on sleep script.