* [PATCH V2 0/2] input: rotary-encoder: Support key events @ 2019-01-07 16:42 Donghoon Han 2019-01-07 16:42 ` [PATCH V2 1/2] Input: rotary_encoder - " Donghoon Han 2019-01-07 16:42 ` [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document Donghoon Han 0 siblings, 2 replies; 7+ messages in thread From: Donghoon Han @ 2019-01-07 16:42 UTC (permalink / raw) To: linux-input; +Cc: Dmitry Torokhov, Daniel Mack, linux-kernel This patchset supports generating EV_KEY, instead of EV_REL. An example could be a volume knob, with key events: - KEY_VOLUMEDOWN / KEY_VOLUMEUP [tested on imx6q platform, full period, half period] Donghoon Han (2): Input: rotary_encoder - Support key events Input: rotaty-encoder - Add DT binding document Documentation/devicetree/bindings/input/rotary-encoder.txt | 12 ++++++++++++ drivers/input/misc/rotary_encoder.c | 24 ++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH V2 1/2] Input: rotary_encoder - Support key events 2019-01-07 16:42 [PATCH V2 0/2] input: rotary-encoder: Support key events Donghoon Han @ 2019-01-07 16:42 ` Donghoon Han 2019-01-07 16:42 ` [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document Donghoon Han 1 sibling, 0 replies; 7+ messages in thread From: Donghoon Han @ 2019-01-07 16:42 UTC (permalink / raw) To: linux-input; +Cc: Dmitry Torokhov, Daniel Mack, linux-kernel, Steven Han From: Steven Han <nazgul33@gmail.com> Support generating EV_KEY pair, instead of EV_REL. Signed-off-by: Donghoon Han <nazgul33@gmail.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Daniel Mack <daniel@caiaq.de> To: linux-input@vger.kernel.org --- V2: added missing input_sync() --- drivers/input/misc/rotary_encoder.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c index 72eee6d55527..0014a7d9f8f9 100644 --- a/drivers/input/misc/rotary_encoder.c +++ b/drivers/input/misc/rotary_encoder.c @@ -41,6 +41,8 @@ struct rotary_encoder { u32 steps; u32 axis; bool relative_axis; + bool relative_keys; + u32 keycodes[2]; bool rollover; enum rotary_encoder_encoding encoding; @@ -79,6 +81,11 @@ static void rotary_encoder_report_event(struct rotary_encoder *encoder) if (encoder->relative_axis) { input_report_rel(encoder->input, encoder->axis, encoder->dir); + } else if (encoder->relative_keys) { + u32 keycode = encoder->keycodes[encoder->dir > 0]; + input_event(encoder->input, EV_KEY, keycode, 1); + input_sync(encoder->input); + input_event(encoder->input, EV_KEY, keycode, 0); } else { unsigned int pos = encoder->pos; @@ -237,6 +244,16 @@ static int rotary_encoder_probe(struct platform_device *pdev) device_property_read_u32(dev, "linux,axis", &encoder->axis); encoder->relative_axis = device_property_read_bool(dev, "rotary-encoder,relative-axis"); + encoder->relative_keys = + device_property_read_bool(dev, "rotary-encoder,relative-keys"); + if (encoder->relative_keys) { + err = device_property_read_u32_array(dev, + "rotary-encoder,relative-keycodes", + encoder->keycodes, 2); + if (err) + dev_err(dev, "unable to get keycodes: %d\n", err); + return err; + } encoder->gpios = devm_gpiod_get_array(dev, NULL, GPIOD_IN); if (IS_ERR(encoder->gpios)) { @@ -260,9 +277,12 @@ static int rotary_encoder_probe(struct platform_device *pdev) input->id.bustype = BUS_HOST; input->dev.parent = dev; - if (encoder->relative_axis) + if (encoder->relative_axis) { input_set_capability(input, EV_REL, encoder->axis); - else + } else if (encoder->relative_keys) { + input_set_capability(input, EV_KEY, encoder->keycodes[0]); + input_set_capability(input, EV_KEY, encoder->keycodes[1]); + } else input_set_abs_params(input, encoder->axis, 0, encoder->steps, 0, 1); -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document 2019-01-07 16:42 [PATCH V2 0/2] input: rotary-encoder: Support key events Donghoon Han 2019-01-07 16:42 ` [PATCH V2 1/2] Input: rotary_encoder - " Donghoon Han @ 2019-01-07 16:42 ` Donghoon Han 2019-01-15 3:52 ` Dmitry Torokhov 2019-01-15 3:53 ` Dmitry Torokhov 1 sibling, 2 replies; 7+ messages in thread From: Donghoon Han @ 2019-01-07 16:42 UTC (permalink / raw) To: linux-input; +Cc: Dmitry Torokhov, Daniel Mack, linux-kernel, devicetree Add DT binding document for rotary-encoder, keycode options. Signed-off-by: Donghoon Han <nazgul33@gmail.com> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Daniel Mack <daniel@caiaq.de> Cc: devicetree@vger.kernel.org To: linux-input@vger.kernel.org --- .../devicetree/bindings/input/rotary-encoder.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt index f99fe5cdeaec..9986ec2af2d4 100644 --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt @@ -12,6 +12,10 @@ Optional properties: - rotary-encoder,relative-axis: register a relative axis rather than an absolute one. Relative axis will only generate +1/-1 events on the input device, hence no steps need to be passed. +- rotary-encoder,relative-keys : generate pair of key events. This setting + behaves just like relative-axis, generating key events instead. + (Keycodes[2] corresponds to -1/1 events.) +- rotary-encoder,relative-keycodes : keycodes for relative-keys - rotary-encoder,rollover: Automatic rollover when the rotary value becomes greater than the specified steps or smaller than 0. For absolute axis only. - rotary-encoder,steps-per-period: Number of steps (stable states) per period. @@ -48,3 +52,11 @@ Example: rotary-encoder,encoding = "binary"; rotary-encoder,rollover; }; + + rotary@2 { + compatible = "rotary-encoder"; + gpios = <&gpio 21 0>, <&gpio 22 0>; + rotary-encoder,relative-keys; + rotary-encoder,relative-keycode = <103>, <108>; + rotary-encoder,steps-per-period = <2>; + }; -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document 2019-01-07 16:42 ` [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document Donghoon Han @ 2019-01-15 3:52 ` Dmitry Torokhov 2019-01-15 20:29 ` Rob Herring 2019-01-15 3:53 ` Dmitry Torokhov 1 sibling, 1 reply; 7+ messages in thread From: Dmitry Torokhov @ 2019-01-15 3:52 UTC (permalink / raw) To: Donghoon Han; +Cc: linux-input, Daniel Mack, linux-kernel, devicetree On Tue, Jan 08, 2019 at 01:42:49AM +0900, Donghoon Han wrote: > Add DT binding document for rotary-encoder, keycode options. > > Signed-off-by: Donghoon Han <nazgul33@gmail.com> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> > Cc: Daniel Mack <daniel@caiaq.de> > Cc: devicetree@vger.kernel.org > To: linux-input@vger.kernel.org > --- > .../devicetree/bindings/input/rotary-encoder.txt | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt > index f99fe5cdeaec..9986ec2af2d4 100644 > --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt > +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt > @@ -12,6 +12,10 @@ Optional properties: > - rotary-encoder,relative-axis: register a relative axis rather than an > absolute one. Relative axis will only generate +1/-1 events on the input > device, hence no steps need to be passed. > +- rotary-encoder,relative-keys : generate pair of key events. This setting > + behaves just like relative-axis, generating key events instead. > + (Keycodes[2] corresponds to -1/1 events.) > +- rotary-encoder,relative-keycodes : keycodes for relative-keys Given that keycodes are linux-specific, I think the property should be linux,keycodes. Also, I am not sure we need separate rotary-encoder,relative-keys property as we can infer that we want to generate keys from presence of linux,keycodes property. Rob, any comments? > - rotary-encoder,rollover: Automatic rollover when the rotary value becomes > greater than the specified steps or smaller than 0. For absolute axis only. > - rotary-encoder,steps-per-period: Number of steps (stable states) per period. > @@ -48,3 +52,11 @@ Example: > rotary-encoder,encoding = "binary"; > rotary-encoder,rollover; > }; > + > + rotary@2 { > + compatible = "rotary-encoder"; > + gpios = <&gpio 21 0>, <&gpio 22 0>; > + rotary-encoder,relative-keys; > + rotary-encoder,relative-keycode = <103>, <108>; > + rotary-encoder,steps-per-period = <2>; > + }; > -- > 2.17.1 > Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document 2019-01-15 3:52 ` Dmitry Torokhov @ 2019-01-15 20:29 ` Rob Herring 2019-03-22 1:04 ` Alexey Slepov 0 siblings, 1 reply; 7+ messages in thread From: Rob Herring @ 2019-01-15 20:29 UTC (permalink / raw) To: Dmitry Torokhov Cc: Donghoon Han, linux-input, Daniel Mack, linux-kernel, devicetree On Mon, Jan 14, 2019 at 07:52:21PM -0800, Dmitry Torokhov wrote: > On Tue, Jan 08, 2019 at 01:42:49AM +0900, Donghoon Han wrote: > > Add DT binding document for rotary-encoder, keycode options. > > > > Signed-off-by: Donghoon Han <nazgul33@gmail.com> > > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> > > Cc: Daniel Mack <daniel@caiaq.de> > > Cc: devicetree@vger.kernel.org > > To: linux-input@vger.kernel.org > > --- > > .../devicetree/bindings/input/rotary-encoder.txt | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt > > index f99fe5cdeaec..9986ec2af2d4 100644 > > --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt > > +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt > > @@ -12,6 +12,10 @@ Optional properties: > > - rotary-encoder,relative-axis: register a relative axis rather than an > > absolute one. Relative axis will only generate +1/-1 events on the input > > device, hence no steps need to be passed. > > +- rotary-encoder,relative-keys : generate pair of key events. This setting > > + behaves just like relative-axis, generating key events instead. > > + (Keycodes[2] corresponds to -1/1 events.) > > +- rotary-encoder,relative-keycodes : keycodes for relative-keys > > Given that keycodes are linux-specific, I think the property should be > linux,keycodes. Also, I am not sure we need separate > rotary-encoder,relative-keys property as we can infer that we want to > generate keys from presence of linux,keycodes property. > > Rob, any comments? Yes, I had similar thoughts. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Re: [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document 2019-01-15 20:29 ` Rob Herring @ 2019-03-22 1:04 ` Alexey Slepov 0 siblings, 0 replies; 7+ messages in thread From: Alexey Slepov @ 2019-03-22 1:04 UTC (permalink / raw) To: Rob Herring, Dmitry Torokhov Cc: Donghoon Han, linux-input, Daniel Mack, linux-kernel, devicetree Hello, i used this rotary-encoder patch in my embedded project and found two errors: First, in drivers/input/misc/rotary_encoder.c, at @@ -237,6 +244,16 @@: instead of + if (err) + dev_err(dev, "unable to get keycodes: %d\n", err); + return err; it must be + if (err) { + dev_err(dev, "unable to get keycodes: %d\n", err); + return err; + } otherwise successful creation of device is not possible. Second, a typo in Documentation/devicetree/bindings/input/rotary-encoder.txt, at @@ -48,3 +52,11 @@: instead of + rotary-encoder,relative-keycode = <103>, <108>; it should be + rotary-encoder,relative-keycodes = <103>, <108>; otherwise keycodes are not found. I am sorry, I know that E-Mail style is not good. I have no time right now, but I'll be back in two weeks. Someone, maybe Mr. Han, could submit a new version of the patch. If not, I'll try to do it on my return. (it could take some time, since I am new to patchwork) Best Regards and thanks Alexey Slepov ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document 2019-01-07 16:42 ` [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document Donghoon Han 2019-01-15 3:52 ` Dmitry Torokhov @ 2019-01-15 3:53 ` Dmitry Torokhov 1 sibling, 0 replies; 7+ messages in thread From: Dmitry Torokhov @ 2019-01-15 3:53 UTC (permalink / raw) To: Donghoon Han, Rob Herring Cc: linux-input, Daniel Mack, linux-kernel, devicetree [ resending to Rob... ] On Tue, Jan 08, 2019 at 01:42:49AM +0900, Donghoon Han wrote: > Add DT binding document for rotary-encoder, keycode options. > > Signed-off-by: Donghoon Han <nazgul33@gmail.com> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> > Cc: Daniel Mack <daniel@caiaq.de> > Cc: devicetree@vger.kernel.org > To: linux-input@vger.kernel.org > --- > .../devicetree/bindings/input/rotary-encoder.txt | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt > index f99fe5cdeaec..9986ec2af2d4 100644 > --- a/Documentation/devicetree/bindings/input/rotary-encoder.txt > +++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt > @@ -12,6 +12,10 @@ Optional properties: > - rotary-encoder,relative-axis: register a relative axis rather than an > absolute one. Relative axis will only generate +1/-1 events on the input > device, hence no steps need to be passed. > +- rotary-encoder,relative-keys : generate pair of key events. This setting > + behaves just like relative-axis, generating key events instead. > + (Keycodes[2] corresponds to -1/1 events.) > +- rotary-encoder,relative-keycodes : keycodes for relative-keys Given that keycodes are linux-specific, I think the property should be linux,keycodes. Also, I am not sure we need separate rotary-encoder,relative-keys property as we can infer that we want to generate keys from presence of linux,keycodes property. Rob, any comments? > - rotary-encoder,rollover: Automatic rollover when the rotary value becomes > greater than the specified steps or smaller than 0. For absolute axis only. > - rotary-encoder,steps-per-period: Number of steps (stable states) per period. > @@ -48,3 +52,11 @@ Example: > rotary-encoder,encoding = "binary"; > rotary-encoder,rollover; > }; > + > + rotary@2 { > + compatible = "rotary-encoder"; > + gpios = <&gpio 21 0>, <&gpio 22 0>; > + rotary-encoder,relative-keys; > + rotary-encoder,relative-keycode = <103>, <108>; > + rotary-encoder,steps-per-period = <2>; > + }; > -- > 2.17.1 > Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-03-22 1:04 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-01-07 16:42 [PATCH V2 0/2] input: rotary-encoder: Support key events Donghoon Han 2019-01-07 16:42 ` [PATCH V2 1/2] Input: rotary_encoder - " Donghoon Han 2019-01-07 16:42 ` [PATCH V2 2/2] Input: rotaty-encoder - Add DT binding document Donghoon Han 2019-01-15 3:52 ` Dmitry Torokhov 2019-01-15 20:29 ` Rob Herring 2019-03-22 1:04 ` Alexey Slepov 2019-01-15 3:53 ` Dmitry Torokhov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).