From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1422660AbbE2V62 (ORCPT ); Fri, 29 May 2015 17:58:28 -0400 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:58873 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756266AbbE2V6V (ORCPT ); Fri, 29 May 2015 17:58:21 -0400 Date: Fri, 29 May 2015 23:58:18 +0200 From: Pavel Machek To: Dmitry Torokhov Cc: Maxime Ripard , Sebastian Reichel , kernel list , Pali =?iso-8859-1?Q?Roh=E1r?= , Ivaylo Dimitrov Subject: Re: 4.1 touchscreen regression on n900 -- pinpointed [was Re: linux-n900 v4.1-rc4] Message-ID: <20150529215818.GA21633@amd> References: <201505241444.41039@pali> <20150527132545.GA23434@amd> <20150527133311.GJ30798@pali> <20150527143722.GA28108@amd> <20150527145837.GA13223@earth> <20150529190816.GA20232@amd> <20150529192505.GA28987@amd> <20150529195740.GA17267@lukather> <20150529211722.GB26866@amd> <20150529213649.GB7429@dtor-ws> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150529213649.GB7429@dtor-ws> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 2015-05-29 14:36:49, Dmitry Torokhov wrote: > On Fri, May 29, 2015 at 11:17:22PM +0200, Pavel Machek wrote: > > On Fri 2015-05-29 21:57:40, Maxime Ripard wrote: > > > On Fri, May 29, 2015 at 09:25:05PM +0200, Pavel Machek wrote: > > > > On Fri 2015-05-29 21:08:16, Pavel Machek wrote: > > > > > Hi! > > > > > > > > > > > mh I remember having problems with tsc2005 before. It helped to > > > > > > reset the controller (should actually happen automatically when it > > > > > > hangs, but I'm not sure, that it actually works). > > > > > > > > > > Ok, I did some more testing, and found out rather bogus values in > > > > > evtest: > > > > > > > > > > Input device name: "TSC2005 touchscreen" > > > > > Supported events: > > > > > Event type 0 (EV_SYN) > > > > > Event type 1 (EV_KEY) > > > > > Event code 330 (BTN_TOUCH) > > > > > Event type 3 (EV_ABS) > > > > > Event code 0 (ABS_X) > > > > > Value 2514 > > > > > Min 0 > > > > > Max 0 > > > > > Fuzz 4 > > > > > > > > > > Which made me go through the git logs, and these patches looked > > > > > suspicious. After a revert... yes, touchscreen works as well as it > > > > > worked before. > > > > > > > > > > 0a363a380954e10fece7cd9931b66056eeb07d56 > > > > > 3eea8b5d68c801fec788b411582b803463834752 > > > > > > > > > > (It is impossible to revert just 3eea..) > > > > > > > > Hmm, I see: > > > > > > > > touchscreen-max-x = <4096>; > > > > touchscreen-max-y = <4096>; > > > > ...that's n900 dts.. this should be size-x/size-y... so we have a bug > > > > in dts. > > > > > > > > But the 3eea8b5d68c801fec788b411582b803463834752 is buggy, it should > > > > not overwrite ->maximum for axis it has no devicetree data for. > > > > > > What do you mean? touchscreen-max-* _is_ device tree data for an axis. > > > > > > > Maybe replacing > > > > > > > > + if (maximum || fuzz) > > > > > > > > in 3eea to (maximum && fuzz)... would help, but it is late in the > > > > cycle now, so I'd suggest just reverting 3eea8b. > > > > > > No, both maximum and fuzz are optional. You can perfectly have one > > > without another. > > > > Yes, which is something you got wrong. > > > > Apply this on top of 3eea8b5d68c801fec788b411582b803463834752, and > > you'll get simpler code, that works like it did before. > > > > Maxime, since you caused the regression, can I ask you to put the > > other patches on top of it, test it still works for you and submit it > > properly? > > > > [If you want to return in !test_bit case, and are sure it does not > > break anything, feel free to do that.] > > > > Thanks, > > Pavel > > > > Signed-off-by: Pavel Machek > > > > diff --git a/drivers/input/touchscreen/of_touchscreen.c b/drivers/input/touchscreen/of_touchscreen.c > > index b82b520..e626c8a 100644 > > --- a/drivers/input/touchscreen/of_touchscreen.c > > +++ b/drivers/input/touchscreen/of_touchscreen.c > > @@ -11,39 +11,23 @@ > > > > #include > > #include > > -#include > > #include > > > > -static u32 of_get_optional_u32(struct device_node *np, > > - const char *property) > > -{ > > - u32 val = 0; > > - > > - of_property_read_u32(np, property, &val); > > - > > - return val; > > -} > > - > > static void touchscreen_set_params(struct input_dev *dev, > > unsigned long axis, > > - int max, int fuzz) > > + char *max, char *fuzz) > > { > > struct input_absinfo *absinfo; > > + struct device_node *np = dev->dev.parent->of_node; > > > > if (!test_bit(axis, dev->absbit)) { > > - /* > > - * Emit a warning only if the axis is not a multitouch > > - * axis, which might not be set by the driver. > > - */ > > - if (!input_is_mt_axis(axis)) > > - dev_warn(&dev->dev, > > - "DT specifies parameters but the axis is not set up\n"); > > - return; > > + dev_warn(&dev->dev, > > + "DT specifies parameters but the axis is not set up\n"); > > No, this is not right either. We do not want to bitch about axis not > being set up if there is nothing in DT mentioning this axis. Well, we should not bitch at all, that should have been followup patch. > Plus the code structure won't work well if we decide to add more to it > (such as min, or flat, or resolution). Do you want to try to cook up something that works? Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html