Re: [PATCH 2/4] input - wacom : process pen data in its own routine

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

 



Hi Ping,

On Thu, Feb 10, 2011 at 05:32:23PM -0800, Ping Cheng wrote:
> So it would be easier for patch reviewers to follow the data path

Please develop the commit message a bit.

> 
> Reviewed-by: Chris Bagwell <chris@xxxxxxxxxxxxxx>
> Signed-off-by: Ping Cheng <pingc@xxxxxxxxx>
> ---
>  drivers/input/tablet/wacom_wac.c |   73 +++++++++++++++++++++-----------------
>  1 files changed, 40 insertions(+), 33 deletions(-)
> diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
> index 5488c61..15bab99 100644
> --- a/drivers/input/tablet/wacom_wac.c
> +++ b/drivers/input/tablet/wacom_wac.c
> @@ -722,13 +722,47 @@ static void wacom_tpc_touch_in(struct wacom_wac *wacom, size_t len)
>  	}
>  }
>  
> -static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len)
> +static int wacom_tpc_pen(struct wacom_wac *wacom)
>  {
>  	struct wacom_features *features = &wacom->features;
>  	char *data = wacom->data;
>  	struct input_dev *input = wacom->input;
> -	int prox = 0, pressure;
> -	int retval = 0;
> +	int prox, pressure;
> +
> +	prox = data[1] & 0x20;
> +
> +	if (!wacom->shared->stylus_in_proximity) { /* first in prox */
> +		/* Going into proximity select tool */
> +		wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
> +		if (wacom->tool[0] == BTN_TOOL_PEN)
> +			wacom->id[0] = STYLUS_DEVICE_ID;
> +		else
> +			wacom->id[0] = ERASER_DEVICE_ID;
> +
> +		wacom->shared->stylus_in_proximity = true;
> +	}
> +	input_report_key(input, BTN_STYLUS, data[1] & 0x02);
> +	input_report_key(input, BTN_STYLUS2, data[1] & 0x10);
> +	input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
> +	input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
> +	pressure = ((data[7] & 0x01) << 8) | data[6];
> +	if (pressure < 0)
> +		pressure = features->pressure_max + pressure + 1;

Hm... what if data[6] was u8 instead?

> +	input_report_abs(input, ABS_PRESSURE, pressure);
> +	input_report_key(input, BTN_TOUCH, data[1] & 0x05);
> +	if (!prox) { /* out-prox */
> +		wacom->id[0] = 0;
> +		wacom->shared->stylus_in_proximity = false;
> +	}
> +	input_report_key(input, wacom->tool[0], prox);
> +
> +	return 1;
> +}
> +
> +static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len)
> +{
> +	char *data = wacom->data;
> +	int prox = 0;
>  
>  	dbg("wacom_tpc_irq: received report #%d", data[0]);
>  
> @@ -757,37 +791,10 @@ static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len)
>  		}
>  		/* keep prox bit to send proper out-prox event */
>  		wacom->id[1] = prox;
> -	} else if (data[0] == WACOM_REPORT_PENABLED) { /* Penabled */
> -		prox = data[1] & 0x20;
> -
> -		if (!wacom->shared->stylus_in_proximity) { /* first in prox */
> -			/* Going into proximity select tool */
> -			wacom->tool[0] = (data[1] & 0x0c) ? BTN_TOOL_RUBBER : BTN_TOOL_PEN;
> -			if (wacom->tool[0] == BTN_TOOL_PEN)
> -				wacom->id[0] = STYLUS_DEVICE_ID;
> -			else
> -				wacom->id[0] = ERASER_DEVICE_ID;
> +	} else if (data[0] == WACOM_REPORT_PENABLED)
> +		return wacom_tpc_pen(wacom);

mixed if {} and else ;

>  
> -			wacom->shared->stylus_in_proximity = true;
> -		}
> -		input_report_key(input, BTN_STYLUS, data[1] & 0x02);
> -		input_report_key(input, BTN_STYLUS2, data[1] & 0x10);
> -		input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2]));
> -		input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4]));
> -		pressure = ((data[7] & 0x01) << 8) | data[6];
> -		if (pressure < 0)
> -			pressure = features->pressure_max + pressure + 1;
> -		input_report_abs(input, ABS_PRESSURE, pressure);
> -		input_report_key(input, BTN_TOUCH, data[1] & 0x05);
> -		if (!prox) { /* out-prox */
> -			wacom->id[0] = 0;
> -			wacom->shared->stylus_in_proximity = false;
> -		}
> -		input_report_key(input, wacom->tool[0], prox);
> -		input_report_abs(input, ABS_MISC, wacom->id[0]);
> -		retval = 1;
> -	}
> -	return retval;
> +	return 0;
>  }
>  
>  static int wacom_bpt_touch(struct wacom_wac *wacom)
> -- 

Thanks,
Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-input" 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 Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux