@Dave Turvene:

Since I had already narrowed down the problem exhibited on my Latitude
E6530 in your psmouse-alps-patch to the very function which was to
blame, while I was at it I thought I might as well narrow it down even
further. And so I did.

I took the source code of function alps_hw_init_v5 from version 0.4 and
gradually changed it so as to eventually look like the source code of
function alps_hw_init_v5 from version 1.0, recompiling and reloading the
module in each step to verify it still works. And thus I found the
error.


Basically, in line 1690 of src/alps.c of version 1.0 of your patch, there is 
the command
ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP);
However, version 0.4 executed this command thrice, while version 1.0 executes 
it only once. This makes the whole difference. You have to call it _thrice_ for 
scrolling to work on my laptop. Not once. Not twice (I tried that too). But 
thrice. Don't ask me why, but that's the way it is :-)

I have attached a patch intended to be applied against the psmouse-alps-patch 
available at
http://www.dahetral.com/public-download/psmouse-alps-dst-1.0.tbz/at_download/file

By downloading that file, then applying my patch to it, then building
and installing and loading the module, touchpad scrolling works fine on
my Dell Latitude E6530, both edge-scrolling and two-finger-scrolling.


I have also noticed two other things during my code review that I would like to 
bring to your attention:

1. There is a very similar situation earlier on, namely in line 1659 of 
src/alps.c, where also the command
ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP);
is executed exactly once in version 1.0, while before (version 0.4) it was 
called thrice at that point. Here, both variants (calling it either once or 
thrice) work fine on my laptop, but since later, in line 1690 (as explained 
above) it seems that you *have* to execute the command thrice, it might be 
"cleaner" from the point of view of the protocol to also call it thrice here. 
You will have to decide that.

2. Just below, in line 1660, there is the command
ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO);
where 'param' is just an array with uninitialized values. I don't know what 
PSMOUSE_CMD_GETINFO does, but I was just a bit astonished that we should need 
to pass an array of uninitialized parameters. In any case, passing NULL instead 
of 'param' at that point works fine too. Might be cleaner. Or does 
PSMOUSE_CMD_GETINFO actually fills this array? Again, your choice.

Cheers,

Malte

** Patch added: "Patch for 
http://www.dahetral.com/public-download/psmouse-alps-dst-1.0.tbz/view to make 
the latter work on Dell Latitude E6530"
   
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/606238/+attachment/3418538/+files/alps_patch_fix_for_e6530.patch

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/606238

Title:
  synaptic touchpad not recognized on dell latitude e6510 and others

To manage notifications about this bug go to:
https://bugs.launchpad.net/linux/+bug/606238/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to