On Monday 04 December 2017 04:48:43 Masaki Ota wrote:
> Hi, Pali,
> 
> I don't get your point.
> Please modify the code if you have an idea.

See below

> Best Regards,
> Masaki Ota
> -----Original Message-----
> From: Pali Rohár [mailto:pali.ro...@gmail.com] 
> Sent: Saturday, December 02, 2017 6:08 AM
> To: Masaki Ota <012ne...@gmail.com>
> Cc: dmitry.torok...@gmail.com; benjamin.tissoi...@redhat.com; 
> aaron...@canonical.com; j...@ristioja.ee; 太田 真喜 Masaki Ota 
> <masaki....@jp.alps.com>; linux-in...@vger.kernel.org; 
> linux-kernel@vger.kernel.org
> Subject: Re: [PATCH] Support TrackStick of Thinkpad L570
> 
> On Wednesday 29 November 2017 17:33:58 Masaki Ota wrote:
> > From: Masaki Ota <masaki....@jp.alps.com>
> > - The issue is that Thinkpad L570 TrackStick does not work. Because the 
> > main interface of Thinkpad L570 device is SMBus, so ALPS overlooked PS2 
> > interface Firmware setting of TrackStick. The detail is that TrackStick otp 
> > bit is disabled.
> > - Add the code that checks 0xD7 address value. This value is device number 
> > information, so we can identify the device by checking this value.
> > - If we check 0xD7 value, we need to enable Command mode and after check 
> > the value we need to disable Command mode, then we have to enable the 
> > device(0xF4 command).
> > - Thinkpad L570 device number is 0x0C or 0x1D. If it is TRUE, enable 
> > ALPS_DUALPOINT flag.
> > 
> > Signed-off-by: Masaki Ota <masaki....@jp.alps.com>
> > ---
> >  drivers/input/mouse/alps.c | 24 +++++++++++++++++++++---
> >  1 file changed, 21 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c 
> > index 850b00e3ad8e..6f092bdd9fc5 100644
> > --- a/drivers/input/mouse/alps.c
> > +++ b/drivers/input/mouse/alps.c
> > @@ -2541,13 +2541,31 @@ static int 
> > alps_update_btn_info_ss4_v2(unsigned char otp[][4],  }
> >  
> >  static int alps_update_dual_info_ss4_v2(unsigned char otp[][4],
> > -                                  struct alps_data *priv)
> > +                                  struct alps_data *priv,
> > +                                   struct psmouse *psmouse)
> >  {

You can access psmouse from the priv structure as:

  struct psmouse *psmouse = priv->psmouse;

Therefore you do not have to extend function parameters with psmouse
pointer as that is already present int alps_data.

struct alps_data is defined as:

struct alps_data {
        struct psmouse *psmouse;
        ...
}

> >     bool is_dual = false;
> > +   int reg_val = 0;
> > +   struct ps2dev *ps2dev = &psmouse->ps2dev;
> >  
> > -   if (IS_SS4PLUS_DEV(priv->dev_id))
> > +   if (IS_SS4PLUS_DEV(priv->dev_id)) {
> >             is_dual = (otp[0][0] >> 4) & 0x01;
> >  
> > +           if (!is_dual) {
> > +                   /* For support TrackStick of Thinkpad L/E series */
> > +                   if (alps_exit_command_mode(psmouse) == 0 &&
> > +                           alps_enter_command_mode(psmouse) == 0) {
> > +                           reg_val = alps_command_mode_read_reg(psmouse,
> > +                                                                   0xD7);
> > +                   }
> > +                   alps_exit_command_mode(psmouse);
> > +                   ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE);
> > +
> > +                   if (reg_val == 0x0C || reg_val == 0x1D)
> > +                           is_dual = true;
> > +           }
> > +   }
> > +
> >     if (is_dual)
> >             priv->flags |= ALPS_DUALPOINT |
> >                                     ALPS_DUALPOINT_WITH_PRESSURE;
> > @@ -2570,7 +2588,7 @@ static int alps_set_defaults_ss4_v2(struct 
> > psmouse *psmouse,
> >  
> >     alps_update_btn_info_ss4_v2(otp, priv);
> >  
> > -   alps_update_dual_info_ss4_v2(otp, priv);
> > +   alps_update_dual_info_ss4_v2(otp, priv, psmouse);
> 
> Now looking at this change... Is there reason why you are passing psmouse 
> parameter there? Because struct alps_data contains psmouse member.
> 
> >  
> >     return 0;
> >  }
> 
> --
> Pali Rohár
> pali.ro...@gmail.com

-- 
Pali Rohár
pali.ro...@gmail.com

Reply via email to