General procedure: have a source tree of your Linux kernel, ready for recompiling modules in it. As we'll have to make changes in the hid subsystem, you might want to make sure that hid is compiled as a module and not a static part of the kernel. In the following, '/' means the root of your source tree and '//' the root of your file system.
in /include/linux/hid.h, change the end of the macro IS_INPUT_APPLICATION to (a >= 0xd0002 && a <= 0xd0006).
in a recent hid-core.c (see
here), take the lines that refer to your hardware (check for MOSART, QUANTA, STANTUM or 3M) and put them in /drivers/hid/hid-core.c, replacing lines if necessary.
same in hid-ids.h
put the hid-{yourpanel}.c file in /drivers/hid/
in drivers/hid/Makefile add a line obj-m += hid-{yourpanel}.o
make sure that /Module.symvers exists. Otherwise, the only solution we found is to compile the whole kernel and have the file produced during the process.
in /drivers/hid, 'make -C ../.. SUBDIRS=`pwd` modules'
copy the files hid-{yourpanel}.ko and hid.ko into your OS modules, that is in //lib/modules/2.6.xxx/kernel/drivers/hid. If you don't have hid.ko, this means that hid is not configured as a module but as a static part of the kernel; you will need to change this or compile and install the whole kernel.
load the new module hid-{yourpanel}.ko for the first time: insmod /lib/modules/2.6.xxx/kernel/drivers/hid/hid-{yourpanel}.ko
re-load the modules each time you modify and compile them. For this, you need to unload them (rmmod hid-{yourpanel}, for instance) then reload them (modprobe hid-{yourpanel}). You need to do it at least once for hid; for this, you need to unload all modules that use it ('rmmod hid-{yourpanel} usbhid hid') then load them again ('modprobe hid', 'modprobe usbhid', 'modprobe hid-mosart').
Bookmarks