Hi!
Let's restart this discussion and focus on the main roadblock (others are minor details which can be sorted out later).
If it feels like a hack, the key issue seems to me to be the choice of the API to present the GPS data to user space. Right?
Or even more fundamentally, does this belong in the kernel at all?
Yes, it does.
Given that we'd still depend on gpsd and other, proprietary, daemons to actually parse and use (also for control) the plethora of GPS protocols available, it may even be best to just keep it all in user space.
No. We'd want to move away from gpsd in the long term. (/dev/input/mice was in similar situation.)
Now, if we'd ever have a proper GPS framework that handled everything in kernel space (i.e. no more gpsd) then we would be able to write kernel drivers that also take care of PM. But perhaps that's unlikely to ever be realised given the state of things (proprietary protocols, numerous quirky implementations, etc).
That is what needs to happen.
The kernel is probably not the place to be working around issues like that, even if serdev at least allows for such hacks to be fairly isolated in drivers (unlike some of the earlier proposals touching core code).
Oh, kernel is indeed right place to provide hardware abstraction -- and that includes bug workarounds.
We'd like unmodified userspace to run on any supported hardware, remember?
Pavel