On Mon, Feb 28, 2005 at 08:27:59PM -0500, Dan Streetman wrote:
> 
> On Thu, 24 Feb 2005, Vojtech Pavlik wrote:
> 
> >> would a module parameter that selects raw or hw-calibrated be better?
> >
> >That'd be a conflict-less solution, indeed.
> 
> ok, here's a patch to add a boolean parameter "raw_coordinates".  It 
> defaults to true, so behavior won't change by default.
> 
> One note, in your bk tree you'd already changed the Y reporting to (MAX_YC
> - GET_YC), i.e. to flip Y.  However, with 2 different possible maxes (raw
> and hw-calib), it was easier to just reverse the min/max Y's, since the
> max depends on the module param.  It should work the same.
> 
> Look ok?

Yes; applied. Reversed min/max behavior is currently undefined. I
changed it back to the original, although less simple solution.

> --- input/drivers/usb/input/mtouchusb.c       2005-02-23 15:54:37.000000000 
> -0500
> +++ input-changed/drivers/usb/input/mtouchusb.c       2005-02-28 
> 18:33:19.000000000 -0500
> @@ -34,6 +34,9 @@
>   *    Eliminated vendor/product module params
>   *    Performed multiple successfull tests with an EXII-5010UC
>   *
> + *  1.5 02/27/2005 [EMAIL PROTECTED]
> + *    Added module parameter to select raw or hw-calibrated coordinate 
> reporting
> + *
>   
> *****************************************************************************/
>  
>  #include <linux/config.h>
> @@ -52,11 +55,13 @@
>  #include <linux/usb.h>
>  
>  #define MTOUCHUSB_MIN_XC                0x0
> -#define MTOUCHUSB_MAX_XC                0x4000
> +#define MTOUCHUSB_MAX_RAW_XC            0x4000
> +#define MTOUCHUSB_MAX_CALIB_XC          0xffff
>  #define MTOUCHUSB_XC_FUZZ               0x0
>  #define MTOUCHUSB_XC_FLAT               0x0
>  #define MTOUCHUSB_MIN_YC                0x0
> -#define MTOUCHUSB_MAX_YC                0x4000
> +#define MTOUCHUSB_MAX_RAW_YC            0x4000
> +#define MTOUCHUSB_MAX_CALIB_YC          0xffff
>  #define MTOUCHUSB_YC_FUZZ               0x0
>  #define MTOUCHUSB_YC_FLAT               0x0
>  
> @@ -65,15 +70,28 @@
>  #define MTOUCHUSB_REPORT_DATA_SIZE      11
>  #define MTOUCHUSB_REQ_CTRLLR_ID         10
>  
> -#define MTOUCHUSB_GET_XC(data)          (data[8]<<8 | data[7])
> -#define MTOUCHUSB_GET_YC(data)          (data[10]<<8 | data[9])
> +#define MTOUCHUSB_GET_RAW_XC(data)      (data[8]<<8 | data[7])
> +#define MTOUCHUSB_GET_CALIB_XC(data)    (data[4]<<8 | data[3])
> +#define MTOUCHUSB_GET_RAW_YC(data)      (data[10]<<8 | data[9])
> +#define MTOUCHUSB_GET_CALIB_YC(data)    (data[6]<<8 | data[5])
> +#define MTOUCHUSB_GET_XC(data)          (raw_coordinates ? \
> +                                         MTOUCHUSB_GET_RAW_XC(data) : \
> +                                         MTOUCHUSB_GET_CALIB_XC(data))
> +#define MTOUCHUSB_GET_YC(data)          (raw_coordinates ? \
> +                                         MTOUCHUSB_GET_RAW_YC(data) : \
> +                                         MTOUCHUSB_GET_CALIB_YC(data))
>  #define MTOUCHUSB_GET_TOUCHED(data)     ((data[2] & 0x40) ? 1:0)
>  
> -#define DRIVER_VERSION "v1.4"
> +#define DRIVER_VERSION "v1.5"
>  #define DRIVER_AUTHOR "Todd E. Johnson, [EMAIL PROTECTED]"
>  #define DRIVER_DESC "3M USB Touchscreen Driver"
>  #define DRIVER_LICENSE "GPL"
>  
> +static int raw_coordinates = 1;
> +
> +module_param(raw_coordinates, bool, S_IRUGO | S_IWUSR);
> +MODULE_PARM_DESC(raw_coordinates, "report raw coordinate values (y, default) 
> or hardware-calibrated coordinate values (n)");
> +
>  struct mtouch_usb {
>          unsigned char *data;
>          dma_addr_t data_dma;
> @@ -123,7 +141,7 @@
>          input_report_abs(&mtouch->input, ABS_X,
>                           MTOUCHUSB_GET_XC(mtouch->data));
>          input_report_abs(&mtouch->input, ABS_Y,
> -                         MTOUCHUSB_MAX_YC - MTOUCHUSB_GET_YC(mtouch->data));
> +                         MTOUCHUSB_GET_YC(mtouch->data));
>          input_sync(&mtouch->input);
>  
>  exit:
> @@ -234,11 +252,13 @@
>  
>          /* Used to Scale Compensated Data and Flip Y */
>          mtouch->input.absmin[ABS_X] =  MTOUCHUSB_MIN_XC;
> -        mtouch->input.absmax[ABS_X] =  MTOUCHUSB_MAX_XC;
> +        mtouch->input.absmax[ABS_X] =  raw_coordinates ? \
> +                                       MTOUCHUSB_MAX_RAW_XC : 
> MTOUCHUSB_MAX_CALIB_XC;
>          mtouch->input.absfuzz[ABS_X] = MTOUCHUSB_XC_FUZZ;
>          mtouch->input.absflat[ABS_X] = MTOUCHUSB_XC_FLAT;
> -        mtouch->input.absmin[ABS_Y] =  MTOUCHUSB_MIN_YC;
> -        mtouch->input.absmax[ABS_Y] =  MTOUCHUSB_MAX_YC;
> +        mtouch->input.absmin[ABS_Y] =  raw_coordinates ? \
> +                                       MTOUCHUSB_MAX_RAW_YC : 
> MTOUCHUSB_MAX_CALIB_YC;
> +        mtouch->input.absmax[ABS_Y] =  MTOUCHUSB_MIN_YC;
>          mtouch->input.absfuzz[ABS_Y] = MTOUCHUSB_YC_FUZZ;
>          mtouch->input.absflat[ABS_Y] = MTOUCHUSB_YC_FLAT;
>  
> 

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to