backport uhid driver from linux 3.8