Re: [RFC ebeam PATCH 3/3] input: misc: New USB eBeam input driver.

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

 



Hi Yann,

On Sat, Jul 28, 2012 at 02:02:34AM +0200, Yann Cantin wrote:
> 
> Signed-off-by: Yann Cantin <yann.cantin@xxxxxxxxxxx>
> ---
>  drivers/input/misc/Kconfig  |   21 +
>  drivers/input/misc/Makefile |    1 +
>  drivers/input/misc/ebeam.c  |  895 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 917 insertions(+)
>  create mode 100644 drivers/input/misc/ebeam.c
> 
> diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
> index 7faf4a7..0e798cb 100644
> --- a/drivers/input/misc/Kconfig
> +++ b/drivers/input/misc/Kconfig
> @@ -73,6 +73,27 @@ config INPUT_BMA150
>  	  To compile this driver as a module, choose M here: the
>  	  module will be called bma150.
>  
> +config INPUT_EBEAM_USB
> +	tristate "USB eBeam driver"
> +	depends on USB_ARCH_HAS_HCD
> +	select USB
> +	help
> +	  Say Y here if you have a USB eBeam pointing device and want to
> +	  use it without any proprietary user space tools.
> +
> +	  Have a look at <http://sourceforge.net/projects/ebeam/> for
> +	  a usage description and the required user-space tools.
> +
> +	  Currently, only the Classic Projection model is supported.
> +
> +	  To compile this driver as a module, choose M here: the
> +	  module will be called ebeam.
> +
> +config INPUT_EBEAM_USB_CLASSIC
> +	bool "eBeam Classic Projection support"
> +	depends on INPUT_EBEAM_USB
> +	default y

Will there be support for other eBean devices (are there any)? If there
will how soon? How different are they? If not the we probably do not
need this INPUT_EBEAM_USB_CLASSIC selector.

> +
>  config INPUT_PCSPKR
>  	tristate "PC Speaker support"
>  	depends on PCSPKR_PLATFORM
> diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
> index f55cdf4..4b5e4a9 100644
> --- a/drivers/input/misc/Makefile
> +++ b/drivers/input/misc/Makefile
> @@ -23,6 +23,7 @@ obj-$(CONFIG_INPUT_CMA3000_I2C)		+= cma3000_d0x_i2c.o
>  obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
>  obj-$(CONFIG_INPUT_DA9052_ONKEY)	+= da9052_onkey.o
>  obj-$(CONFIG_INPUT_DM355EVM)		+= dm355evm_keys.o
> +obj-$(CONFIG_INPUT_EBEAM_USB)		+= ebeam.o
>  obj-$(CONFIG_INPUT_GP2A)		+= gp2ap002a00f.o
>  obj-$(CONFIG_INPUT_GPIO_TILT_POLLED)	+= gpio_tilt_polled.o
>  obj-$(CONFIG_HP_SDC_RTC)		+= hp_sdc_rtc.o
> diff --git a/drivers/input/misc/ebeam.c b/drivers/input/misc/ebeam.c
> new file mode 100644
> index 0000000..a18615a
> --- /dev/null
> +++ b/drivers/input/misc/ebeam.c
> @@ -0,0 +1,895 @@
> +/******************************************************************************
> + *
> + * eBeam driver
> + *
> + * Copyright (C) 2012 Yann Cantin (yann.cantin@xxxxxxxxxxx)
> + *
> + *	This program is free software; you can redistribute it and/or
> + *	modify it under the terms of the GNU General Public License as
> + *	published by the Free Software Foundation; either version 2 of the
> + *	License, or (at your option) any later version.
> + *
> + *  based on
> + *
> + *	usbtouchscreen.c by Daniel Ritz <daniel.ritz@xxxxxx>
> + *	aiptek.c (sysfs/settings) by Chris Atenasio <chris@xxxxxxxx>
> + *				     Bryan W. Headley <bwheadley@xxxxxxxxxxxxx>
> + *
> + *****************************************************************************/
> +
> +#define DEBUG

I do not think leaving DEBUG on is good idea for production code.

> +
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +#include <linux/input.h>
> +#include <linux/module.h>
> +#include <linux/init.h>
> +#include <linux/usb.h>
> +#include <linux/usb/input.h>
> +#include <linux/hid.h>
> +
> +#define DRIVER_VERSION		"v0.5"
> +#define DRIVER_AUTHOR		"Yann Cantin <yann.cantin@xxxxxxxxxxx>"
> +#define DRIVER_DESC		"USB eBeam Driver"
> +
> +#define USB_VENDOR_ID_EFI	   0x2650   /* Electronics For Imaging, Inc   */
> +#define USB_DEVICE_ID_EFI_CLASSIC  0x1311   /* Classic projection "La banane" */
> +
> +#define EBEAM_BTN_TIP		0x1      /* tip    */
> +#define EBEAM_BTN_LIT		0x2      /* little */
> +#define EBEAM_BTN_BIG		0x4      /* big    */
> +
> +/* until KConfig */
> +#define CONFIG_INPUT_EBEAM_USB_CLASSIC

Huh?

> +
> +/* device specifc data/functions */
> +struct ebeam_device;
> +struct ebeam_device_info {
> +	int min_X;
> +	int max_X;
> +	int min_Y;
> +	int max_Y;
> +
> +	/*
> +	 * TODO : Check if it's really necessary, waiting for other device info.
> +	 * Always service the USB devices irq not just when the input device is
> +	 * open. This is useful when devices have a watchdog which prevents us
> +	 * from periodically polling the device. Leave this unset unless your
> +	 * ebeam device requires it, as it does consume more of the USB
> +	 * bandwidth.
> +	 */
> +	bool irq_always;

Does you device need this?

> +
> +	int rept_size;
> +
> +	/* optional, generic exist */
> +	void (*process_pkt)  (struct ebeam_device *ebeam,
> +			      unsigned char *pkt,
> +			      int len);
> +
> +	/* mandatory, model-specific */
> +	int  (*read_data)    (struct ebeam_device *ebeam,
> +			      unsigned char *pkt);
> +	void (*setup_input)  (struct ebeam_device *ebeam,
> +			      struct input_dev *input_dev);
> +	void (*report_input) (struct ebeam_device *ebeam);
> +
> +	/* optional, model-specific */
> +	int  (*alloc)	(struct ebeam_device *ebeam);
> +	int  (*init)	(struct ebeam_device *ebeam);
> +	void (*exit)	(struct ebeam_device *ebeam);

Again, do you expect to see multitude of sufficiently different
devices or are they going to follow roughly the same protocol?

Thanks.

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" 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]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux