From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Mack Subject: Re: [PATCH RFC 0/3] input: rotary_encoder: use more than two gpios as input Date: Sat, 5 Dec 2015 20:50:18 +0100 Message-ID: <56633FFA.5080708@zonque.org> References: <1449050834-31779-1-git-send-email-u.kleine-koenig@pengutronix.de> <2266988.l83Fg404My@pcimr> <20151202185920.GO5072@pengutronix.de> <21976926.6E4NCDDElu@pcimr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <21976926.6E4NCDDElu@pcimr> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Rojhalat Ibrahim , =?UTF-8?Q?Uwe_Kleine-K=c3=b6nig?= Cc: devicetree@vger.kernel.org, Sylvain Rochet , Dmitry Torokhov , Johan Hovold , Haojian Zhuang , linux-arm-kernel@lists.infradead.org, kernel@pengutronix.de, linux-input@vger.kernel.org, Robert Jarzmik , =?UTF-8?Q?Guido_Mart=c3=adnez?= , Ezequiel Garcia List-Id: linux-input@vger.kernel.org T24gMTIvMDMvMjAxNSAwMjowMSBQTSwgUm9qaGFsYXQgSWJyYWhpbSB3cm90ZToKPiBPbiBXZWRu ZXNkYXkgMDIgRGVjZW1iZXIgMjAxNSAxOTo1OToyMCBVd2UgS2xlaW5lLUvDtm5pZyB3cm90ZToK Cj4+IEkgaGF2ZSBhIHJlYWwgcm90YXJ5IGVuY29kZXIgd2l0aCA0IGlucHV0IGxpbmVzIGFuZCBz byAxNgo+PiBkaXN0aW5ndWlzaGFibGUgcG9zaXRpb25zLiBJdCB3b3VsZCBiZSBkZXNjcmliZWQg YXM6Cj4+Cj4+IAljb21wYXRpYmxlID0gInJvdGFyeS1lbmNvZGVyIjsKPj4gCWdwaW9zID0gPCZn cGlvNCAxMiBHUElPX0FDVElWRV9ISUdIPiwgPCZncGlvNCAxMSBHUElPX0FDVElWRV9ISUdIPiwg PCZncGlvNCAxMCBHUElPX0FDVElWRV9ISUdIPiwgPCZncGlvNCA5IEdQSU9fQUNUSVZFX0hJR0g+ Owo+PiAJcm90YXJ5LWVuY29kZXIsc3RlcHMgPSA8MTY+Owo+PiAJcm90YXJ5LWVuY29kZXIsc3Rl cHMtcGVyLXBlcmlvZCA9IDwxNj47Cj4+Cj4+IHdpdGggdGhlIGJpbmRpbmcgaW1wbGVtZW50ZWQg aW4gbXkgcGF0Y2hlcy4KPj4KPj4gVGhlIHdpa2lwZWRpYSBhcnRpY2xlIGFib3V0IHJvdGFyeSBl bmNvZGVyc1sxXSB1c2VzIGEgZGV2aWNlIHdpdGggMwo+PiBpbnB1dCBsaW5lcyB0byBleHBsYWlu IGdyYXkgZW5jb2RpbmcuIFNvIEkgZGlkbid0IGNvbnNpZGVyICJteSIgZGV2aWNlCj4+IGFzIGV4 b3RpYyB1cCB0byBub3cuCj4+Cj4gCj4gU28geW91IGhhdmUgYW4gYWJzb2x1dGUgZW5jb2Rlci4g RnJvbSB0aGUgc3RhdGUgb2YgdGhlIGZvdXIgaW5wdXQgbGluZXMgeW91Cj4gY2FuIGRldGVybWlu ZSB0aGUgYWJzb2x1dGUgcG9zaXRpb24gdmFsdWUuIFRoZXJlIGlzIG5vIG5lZWQgdG8gY291bnQg c3RlcHMuCj4gQXQgbGVhc3QgdGhhdCdzIHRoZSBvcmlnaW5hbCBwdXJwb3NlIG9mIHlvdXIgZGV2 aWNlLgo+IAo+IE9mIGNvdXJzZSBpdCBtaWdodCBiZSBjb25jZWl2YWJsZSB0byB1c2UgdGhhdCBr aW5kIG9mIGFic29sdXRlIGVuY29kZXIgaW4gYW4KPiBpbmNyZW1lbnRhbCB3YXkgYW5kIGNvdW50 IHRoZSBzdGVwcyB0aHJvdWdob3V0IG11bHRpcGxlIHJldm9sdXRpb25zLgo+IEJ1dCB3aHkgd291 bGQgeW91IGRvIHRoYXQ/IFRoZSByZXNvbHV0aW9uIG9mIDE2IHN0ZXBzIHBlciByZXZvbHV0aW9u IGlzIG5vdAo+IHZlcnkgZ29vZCAoaW5jcmVtZW50YWwgZW5jb2RlcnMgb2Z0ZW4gaGF2ZSBodW5k cmVkcyBvciB0aG91c2FuZHMgb2Ygc3RlcHMgcGVyCj4gcmV2b2x1dGlvbikuIEFuZCB0aGUgd2hv bGUgcG9pbnQgb2YgYW4gYWJzb2x1dGUgZW5jb2RlciBpcyB0aGF0IHlvdSBhcmUgYWJsZQo+IHRv IGRldGVybWluZSB0aGUgY3VycmVudCBwb3NpdGlvbiBhdCBhbnkgdGltZSBqdXN0IGJ5IGxvb2tp bmcgYXQgdGhlIGlucHV0cwo+IHdpdGhvdXQgaGF2aW5nIHRvIGNvdW50IHN0ZXBzLgoKWWVzLCB5 b3UncmUgcmlnaHQsIHRoYXQncyBhY3R1YWxseSBhIHZlcnkgZGlmZmVyZW50IGtpbmQgb2YgZGV2 aWNlIHdoaWNoCnNob3VsZCBiZSBzdXBwb3J0ZWQgd2l0aCBhIGRpZmZlcmVudCBtb2RlIG9yIHNv bWV0aGluZywgc28gdGhhdCB0aGUKb3V0cHV0IG9mIHRoZSBkcml2ZXIgcmVmbGVjdHMgdGhlIGFi c29sdXRlIHN0YXRlIG9mIHRoZSBlbmNvZGVyLiBUaGlzCmV2ZW4gc2ltcGxpZmllcyB0aGluZ3Mg aW4gdGhlIGRyaXZlcjogVGhlIGVudGlyZSBzdGF0ZSBsb2dpYyB3b3VsZCBiZQpieXBhc3NlZCBp biB0aGlzIG1vZGUsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgR1BJTyBsaW5lcyB3b3Vs ZCBiZQp1c2VkIGRpcmVjdGx5IHRvIGdldCB0aGUgYWJzb2x1dGUgdmFsdWUuIE1ha2VzIHNlbnNl PwoKClRoYW5rcywKRGFuaWVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVs QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1hcm0ta2VybmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@zonque.org (Daniel Mack) Date: Sat, 5 Dec 2015 20:50:18 +0100 Subject: [PATCH RFC 0/3] input: rotary_encoder: use more than two gpios as input In-Reply-To: <21976926.6E4NCDDElu@pcimr> References: <1449050834-31779-1-git-send-email-u.kleine-koenig@pengutronix.de> <2266988.l83Fg404My@pcimr> <20151202185920.GO5072@pengutronix.de> <21976926.6E4NCDDElu@pcimr> Message-ID: <56633FFA.5080708@zonque.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 12/03/2015 02:01 PM, Rojhalat Ibrahim wrote: > On Wednesday 02 December 2015 19:59:20 Uwe Kleine-K?nig wrote: >> I have a real rotary encoder with 4 input lines and so 16 >> distinguishable positions. It would be described as: >> >> compatible = "rotary-encoder"; >> gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>, <&gpio4 11 GPIO_ACTIVE_HIGH>, <&gpio4 10 GPIO_ACTIVE_HIGH>, <&gpio4 9 GPIO_ACTIVE_HIGH>; >> rotary-encoder,steps = <16>; >> rotary-encoder,steps-per-period = <16>; >> >> with the binding implemented in my patches. >> >> The wikipedia article about rotary encoders[1] uses a device with 3 >> input lines to explain gray encoding. So I didn't consider "my" device >> as exotic up to now. >> > > So you have an absolute encoder. From the state of the four input lines you > can determine the absolute position value. There is no need to count steps. > At least that's the original purpose of your device. > > Of course it might be conceivable to use that kind of absolute encoder in an > incremental way and count the steps throughout multiple revolutions. > But why would you do that? The resolution of 16 steps per revolution is not > very good (incremental encoders often have hundreds or thousands of steps per > revolution). And the whole point of an absolute encoder is that you are able > to determine the current position at any time just by looking at the inputs > without having to count steps. Yes, you're right, that's actually a very different kind of device which should be supported with a different mode or something, so that the output of the driver reflects the absolute state of the encoder. This even simplifies things in the driver: The entire state logic would be bypassed in this mode, and the current state of the GPIO lines would be used directly to get the absolute value. Makes sense? Thanks, Daniel