Skip to contentSkip to conversation

input: imon driver for SoundGraph iMON/Antec Veris IR devices

PATCH Superseded Jarod Wilson 1 participant 1 message Dec 31, 2009

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 input: imon driver for SoundGraph iMON/Antec Veris IR devices

This is an input layer driver for the SoundGraph iMON and Antec Veris IR and/or Display (LCD/VFD/VGA touchscreen) devices that do onboard signal decoding.

This driver has been baking for quite a while in the lirc tree, as lirc_imon, which supported both all the current onboard decoding imon devices, as well as some older raw IR ones. I've split support into two different drivers now, this one, a pure input driver with no ties to lirc at all (device can be used with lircd via its userspace devinput driver though) and a pure lirc driver for the older devices that don't do onboard decoding. There's a bit of code duplication between the two, but not much anymore...

I did start using *some* of the new sparse keymap code for this driver, but I quickly found I really needed more access to the raw data (as well as 64-bit hw codes), so I'm really only using sparse_keymap_{setup,free} right now, and I've not had cause to implement {s,g}etkeycode to date. Work for the future.

Heavily tested with an Antec Veris Elite (IR + VFD), lightly tested with an Antec Veris Premiere (IR + LCD), works quite well on both, using both the stock Antec RM-200 remote and a Windows MCE remote (as well as with a Logitech Harmony 880 programmed to emulate the Antec remote).

Version 2 changes:

- Make separate const fops for lcd and vfd character devices
- Move key tables into main driver source
- Remove assorted lirc legacy cruft
- Fix a use-after-free bug
- Reduced printk spew
- Heavily refactor imon_probe() into smaller functions
- Refactor imon_incoming_packet() into smaller functions
- Make tx.busy actually work as intended (with memory barriers)
- Fix key table lookup issue on big-endian systems
- Make variables used as bools actual bool types

Even after all that churn, its still working. :)

---
 drivers/input/misc/Kconfig  |   12 +
 drivers/input/misc/Makefile |    1 +
 drivers/input/misc/imon.c   | 2429 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 2442 insertions(+), 0 deletions(-)
drivers/input/misc/Kconfig +12 -0
index 16ec523..1196110 100644
@@ -319,4 +319,16 @@ config INPUT_PCAP
 	  To compile this driver as a module, choose M here: the
 	  module will be called pcap_keys.
 
+config INPUT_IMON
+	tristate "SoundGraph iMON Receiver and Display"
+	depends on USB_ARCH_HAS_HCD
+	select USB
+	select INPUT_SPARSEKMAP
+	help
+	  Say Y here if you want to use a SoundGraph iMON (aka Antec Veris)
+	  IR Receiver and/or LCD/VFD/VGA display.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called imon.
+
 endif
drivers/input/misc/Makefile +1 -0
index a8b8485..79358ff 100644
@@ -13,6 +13,7 @@ obj-$(CONFIG_INPUT_CM109)		+= cm109.o
 obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
 obj-$(CONFIG_INPUT_DM355EVM)		+= dm355evm_keys.o
 obj-$(CONFIG_HP_SDC_RTC)		+= hp_sdc_rtc.o
+obj-$(CONFIG_INPUT_IMON)		+= imon.o
 obj-$(CONFIG_INPUT_IXP4XX_BEEPER)	+= ixp4xx-beeper.o
 obj-$(CONFIG_INPUT_KEYSPAN_REMOTE)	+= keyspan_remote.o
 obj-$(CONFIG_INPUT_M68K_BEEP)		+= m68kspkr.o
drivers/input/misc/imon.c new file +2429 -0

2,429 lines not on this page · raw message

Signature · 2 lines
Jarod Wilson
[email protected]