Skip to contentSkip to conversation

4.1 touchscreen regression on n900 -- pinpointed [was Re: linux-n900 v4.1-rc4]

PATCH In review Pavel Machek 6 participants 42 messages May 29, 2015 – Jun 25, 2015 5 messages not in the archive

Subsystems (3)
lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): 201505241444.41039@pali

A message that is not in the archive (sent off-list or not yet received): 20150527132545.GA23434@amd

A message that is not in the archive (sent off-list or not yet received): 20150527133311.GJ30798@pali

A message that is not in the archive (sent off-list or not yet received): 20150527143722.GA28108@amd

A message that is not in the archive (sent off-list or not yet received): 20150527145837.GA13223@earth

#5 lore raw

Hi!

Quoted 3 lines

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..)

Its funny... changelog complains about duplicated code.. then inserts 30 lines of code. Along with check that was not there before.

Maxime, can you suggest a fix?
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#6 lore raw
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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.

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.

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#7 lore raw

PATCH 1/1 fix n900 dts file to work around 4.1 touchscreen regression on n900

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
index 4b641c7..09089a6 100644
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;
 		touchscreen-max-pressure = <2048>;
 
 		ti,x-plate-ohms = <280>;
arch/arm/boot/dts/omap3-n900.dts +2 -2
index 5c16145..5f5e0f3 100644
@@ -832,8 +832,8 @@
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;
 		touchscreen-max-pressure = <2048>;
 
 		ti,x-plate-ohms = <280>;
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Reviewed-by on v1 1/1
#8 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

$ git describe a38cfebb56898633687ab337fd53710e63a0aedd
v3.15-rc5-72-ga38cfebb5689

So, because this has been wrongly documented for so long, we should support both bindings. Sure, deprecate touchscreen-max-[xy], but they must still be supported, IMO.

In any case, for this patch:

Signature · 8 lines
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150529/f83a90c8/attachment-0001.sig>
#9 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 18 lines · Felipe Balbi

Hi,

Quoted 15 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -2
index 4b641c7..09089a6 100644
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
Quoted 8 lines

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 2 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -0
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Agreed. In parent email, I have list of two commits that should be reverted.

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#10 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 28 lines · Pavel Machek
Quoted 18 lines · Felipe Balbi

Hi,

Quoted 15 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -2
index 4b641c7..09089a6 100644
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
Quoted 8 lines

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 2 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -0
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 2 lines

Agreed. In parent email, I have list of two commits that should be reverted.

So, if we sums things up. You introduce in some documentation example some property, that you never document, that you still use in one single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

This is a joke, right?

If not, I can show you a handful of DTs that will be equally broken if you revert the commits. Who wins?

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150529/8c07edc5/attachment.sig>
#11 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 29 lines · Maxime Ripard
Quoted 28 lines · Pavel Machek
Quoted 26 lines · Felipe Balbi

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 5 lines
Quoted 2 lines

Agreed. In parent email, I have list of two commits that should be reverted.

So, if we sums things up. You introduce in some documentation example some property, that you never document, that you still use in one

it was Documented in DT bindings document for this particular driver. What are you talking about ?

Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

Signature · 8 lines
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150529/0fb63681/attachment.sig>
maintainer
#12 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 30 lines · Felipe Balbi
Quoted 29 lines · Maxime Ripard
Quoted 28 lines · Pavel Machek
Quoted 26 lines · Felipe Balbi

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

Agreed. In parent email, I have list of two commits that should be reverted.

So, if we sums things up. You introduce in some documentation example some property, that you never document, that you still use in one

it was Documented in DT bindings document for this particular driver. What are you talking about ?

It was documented in "example", not in the documentation that says:

- properties defined in touchscreen.txt

which says nothing about touchscreen-max-x. And _noone_ has ever parsed this property, so adding support for it does not make any sense.

Quoted 10 lines
Quoted 3 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Signature · 1 line
Dmitry
#13 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Agreed.

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#14 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 15 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Quoted 8 lines

Agreed.

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

Yes.

Quoted 2 lines

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

That is not a new failure. It actually warns users that they trying to specify in DT something that will be ignored by the kernel (because without that absbit kernel will ignore all requests to that event code).

Quoted 3 lines

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

Yes. I am not sure if we should care and support all permutations (ah, I pre-setup fuzz in the driver, but override max on X, and I pre-setup max on X, but take fuzz from DT). Maybe we should simply document that specifying one parameter for an axis will change the rest of them to be
0. Not sure though...

Thanks.

Signature · 1 line
Dmitry
#15 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 25 lines · Dmitry Torokhov
Quoted 15 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Quoted 8 lines

Agreed.

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

Quoted 8 lines

Yes.

Quoted 2 lines

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

That is not a new failure. It actually warns users that they trying to specify in DT something that will be ignored by the kernel (because without that absbit kernel will ignore all requests to that event code).

What if driver sets the bits after parsing device tree?

Quoted 8 lines
Quoted 2 lines

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

Yes. I am not sure if we should care and support all permutations (ah, I pre-setup fuzz in the driver, but override max on X, and I pre-setup max on X, but take fuzz from DT). Maybe we should simply document that specifying one parameter for an axis will change the rest of them to be
0. Not sure though...

Well, the old code did support all permutations. "cleanups" should not change such details...

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#16 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 29 lines · Pavel Machek
Quoted 28 lines · Dmitry Torokhov
Quoted 15 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Quoted 8 lines

Agreed.

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

Yes.

Quoted 1 line
Quoted 7 lines
Quoted 5 lines
Quoted 1 line

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

That is not a new failure. It actually warns users that they trying to specify in DT something that will be ignored by the kernel (because without that absbit kernel will ignore all requests to that event code).

What if driver sets the bits after parsing device tree?

It should not.

Thanks.

Signature · 1 line
Dmitry
#17 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

In reply to Pavel Machek
Quoted 15 lines · Pavel Machek

Hi!

Quoted 5 lines
Quoted 5 lines
Quoted 2 lines

single DT, you don't even use that property in your driver, and now that you realise you meant something else, you want the code that

not Pali, Sebastian.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

actually parse the *right* property and does the right thing, that all other DT agree (and depend on) to be reverted?

We shouldn't revert, that I agree. But both properties should be parsed.

No. If the property is wrong, and nobody parsed it, I do not see any reason to start now.

Quoted 8 lines

Agreed.

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

If maximum is not set, you'll have other issues anyway. But it really boils down on what the default behaviour should be.

Quoted 1 line

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

It's not a new failure, it's testing against stupid code.

If an axis is setup in the DT but not registered in the driver, something is wrong, most probably the DT.

Quoted 2 lines

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

Again, default behaviour.

Quoted 1 line

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150601/a21a0745/attachment-0001.sig>
#18 lore raw

Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Hi!

Quoted 9 lines
Quoted 6 lines

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

If maximum is not set, you'll have other issues anyway. But it really boils down on what the default behaviour should be.

It was not broken before commit 3eea8b5d68c801fec788b411582b803463834752. Maximum was set, but after your patch, it is overwritten with zero.

Quoted 3 lines
Quoted 1 line

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

It's not a new failure, it's testing against stupid code.

Yes. In a commit marked "cleanup". We call this "undocumented feature".

Quoted 2 lines

If an axis is setup in the DT but not registered in the driver, something is wrong, most probably the DT.

Yes, we have fixed the DT, so that bug you introduced will not happen on n900 with updated device tree.

Quoted 4 lines
Quoted 2 lines

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

Again, default behaviour.

Again, regression from 4.0 kernel, you are not willing to fix.

Quoted 4 lines
Quoted 1 line

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Dmitry, please revert 3eea8b5d68c801fec788b411582b803463834752 . You'll probably need to revert 0a363a380954e10fece7cd9931b66056eeb07d56 too. Then, Maxime can submit his multitouch patches in a way it does not break existing setups.

Thanks,
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#19 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 16 lines · Pavel Machek

Hi!

Quoted 9 lines
Quoted 6 lines

But that's not what I'm asking. See a changelog of 3eea8b5d68c801fec788b411582b803463834752 and compare it with what it actually does.

It is buggy. If fuzz is specified but maximum is not, it overwites maximum with zero.

If maximum is not set, you'll have other issues anyway. But it really boils down on what the default behaviour should be.

It was not broken before commit 3eea8b5d68c801fec788b411582b803463834752. Maximum was set, but after your patch, it is overwritten with zero.

Quoted 6 lines
Quoted 3 lines
Quoted 1 line

Plus it introduces new failure "if (!test_bit(axis, dev->absbit))".

It's not a new failure, it's testing against stupid code.

Yes. In a commit marked "cleanup". We call this "undocumented feature".

It has never been said that it was a "cleanup" (whatever the double quotes mean) but a rework. And it's not a feature either.

Quoted 5 lines
Quoted 2 lines

If an axis is setup in the DT but not registered in the driver, something is wrong, most probably the DT.

Yes, we have fixed the DT, so that bug you introduced will not happen on n900 with updated device tree.

s/updated/fixed/

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

Plus it fails to distinguish between "value not specified in the dt" and "zero is specified in the dt".

Again, default behaviour.

Again, regression from 4.0 kernel, you are not willing to fix.

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

It's not really a very good way to move forward and start a productive discussion.

I'm sorry if this cause you any issues, but reverting this patch will break users (and this time at the kernel level only, the DT has nothing to do with that) just like you are right now.

What about:

-- >8 --

drivers/input/touchscreen/of_touchscreen.c +9 -5
index b82b5207c78b..7e98c2e443ab 100644
@@ -14,10 +14,10 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
+static int of_get_optional_u32(struct device_node *np,
 			       const char *property)
 {
-	u32 val = 0;
+	int val = -1;
 
 	of_property_read_u32(np, property, &val);
 
@@ -42,8 +42,12 @@ static void touchscreen_set_params(struct input_dev *dev,
 	}
 
 	absinfo = &dev->absinfo[axis];
-	absinfo->maximum = max;
-	absinfo->fuzz = fuzz;
+
+	if (max >= 0)
+		absinfo->maximum = max;
+
+	if (fuzz >= 0)
+		absinfo->fuzz = fuzz;
 }
 
 /**
@@ -57,7 +61,7 @@ static void touchscreen_set_params(struct input_dev *dev,
 void touchscreen_parse_of_params(struct input_dev *dev)
 {
 	struct device_node *np = dev->dev.parent->of_node;
-	u32 maximum, fuzz;
+	int maximum, fuzz;
 
 	input_alloc_absinfo(dev);
 	if (!dev->absinfo)

-- >8 --

That reduces the max size of the screens, but I don't really expect the screen size to reach that order of magnitude before a few years...

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150601/f3f3e427/attachment.sig>
#20 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

Quoted 8 lines
Quoted 5 lines
Quoted 2 lines

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?
...

Quoted 43 lines
drivers/input/touchscreen/of_touchscreen.c +9 -6
index b82b5207c78b..7e98c2e443ab 100644
@@ -14,10 +14,10 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
+static int of_get_optional_u32(struct device_node *np,
 			       const char *property)
 {
-	u32 val = 0;
+	int val = -1;
 
 	of_property_read_u32(np, property, &val);
 
@@ -42,8 +42,12 @@ static void touchscreen_set_params(struct input_dev *dev,
 	}
 
 	absinfo = &dev->absinfo[axis];
-	absinfo->maximum = max;
-	absinfo->fuzz = fuzz;
+
+	if (max >= 0)
+		absinfo->maximum = max;
+
+	if (fuzz >= 0)
+		absinfo->fuzz = fuzz;
 }
 
 /**
@@ -57,7 +61,7 @@ static void touchscreen_set_params(struct input_dev *dev,
 void touchscreen_parse_of_params(struct input_dev *dev)
 {
 	struct device_node *np = dev->dev.parent->of_node;
-	u32 maximum, fuzz;
+	int maximum, fuzz;
 
 	input_alloc_absinfo(dev);
 	if (!dev->absinfo)
-- >8 --
Quoted 2 lines

That reduces the max size of the screens, but I don't really expect the screen size to reach that order of magnitude before a few years...

Umm. Won't you have to update

- if (maximum || fuzz)
+ if (maximum >= 0 || fuzz >= 0)

? Thanks,

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#21 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +43 -24

91 lines not on this page · raw message

drivers/input/touchscreen/tsc2005.c +1 -1
index 72657c5..d8c025b 100644
@@ -709,7 +709,7 @@ static int tsc2005_probe(struct spi_device *spi)
 	input_set_abs_params(input_dev, ABS_PRESSURE, 0, max_p, fudge_p, 0);
 
 	if (np)
-		touchscreen_parse_of_params(input_dev);
+		touchscreen_parse_of_params(input_dev, false);
 
 	input_dev->open = tsc2005_open;
 	input_dev->close = tsc2005_close;
include/linux/input/touchscreen.h +3 -2
index 08a5ef6..eecc9ea 100644
@@ -12,9 +12,10 @@
 #include <linux/input.h>
 
 #ifdef CONFIG_OF
-void touchscreen_parse_of_params(struct input_dev *dev);
+void touchscreen_parse_of_params(struct input_dev *dev, bool multitouch);
 #else
-static inline void touchscreen_parse_of_params(struct input_dev *dev)
+static inline void touchscreen_parse_of_params(struct input_dev *dev,
+					       bool multitouch)
 {
 }
 #endif
#22 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 14 lines · Dmitry Torokhov
Quoted 13 lines · Pavel Machek
Quoted 12 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Quoted 8 lines
Quoted 5 lines

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

+ data_present = touchscreen_get_prop_u32(np,
"touchscreen-size-x",
+
input_abs_get_maximum(axis),
+ &maximum) |
+ touchscreen_get_prop_u32(np,
"touchscreen-fuzz-x",
+
input_abs_get_fuzz(axis),
+ &fuzz);
+ if (data_present)
+ touchscreen_set_params(dev, axis, maximum, fuzz);

Umm. So you are changing behaviour from "whatever was there" to "input_abs_get_maximum"... in n900 case. Is that a good idea for a regression fix this late in release cycle?

Maxime's patch should be easy to fix...
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#23 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 37 lines · Pavel Machek
Quoted 14 lines · Dmitry Torokhov
Quoted 13 lines · Pavel Machek
Quoted 12 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Quoted 8 lines
Quoted 5 lines

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

+ data_present = touchscreen_get_prop_u32(np,
"touchscreen-size-x",
+
input_abs_get_maximum(axis),

(quoted diff) +2 -0
+                                               &maximum) |
+                      touchscreen_get_prop_u32(np,

"touchscreen-fuzz-x",
+
input_abs_get_fuzz(axis),

drivers/input/touchscreen/of_touchscreen.c +3 -0
+                                               &fuzz);
+       if (data_present)
+               touchscreen_set_params(dev, axis, maximum, fuzz);
Quoted 2 lines

Umm. So you are changing behaviour from "whatever was there" to "input_abs_get_maximum"... in n900 case.o

That _is_ "whatever was there".

Quoted 2 lines

Is that a good idea for a
regression fix this late in release cycle?

As Maxime mentioned the new behavior is needed for other touchscreens. Given that fixed DTS is going into 4.1 (as far as I understand) we do not need to rush this change into 4.1.

Thanks.

Signature · 1 line
Dmitry
#24 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 43 lines · Dmitry Torokhov
Quoted 37 lines · Pavel Machek
Quoted 14 lines · Dmitry Torokhov
Quoted 13 lines · Pavel Machek
Quoted 12 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Quoted 8 lines
Quoted 5 lines

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

+ data_present = touchscreen_get_prop_u32(np,
"touchscreen-size-x",
+
input_abs_get_maximum(axis),

(quoted diff) +2 -0
+                                               &maximum) |
+                      touchscreen_get_prop_u32(np,

"touchscreen-fuzz-x",
+
input_abs_get_fuzz(axis),

drivers/input/touchscreen/of_touchscreen.c +3 -0
+                                               &fuzz);
+       if (data_present)
+               touchscreen_set_params(dev, axis, maximum, fuzz);
Quoted 2 lines

Umm. So you are changing behaviour from "whatever was there" to "input_abs_get_maximum"... in n900 case.o

That _is_ "whatever was there".

Quoted 6 lines
Quoted 2 lines

Is that a good idea for a
regression fix this late in release cycle?

As Maxime mentioned the new behavior is needed for other touchscreens. Given that fixed DTS is going into 4.1 (as far as I understand) we do not need to rush this change into 4.1.

OK great. I'm planning to send a pull request to arm-soc for Pavel's DTS fix today along with few other fixes.

Regards,

Tony

#25 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

In reply to Dmitry Torokhov

Hi Dmitry,

Quoted 77 lines · Dmitry Torokhov
Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +5 -2
index b82b520..c132624 100644
@@ -14,14 +14,22 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 

drivers/input/touchscreen/of_touchscreen.c line 32

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +7 -2
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
 
-	return val;
+	*value = val;
+	return true;

This looks good.

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

So I guess you could just do:

*value = default_value;
return of_property_read_u32(np, property, value) ? true : false;

It looks good otherwise.

Thanks!
Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150601/02f632fa/attachment-0001.sig>
maintainer
#26 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 87 lines · Maxime Ripard

Hi Dmitry,

Quoted 84 lines · Dmitry Torokhov
Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +10 -3
index b82b520..c132624 100644
@@ -14,14 +14,22 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
 
Quoted 8 lines

drivers/input/touchscreen/of_touchscreen.c line 32

Quoted 3 lines
drivers/input/touchscreen/of_touchscreen.c +2 -1
-	return val;
+	*value = val;
+	return true;

This looks good.

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

I know but it is not documented anywhere (as far as I know) so I'd rather not rely on the implementation detail that might change in the future. This is not a hot path so extra assignment should not hurt.

Thanks.

Signature · 1 line
Dmitry
#27 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 94 lines · Dmitry Torokhov
Quoted 93 lines · Maxime Ripard

Hi Dmitry,

Quoted 77 lines · Dmitry Torokhov
Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +5 -2
index b82b520..c132624 100644
@@ -14,14 +14,22 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 

drivers/input/touchscreen/of_touchscreen.c line 32

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +7 -2
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
 
-	return val;
+	*value = val;
+	return true;

This looks good.

Quoted 6 lines
Quoted 2 lines

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

I know but it is not documented anywhere (as far as I know) so I'd rather not rely on the implementation detail that might change in the future. This is not a hot path so extra assignment should not hurt.

Seriously? Submit a patch documenting it, instead of writing strange code. I bet everyone and their dog relies on it.
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#28 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

In reply to Dmitry Torokhov
Quoted 94 lines · Dmitry Torokhov
Quoted 93 lines · Maxime Ripard

Hi Dmitry,

Quoted 77 lines · Dmitry Torokhov
Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +5 -2
index b82b520..c132624 100644
@@ -14,14 +14,22 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 

drivers/input/touchscreen/of_touchscreen.c line 32

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +7 -2
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
 
-	return val;
+	*value = val;
+	return true;

This looks good.

Quoted 6 lines
Quoted 2 lines

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

I know but it is not documented anywhere (as far as I know) so I'd rather not rely on the implementation detail that might change in the future. This is not a hot path so extra assignment should not hurt.

It is actually: http://lxr.free-electrons.com/source/drivers/of/base.c#L1231

But you're right that it's mostly a cosmetic change.

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150602/79e21402/attachment-0001.sig>
maintainer
#29 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 95 lines · Maxime Ripard
Quoted 94 lines · Dmitry Torokhov
Quoted 93 lines · Maxime Ripard

Hi Dmitry,

Quoted 77 lines · Dmitry Torokhov
Quoted 10 lines · Pavel Machek
Quoted 10 lines
Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

The 3eea8b5d68c801fec788b411582b803463834752 is just bad.

You were very welcome to review this patch at the time and/or suggest a fix that pleases everyone.

You should be the one that should suggest fixes, as you broke it in the first place. But clearly you don't understand that.

Quoted 8 lines
Quoted 2 lines

You actually never asked for a fix, and went head first calling this patch "bad" and asking for nothing but reverting it.

Date: Fri, 29 May 2015 21:08:16 +0200
Subject: 4.1 touchscreen regression on n900 -- pinpointed [was Re:
linux-n900
...
Maxime, can you suggest a fix?

How about we do something like below (it needs a small edt-ft5x06 fixup that I'll send separately). Not tested.

Thanks.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   67 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 48 insertions(+), 28 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +5 -2
index b82b520..c132624 100644
@@ -14,14 +14,22 @@
 #include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 

drivers/input/touchscreen/of_touchscreen.c line 32

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +7 -2
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
 
-	return val;
+	*value = val;
+	return true;

This looks good.

Quoted 8 lines
Quoted 6 lines
Quoted 2 lines

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

I know but it is not documented anywhere (as far as I know) so I'd rather not rely on the implementation detail that might change in the future. This is not a hot path so extra assignment should not hurt.

It is actually: http://lxr.free-electrons.com/source/drivers/of/base.c#L1231

OK, fair enough. But not for ACPI properties (and I think we should convert the parser to device_property_read_xxx() so it is usable everywhere).

Thanks.

Signature · 1 line
Dmitry
maintainer
#30 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Quoted 36 lines · Dmitry Torokhov
Quoted 35 lines · Maxime Ripard
Quoted 33 lines · Dmitry Torokhov
Quoted 20 lines · Maxime Ripard

Hi Dmitry,

Quoted 17 lines · Dmitry Torokhov
(quoted diff) +10 -3
-static u32 of_get_optional_u32(struct device_node *np,
-			       const char *property)
+static bool touchscreen_get_property_u32(struct device_node *np,
+					 const char *property,
+					 unsigned int default_value,
+					 unsigned int *value)
 {
 	u32 val = 0;
+	int error;
 
-	of_property_read_u32(np, property, &val);
+	error = of_property_read_u32(np, property, &val);
+	if (error) {
+		*value = default_value;
+		return false;
+	}
Quoted 8 lines

Review

Quoted 3 lines
(quoted diff) +2 -1
-	return val;
+	*value = val;
+	return true;

This looks good.

However, of_property_read_u32 already does the right thing here by not update val if the property is not found.

I know but it is not documented anywhere (as far as I know) so I'd rather not rely on the implementation detail that might change in the future. This is not a hot path so extra assignment should not hurt.

Quoted 5 lines
Quoted 1 line

It is actually: http://lxr.free-electrons.com/source/drivers/of/base.c#L1231

OK, fair enough. But not for ACPI properties (and I think we should convert the parser to device_property_read_xxx() so it is usable everywhere).

By the way, the previous version was busted, this one should compile.

Signature · 19 lines
Dmitry


Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the
missing values to zero.

Reported-by: Pavel Machek <[email protected]>
Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/touchscreen/edt-ft5x06.c     |    2 -
 drivers/input/touchscreen/of_touchscreen.c |   69 ++++++++++++++++++----------
 drivers/input/touchscreen/tsc2005.c        |    2 -
 include/linux/input/touchscreen.h          |    5 +-
 4 files changed, 49 insertions(+), 29 deletions(-)
drivers/input/touchscreen/edt-ft5x06.c +1 -1
index 29d179a..394b1de 100644
@@ -1041,7 +1041,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
 			     0, tsdata->num_y * 64 - 1, 0, 0);
 
 	if (!pdata)
-		touchscreen_parse_of_params(input);
+		touchscreen_parse_of_params(input, true);
 
 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, INPUT_MT_DIRECT);
 	if (error) {
drivers/input/touchscreen/of_touchscreen.c +44 -25

92 lines not on this page · raw message

drivers/input/touchscreen/tsc2005.c +1 -1
index 72657c5..d8c025b 100644
@@ -709,7 +709,7 @@ static int tsc2005_probe(struct spi_device *spi)
 	input_set_abs_params(input_dev, ABS_PRESSURE, 0, max_p, fudge_p, 0);
 
 	if (np)
-		touchscreen_parse_of_params(input_dev);
+		touchscreen_parse_of_params(input_dev, false);
 
 	input_dev->open = tsc2005_open;
 	input_dev->close = tsc2005_close;
include/linux/input/touchscreen.h +3 -2
index 08a5ef6..eecc9ea 100644
@@ -12,9 +12,10 @@
 #include <linux/input.h>
 
 #ifdef CONFIG_OF
-void touchscreen_parse_of_params(struct input_dev *dev);
+void touchscreen_parse_of_params(struct input_dev *dev, bool multitouch);
 #else
-static inline void touchscreen_parse_of_params(struct input_dev *dev)
+static inline void touchscreen_parse_of_params(struct input_dev *dev,
+					       bool multitouch)
 {
 }
 #endif
author Tested-by
#31 lore raw

Re: Please revert 3eea8b5d68c801fec788b411582b803463834752 as it breaks touchscreen on n900.

Hi!

Quoted 6 lines

By the way, the previous version was busted, this one should compile.

Input: improve parsing OF parameters for touchscreens

From: Dmitry Torokhov <[email protected]>

Quoted 7 lines

When applying touchscreen parameters specified in device tree let's make
sure we keep whatever setup was done by the driver and not reset the missing values to zero.

Thanks!
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#32 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

In reply to Pavel Machek
Quoted 28 lines · Pavel Machek
Quoted 18 lines · Felipe Balbi

Hi,

Quoted 15 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -2
index 4b641c7..09089a6 100644
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
Quoted 8 lines

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 2 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -0
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 2 lines

Agreed. In parent email, I have list of two commits that should be reverted.

Well, not exactly. The kernel has never parsed touchscreen-max-x and touchscreen-max-y, however we did indeed change behavior of touchscreen_parse_of_params() to reset both max and fuzz if either one is present... I guess we can adjust the behavior it for the sake of tsc2005.

Signature · 1 line
Dmitry
#33 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

In reply to Felipe Balbi
Quoted 26 lines · Felipe Balbi

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 6 lines
$ git describe a38cfebb56898633687ab337fd53710e63a0aedd
v3.15-rc5-72-ga38cfebb5689

So, because this has been wrongly documented for so long, we should support both bindings. Sure, deprecate touchscreen-max-[xy], but they must still be supported, IMO.

This property has never been anything but a typo in a documentation of a single driver.

Feel free to fix that in that driver, but I don't see why the core code should handle that isolated typo.

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150529/0eb41258/attachment.sig>
#34 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 34 lines · Maxime Ripard
Quoted 26 lines · Felipe Balbi

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 6 lines
$ git describe a38cfebb56898633687ab337fd53710e63a0aedd
v3.15-rc5-72-ga38cfebb5689

So, because this has been wrongly documented for so long, we should support both bindings. Sure, deprecate touchscreen-max-[xy], but they must still be supported, IMO.

Quoted 5 lines

This property has never been anything but a typo in a documentation of a single driver.

Feel free to fix that in that driver, but I don't see why the core code should handle that isolated typo.

OK thanks for confirming. Will apply this into omap-for-v4.1/fixes.

Tony

#35 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 5 lines
Quoted 5 lines
Quoted 4 lines

So, because this has been wrongly documented for so long, we should support both bindings. Sure, deprecate touchscreen-max-[xy], but they must still be supported, IMO.

Quoted 7 lines
Quoted 5 lines

This property has never been anything but a typo in a documentation of a single driver.

Feel free to fix that in that driver, but I don't see why the core code should handle that isolated typo.

OK thanks for confirming. Will apply this into omap-for-v4.1/fixes.

Thanks!
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#36 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

In reply to Maxime Ripard
Quoted 34 lines · Maxime Ripard
Quoted 26 lines · Felipe Balbi

Hi,

Quoted 10 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +0 -0
index 4b641c7..09089a6 100644

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt Example: · line 36

Quoted 7 lines
Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;

IMHO, the older binding needs to be supported as well. It's fine to update the DTS for the new binding, but even Documentation says touchscreen-max-[xy] and if the driver changed that, the driver should be fixed too. Besides, it seems like this has been in tree since v3.16:

Quoted 6 lines
$ git describe a38cfebb56898633687ab337fd53710e63a0aedd
v3.15-rc5-72-ga38cfebb5689

So, because this has been wrongly documented for so long, we should support both bindings. Sure, deprecate touchscreen-max-[xy], but they must still be supported, IMO.

Quoted 5 lines

This property has never been anything but a typo in a documentation of a single driver.

Feel free to fix that in that driver, but I don't see why the core code should handle that isolated typo.

Well... the driver was not broken... before you did "cleanup" that did two functional changes. And yes, the dts should be fixed, but that does not make your "cleanup" good.

Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#37 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 3 lines · Pavel Machek

Well... the driver was not broken... before you did "cleanup" that did two functional changes. And yes, the dts should be fixed, but that does not make your "cleanup" good.

Whether it's good or not is arguable, and it really boils down to what we consider the default value when properties are missing.

If it's 0, then my code does the right thing. If it's undefined, well, I'd expect undefined behaviour to change without any notice.

Feel free to suggest any better solution.

Maxime

Signature · 10 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150601/ed3687f0/attachment.sig>
#38 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

Quoted 10 lines · Maxime Ripard
Quoted 3 lines · Pavel Machek

Well... the driver was not broken... before you did "cleanup" that did two functional changes. And yes, the dts should be fixed, but that does not make your "cleanup" good.

Whether it's good or not is arguable, and it really boils down to what we consider the default value when properties are missing.

If it's 0, then my code does the right thing. If it's undefined, well, I'd expect undefined behaviour to change without any notice.

It is "whatever was in the structure in the first place", as it was before you patched the code.
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
Acked-by on v1 1/1
#39 lore raw

Re: [PATCH] fix n900 dts file to work around 4.1 touchscreen regression on n900

In reply to Pavel Machek

Hi,

Quoted 25 lines · Pavel Machek

Fix dts to match what the Linux kernel expects. This works around touchscreen problems in 4.1 linux on Nokia n900.

Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt +2 -2
index 4b641c7..09089a6 100644
@@ -32,8 +32,8 @@ Example:
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;
 		touchscreen-max-pressure = <2048>;
 
 		ti,x-plate-ohms = <280>;
arch/arm/boot/dts/omap3-n900.dts +0 -0
index 5c16145..5f5e0f3 100644

arch/arm/boot/dts/omap3-n900.dts line 839

Quoted 10 lines
arch/arm/boot/dts/omap3-n900.dts +2 -2
@@ -832,8 +832,8 @@
 		touchscreen-fuzz-x = <4>;
 		touchscreen-fuzz-y = <7>;
 		touchscreen-fuzz-pressure = <2>;
-		touchscreen-max-x = <4096>;
-		touchscreen-max-y = <4096>;
+		touchscreen-size-x = <4096>;
+		touchscreen-size-y = <4096>;
 		touchscreen-max-pressure = <2048>;
 
 		ti,x-plate-ohms = <280>;

max-x/fuzz-x is a leftover from development of the generic bindings (Initially I used min and max).

If 3eea8b5d68c801fec788b411582b803463834752's behaviour should become the new behaviour it should be documented, that maximum and fuzz values are dependent on each other. Instead I suggest to restore the old behaviour.

-- Sebastian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150530/2f9f6d69/attachment.sig>

#40 lore raw

PATCH 1/1 Input: of_touchscreen - remove interdependence of max/fuzz values

Commit 3eea8b5d68c8 introduced a dependency between touchscreen-max-* and touchscreen-fuzz-*, so that either both must be specified or none of them. If only one of them is specified the other value will be reset to 0. This commit restores the previous behaviour, that the drivers default value will be used for the unspecified value.

Fixes 3eea8b5d68c8 (Input: of_touchscreen - rework the DT parsing function)
---
 drivers/input/touchscreen/of_touchscreen.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)
drivers/input/touchscreen/of_touchscreen.c +11 -14
index b82b520..7d2cf59 100644
@@ -42,8 +42,11 @@ static void touchscreen_set_params(struct input_dev *dev,
 	}
 
 	absinfo = &dev->absinfo[axis];
-	absinfo->maximum = max;
-	absinfo->fuzz = fuzz;
+
+	if (max)
+		absinfo->maximum = max;
+	if (fuzz)
+		absinfo->fuzz = fuzz;
 }
 
 /**
@@ -65,23 +68,17 @@ void touchscreen_parse_of_params(struct input_dev *dev)
 
 	maximum = of_get_optional_u32(np, "touchscreen-size-x");
 	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_X, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz);
-	}
+	touchscreen_set_params(dev, ABS_X, maximum, fuzz);
+	touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz);
 
 	maximum = of_get_optional_u32(np, "touchscreen-size-y");
 	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_Y, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_POSITION_Y, maximum, fuzz);
-	}
+	touchscreen_set_params(dev, ABS_Y, maximum, fuzz);
+	touchscreen_set_params(dev, ABS_MT_POSITION_Y, maximum, fuzz);
 
 	maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
 	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_PRESSURE, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_PRESSURE, maximum, fuzz);
-	}
+	touchscreen_set_params(dev, ABS_PRESSURE, maximum, fuzz);
+	touchscreen_set_params(dev, ABS_MT_PRESSURE, maximum, fuzz);
 }
 EXPORT_SYMBOL(touchscreen_parse_of_params);
Signature · 1 line
2.1.4
#41 lore raw

Re: [PATCH] Input: of_touchscreen - remove interdependence of max/fuzz values

Quoted 18 lines · Sebastian Reichel

Commit 3eea8b5d68c8 introduced a dependency between touchscreen-max-* and touchscreen-fuzz-*, so that either both must be specified or none of them. If only one of them is specified the other value will be reset to 0. This commit restores the previous behaviour, that the drivers default value will be used for the unspecified value.

Fixes 3eea8b5d68c8 (Input: of_touchscreen - rework the DT parsing function)
---
 drivers/input/touchscreen/of_touchscreen.c | 25 +++++++++++--------------
 1 file changed, 11 insertions(+), 14 deletions(-)
drivers/input/touchscreen/of_touchscreen.c +0 -0
index b82b520..7d2cf59 100644

drivers/input/touchscreen/of_touchscreen.c static void touchscreen_set_params(struct input_dev *dev, · line 49

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +5 -2
@@ -42,8 +42,11 @@ static void touchscreen_set_params(struct input_dev *dev,
 	}
 
 	absinfo = &dev->absinfo[axis];
-	absinfo->maximum = max;
-	absinfo->fuzz = fuzz;
+
+	if (max)
+		absinfo->maximum = max;
+	if (fuzz)
+		absinfo->fuzz = fuzz;

If driver sets absinfo->fuzz to 5, and then device tree specifies fuzz of 0, this means it will not be overwritten.

drivers/input/touchscreen/of_touchscreen.c void touchscreen_parse_of_params(struct input_dev *dev) · line 72

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +2 -4
@@ -65,23 +68,17 @@ void touchscreen_parse_of_params(struct input_dev *dev)
 
 	maximum = of_get_optional_u32(np, "touchscreen-size-x");
 	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_X, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz);
-	}
+	touchscreen_set_params(dev, ABS_X, maximum, fuzz);
+	touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz);

This will introduce warn_on() on axis that are not mentioned in the device tree. Same problem Dmitry did not like on my patch.
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#42 lore raw
In reply to Pavel Machek
Quoted 33 lines · Pavel Machek
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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:

Quoted 7 lines
                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.

Quoted 6 lines

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.

Maxime

Signature · 3 lines
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#43 lore raw
Quoted 46 lines · Maxime Ripard
Quoted 33 lines · Pavel Machek
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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:

Quoted 7 lines
                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.

Quoted 2 lines

Maybe replacing

Quoted 7 lines
Quoted 4 lines

+ 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, and after your "cleanup", you overwrite maximum with zero with fuzz is specified.

->maximum contained 4096 before, your code sees that it is not specified in the device tree, and you go ahead and replace ->maximum with 0, anyway.
Pavel

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
#44 lore raw
In reply to Maxime Ripard
Quoted 46 lines · Maxime Ripard
Quoted 33 lines · Pavel Machek
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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:

Quoted 7 lines
                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.

Quoted 2 lines

Maybe replacing

Quoted 7 lines
Quoted 4 lines

+ 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

drivers/input/touchscreen/of_touchscreen.c +9 -43
index b82b520..e626c8a 100644
@@ -11,39 +11,23 @@
 
 #include <linux/of.h>
 #include <linux/input.h>
-#include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-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");
 	}
 
 	absinfo = &dev->absinfo[axis];
-	absinfo->maximum = max;
-	absinfo->fuzz = fuzz;
+	of_property_read_u32(np, max, &absinfo->maximum);
+	of_property_read_u32(np, fuzz, &absinfo->fuzz);
 }
 
 /**
@@ -56,32 +40,14 @@ static void touchscreen_set_params(struct input_dev *dev,
  */
 void touchscreen_parse_of_params(struct input_dev *dev)
 {
-	struct device_node *np = dev->dev.parent->of_node;
 	u32 maximum, fuzz;
 
 	input_alloc_absinfo(dev);
 	if (!dev->absinfo)
 		return;
 
-	maximum = of_get_optional_u32(np, "touchscreen-size-x");
-	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-x");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_X, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_POSITION_X, maximum, fuzz);
-	}
-
-	maximum = of_get_optional_u32(np, "touchscreen-size-y");
-	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-y");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_Y, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_POSITION_Y, maximum, fuzz);
-	}
-
-	maximum = of_get_optional_u32(np, "touchscreen-max-pressure");
-	fuzz = of_get_optional_u32(np, "touchscreen-fuzz-pressure");
-	if (maximum || fuzz) {
-		touchscreen_set_params(dev, ABS_PRESSURE, maximum, fuzz);
-		touchscreen_set_params(dev, ABS_MT_PRESSURE, maximum, fuzz);
-	}
+	touchscreen_set_params(dev, ABS_X, "touchscreen-size-x", "touchscreen-fuzz-x");
+	touchscreen_set_params(dev, ABS_Y, "touchscreen-size-y", "touchscreen-fuzz-y");
+	touchscreen_set_params(dev, ABS_PRESSURE, "touchscreen-max-pressure", "touchscreen-fuzz-pressure");
 }
 EXPORT_SYMBOL(touchscreen_parse_of_params);
Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
maintainer
#45 lore raw
Quoted 102 lines · Pavel Machek
Quoted 46 lines · Maxime Ripard
Quoted 33 lines · Pavel Machek
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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:

Quoted 7 lines
                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.

Quoted 2 lines

Maybe replacing

Quoted 7 lines
Quoted 4 lines

+ 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

drivers/input/touchscreen/of_touchscreen.c +2 -12
index b82b520..e626c8a 100644
@@ -11,39 +11,23 @@
 
 #include <linux/of.h>
 #include <linux/input.h>
-#include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-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)) {

drivers/input/touchscreen/of_touchscreen.c line 25

Quoted 10 lines
drivers/input/touchscreen/of_touchscreen.c +2 -8
-		/*
-		 * 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.

Plus the code structure won't work well if we decide to add more to it (such as min, or flat, or resolution).

Thanks.

Signature · 1 line
Dmitry
#46 lore raw
Quoted 102 lines · Dmitry Torokhov
Quoted 101 lines · Pavel Machek
Quoted 46 lines · Maxime Ripard
Quoted 33 lines · Pavel Machek
Quoted 21 lines · Pavel Machek

Hi!

Quoted 3 lines

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
Quoted 8 lines

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:

Quoted 7 lines
                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.

Quoted 2 lines

Maybe replacing

Quoted 7 lines
Quoted 4 lines

+ 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

drivers/input/touchscreen/of_touchscreen.c +2 -12
index b82b520..e626c8a 100644
@@ -11,39 +11,23 @@
 
 #include <linux/of.h>
 #include <linux/input.h>
-#include <linux/input/mt.h>
 #include <linux/input/touchscreen.h>
 
-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;
 
Quoted 14 lines

drivers/input/touchscreen/of_touchscreen.c line 25

Quoted 11 lines
drivers/input/touchscreen/of_touchscreen.c +2 -8
 	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.

Quoted 2 lines

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

Signature · 2 lines
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html