devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <u.kleine-koenig-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: Daniel Mack <daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org
Subject: Re: properties to describe a rotary encoder
Date: Fri, 16 Oct 2015 14:40:10 +0200	[thread overview]
Message-ID: <20151016124010.GL3982@pengutronix.de> (raw)
In-Reply-To: <5620CCD1.8030509-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>

Hello,

On Fri, Oct 16, 2015 at 12:09:21PM +0200, Daniel Mack wrote:
> Hi,
> 
> On 10/16/2015 11:59 AM, Uwe Kleine-König wrote:
> > there is already a driver for rotary encoders described in
> > Documentation/devicetree/bindings/input/rotary-encoder.txt. This however
> > is not suitable to describe the device I have here for two reasons:
> > 
> > First the driver can only make use of 2 gpio lines, while the device
> > here has 4 lines,
> 
> How does the phase diagram of that device look like, on what edges is
> the system supposed to trigger?
> 
> > so I have 16 sectors instead of only 4. And the
> 
> What's a 'sector'?

My imagination is the image on the right on
https://en.wikipedia.org/wiki/Rotary_encoder#Gray_encoding .

With more than period per 360° "sector" is probably not a lucky
choice. A colleague suggested "increment" instead, maybe this one is
better? So with a 4-line encoder there are 16 increments per period
while a 2-line encoder has only 4 increments per period.

An rotary encoder that is currently described by:

	{
		compatible = "rotary-encoder";
		gpios = <..>, <..>;
		rotary-encoder,steps = <24>;
		rotary-encoder,half-period;
	}

would then be described as:

	{
		compatible = ...;
		gpios = <..>, <..>;
		rotary-encoder,steps = <24>;
		rotary-encoder,increments-per-step = <2>;
	}

, an encoder without "..,half-period" would get
"...,increments-per-step = <4>" and for mine I'd use

	{
		compatible = ...;
		gpios = <..>, <..>, <..>, <..>;
		rotary-encoder,steps = <16>;
		rotary-encoder,increments-per-step = <1>;
	}

> > second difference is that my encoder has a detend for each sector while
> > the driver only supports "half-period" and "full-period" (default) mode.
> > These names really only make sense for the 2 line case and mean the
> > encoder has detends in 2 or 1 sector respectively.
> > 
> > So I'm thinking about how to generalize the description to allow to add
> > support for "my" device.
> > 
> > For the added gpio lines it's easy, that's just allowing more than two
> > gpios for the "gpios" property.
> 
> Doesn't the number of GPIOs already give enough information to implement
> proper support? Maybe there's no need for any other properties here.

No, that alone isn't enough because "my" encoder has one increment per
step while the driver only supports two increments per step
("half-period") or four increments per step (absence of "half-period").

> > Currently there is a property "rotary-encoder,steps" that describes the
> > number of detends in a full turnaround. So if we stick to "steps" to
> > describe detends, maybe something like "sectors-per-step" (with a
> > default of 4) would be needed to describe what "half-period" is now.
> > Does this make sense? Maybe someone has a better suggestion?
> 
> I'm not sure what a sector is supposed to refer to, but the number of
> steps per 360° is something that can vary for both 2-line and 4-line
> versions of a rotary encoder. So isn't that unrelated?

Yes, this is an (nearly) orthogonal property. But for a 4-line encoder
I'd say that "half-period" would mean 8 increments per step (because a
full period is 2**4 == 16 increments), and that is hardly sensible.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

      parent reply	other threads:[~2015-10-16 12:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-16  9:59 properties to describe a rotary encoder Uwe Kleine-König
     [not found] ` <20151016095951.GA6533-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2015-10-16 10:09   ` Daniel Mack
     [not found]     ` <5620CCD1.8030509-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>
2015-10-16 12:40       ` Uwe Kleine-König [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151016124010.GL3982@pengutronix.de \
    --to=u.kleine-koenig-bicnvbalz9megne8c9+irq@public.gmane.org \
    --cc=daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).