Please merge my contributions

The existing driver doesn't seem to be able starting properly, it fails in finding HID info.
I fixed that part in hid.c
Still is preliminary code