Re: How write driver for gamepad, that detected by usbhid but not work correctly?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 29 September 2013 "v1kt0p.rus@xxxxxxxxx" <v1kt0p.rus@xxxxxxxxx> wrote:
> I have "Genesis to USB adapter" and two genesis gamepads. On windows it 
> is work correctly. On linux do not work "left" and "up" buttons on 
> D-pad, and two gamepads appear as one with double buttons.
> At first I tried to write usb driver(usb_register), but when I connect 
> gamepad system choose usbhid driver not my. When I unplug gamepad system 
> call "probe" in my driver, but then immediately call "disconnect". Is 
> there a way to force the system to choose my driver first?
> Than I tried to write hid driver(hid_register_driver), but "probe" is 
> not called. I can not find documentation describing how to make a 
> working driver for hid, it exists at all?
> What is the correct way to write a driver for the gamepad? What am I 
> doing wrong?

You can have a look at all the drivers located under drivers/hid/ for
how they do it.

Two drivers that represent gamepads:
  hid-pl.c
  hid-saitek.c

Depending on how your gamepad shows up when there are two pads connected
you may need to register a second input device to send buttons from the
first pad to first input device, buttons from second to the extra input
device.

A good start to find out what your device does is to enable debugging
in your kernel and cat /sys/kernel/debug/hid/<your device>/events
to determine what happens on button presses.
You can then check how that output matches events sent from /dev/input/event*
matching your device and determine if all that is needed is proper
scancode translation of if more tuning is needed.

Bruno
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux