You can of course write drivers for them, but then it's you own abstraction not the standard Linux abstraction. (You can hack something up with IIO for that stuff, but it's not pretty). There is CUSE (part of FUSE) you can do some character devices with.
Existing drivers in Python are messy to use if you our not developer in Python.
The nice thing about in kernel is:
- it's done for you already
- the interface is standard and will work with anything that uses that class of device
- it's langauge agnostic.
The Linux kernel does hardware abstraction. It's not a microkernel. There is limited support for proper userspace drivers.
If you doing some application specific app, that will only work with those chips, use do it in userspace. But to make a normal system for normal use, you want things in kernel like normal.
I feel bad buying things DRM'ed, so I very rarely do, and not for myself. I don't want to fund that. Feels much better funding DRM free work.