lkml.org 
[lkml]   [2011]   [Aug]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 6/6] Input: elantech - add v3 hardware support
    On Thu, Aug 18, 2011 at 09:57:09AM +0800, JJ Ding wrote:
    > v3 hardware's packet format is almost identical to v2 (one/three finger touch),
    > except when sensing two finger touch, the hardware sends 12 bytes of data.

    This looks mostly similar in substance to the patch I sent, although
    with some good improvements resulting from your better knowledge of the
    hardware :)

    One suggestion below. I'll test as soon as my build finishes.

    > @@ -582,10 +739,26 @@ static void elantech_set_input_params(struct psmouse *psmouse)
    > input_set_abs_params(dev, ABS_MT_POSITION_X, x_min, x_max, 0, 0);
    > input_set_abs_params(dev, ABS_MT_POSITION_Y, y_min, y_max, 0, 0);
    > break;
    > +
    > + case 3:
    > + input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
    > + input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
    > + /* range of pressure and width is the same as v2 */
    > + input_set_abs_params(dev, ABS_PRESSURE, ETP_PMIN_V2,
    > + ETP_PMAX_V2, 0, 0);
    > + input_set_abs_params(dev, ABS_TOOL_WIDTH, ETP_WMIN_V2,
    > + ETP_WMAX_V2, 0, 0);
    > + __set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
    > + input_mt_init_slots(dev, 2);
    > + input_set_abs_params(dev, ABS_MT_POSITION_X, x_min, x_max, 0, 0);
    > + input_set_abs_params(dev, ABS_MT_POSITION_Y, y_min, y_max, 0, 0);
    > + break;

    The case 3 code is nearly identical to case 2. How about this?

    case 2:
    __set_bit(BTN_TOOL_QUADTAP, dev->keybit);
    /* fall through */

    case 3:
    input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
    input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
    /* range of pressure and width is the same as v2 */
    input_set_abs_params(dev, ABS_PRESSURE, ETP_PMIN_V2,
    ETP_PMAX_V2, 0, 0);
    input_set_abs_params(dev, ABS_TOOL_WIDTH, ETP_WMIN_V2,
    ETP_WMAX_V2, 0, 0);
    __set_bit(INPUT_PROP_SEMI_MT, dev->propbit);
    input_mt_init_slots(dev, 2);
    input_set_abs_params(dev, ABS_MT_POSITION_X, x_min, x_max, 0, 0);
    input_set_abs_params(dev, ABS_MT_POSITION_Y, y_min, y_max, 0, 0);
    break;


    \
     
     \ /
      Last update: 2011-08-18 16:01    [W:3.993 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site