=linux kernel 2.6.* based input core = * [http://elk.informatik.fh-augsburg.de/da/da-24/thesis.pdf topic] explains the linux input core system very well, and also it provides another abstract layer proposals. * [http://www.linuxjournal.com/article/6396?page=0,0 overview] about linux input subsystem. * [http://www.linuxjournal.com/article/6429?page=0,0 user program] to read the inputs. (Actually, [http://cjix.info/blog/misc/internal-input-event-handling-in-the-linux-kernel-and-the-android-userspace/ android] is using this schema, at least in the old version. ) * [http://www.home.unix-ag.org/simon/files/spacenavi.c short code sample] for reading from events =gpio interrupt handling in user space= Two options, we could write a device driver to do it, or we could handle it in user space. * [http://e2e.ti.com/support/embedded/linux/f/354/t/188008.aspx topic] shows it has more delay than handling inside kernel. * [https://www.ridgerun.com/developer/wiki/index.php/How_to_use_GPIO_signals tutorial] shows how to use gpio in user space(interrupt as well). =TLV320AIC3105EVM= * [http://www.ti.com/lit/ug/slau217/slau217.pdf TLV320AIC3105EVM] * [http://www.alsa-project.org/~tiwai/soundsystems.pdf linux sound system] * [https://www.kernel.org/doc/htmldocs/writing-an-alsa-driver.html alsa driver], which we have to fix for 3106 (default doesn't support all functionalities). =driver book= * [http://lwn.net/Kernel/LDD3/ kernel module] =linux tutorial= * [http://www.win.tue.nl/~aeb/linux/lk/lk.html#toc13 tutorial] * [http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#code_ev_io_code_is_this_file_descrip libdev] * [http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:gpio-keys gpio keys]