This also fixes the touch driver issue. I also fixed an unrelated touch driver cleanup issue.
Reference implementations:
Docs: