All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Fabrice Gasnier <fabrice.gasnier@st.com>
Cc: <benjamin.gaignard@linaro.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <mcoquelin.stm32@gmail.com>,
	<alexandre.torgue@st.com>, <benjamin.gaignard@st.com>,
	<linux-iio@vger.kernel.org>, <lars@metafoo.de>, <knaack.h@gmx.de>,
	<pmeerw@pmeerw.net>
Subject: Re: [PATCH 3/4] iio: trigger: stm32-timer: fix get/set down count direction
Date: Sun, 30 Jul 2017 14:46:41 +0100	[thread overview]
Message-ID: <20170730144641.7a8825eb@kernel.org> (raw)
In-Reply-To: <1501172340-8448-4-git-send-email-fabrice.gasnier@st.com>

On Thu, 27 Jul 2017 18:18:59 +0200
Fabrice Gasnier <fabrice.gasnier@st.com> wrote:

> Fixes: 4adec7da0536 ("iio: stm32 trigger: Add quadrature encoder device")
> 
> This fixes two issues:
> - stm32_set_count_direction: to set down direction
> - stm32_get_count_direction: to get down direction
> 
> IIO core provides/expects value to be an index of iio_enum items array.
> This needs to be turned by these routines into TIM_CR1_DIR (e.g. BIT(4))
> value.
> Also, report error when attempting to write direction, when in encoder
> mode: in this case, direction is read only (given by encoder inputs).
> 
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Applied to the fixes-togreg branch of iio.git.
Thanks,

Jonathan
> ---
>  drivers/iio/trigger/stm32-timer-trigger.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/trigger/stm32-timer-trigger.c b/drivers/iio/trigger/stm32-timer-trigger.c
> index 107918b..d28aa02 100644
> --- a/drivers/iio/trigger/stm32-timer-trigger.c
> +++ b/drivers/iio/trigger/stm32-timer-trigger.c
> @@ -594,13 +594,20 @@ static int stm32_get_quadrature_mode(struct iio_dev *indio_dev,
>  
>  static int stm32_set_count_direction(struct iio_dev *indio_dev,
>  				     const struct iio_chan_spec *chan,
> -				     unsigned int mode)
> +				     unsigned int dir)
>  {
>  	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
> +	u32 val;
> +	int mode;
>  
> -	regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR, mode);
> +	/* In encoder mode, direction is RO (given by TI1/TI2 signals) */
> +	regmap_read(priv->regmap, TIM_SMCR, &val);
> +	mode = (val & TIM_SMCR_SMS) - 1;
> +	if ((mode >= 0) || (mode < ARRAY_SIZE(stm32_quadrature_modes)))
> +		return -EBUSY;
>  
> -	return 0;
> +	return regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR,
> +				  dir ? TIM_CR1_DIR : 0);
>  }
>  
>  static int stm32_get_count_direction(struct iio_dev *indio_dev,
> @@ -611,7 +618,7 @@ static int stm32_get_count_direction(struct iio_dev *indio_dev,
>  
>  	regmap_read(priv->regmap, TIM_CR1, &cr1);
>  
> -	return (cr1 & TIM_CR1_DIR);
> +	return ((cr1 & TIM_CR1_DIR) ? 1 : 0);
>  }
>  
>  static const struct iio_enum stm32_count_direction_enum = {


WARNING: multiple messages have this Message-ID (diff)
From: jic23@kernel.org (Jonathan Cameron)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] iio: trigger: stm32-timer: fix get/set down count direction
Date: Sun, 30 Jul 2017 14:46:41 +0100	[thread overview]
Message-ID: <20170730144641.7a8825eb@kernel.org> (raw)
In-Reply-To: <1501172340-8448-4-git-send-email-fabrice.gasnier@st.com>

On Thu, 27 Jul 2017 18:18:59 +0200
Fabrice Gasnier <fabrice.gasnier@st.com> wrote:

> Fixes: 4adec7da0536 ("iio: stm32 trigger: Add quadrature encoder device")
> 
> This fixes two issues:
> - stm32_set_count_direction: to set down direction
> - stm32_get_count_direction: to get down direction
> 
> IIO core provides/expects value to be an index of iio_enum items array.
> This needs to be turned by these routines into TIM_CR1_DIR (e.g. BIT(4))
> value.
> Also, report error when attempting to write direction, when in encoder
> mode: in this case, direction is read only (given by encoder inputs).
> 
> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Applied to the fixes-togreg branch of iio.git.
Thanks,

Jonathan
> ---
>  drivers/iio/trigger/stm32-timer-trigger.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/trigger/stm32-timer-trigger.c b/drivers/iio/trigger/stm32-timer-trigger.c
> index 107918b..d28aa02 100644
> --- a/drivers/iio/trigger/stm32-timer-trigger.c
> +++ b/drivers/iio/trigger/stm32-timer-trigger.c
> @@ -594,13 +594,20 @@ static int stm32_get_quadrature_mode(struct iio_dev *indio_dev,
>  
>  static int stm32_set_count_direction(struct iio_dev *indio_dev,
>  				     const struct iio_chan_spec *chan,
> -				     unsigned int mode)
> +				     unsigned int dir)
>  {
>  	struct stm32_timer_trigger *priv = iio_priv(indio_dev);
> +	u32 val;
> +	int mode;
>  
> -	regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR, mode);
> +	/* In encoder mode, direction is RO (given by TI1/TI2 signals) */
> +	regmap_read(priv->regmap, TIM_SMCR, &val);
> +	mode = (val & TIM_SMCR_SMS) - 1;
> +	if ((mode >= 0) || (mode < ARRAY_SIZE(stm32_quadrature_modes)))
> +		return -EBUSY;
>  
> -	return 0;
> +	return regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_DIR,
> +				  dir ? TIM_CR1_DIR : 0);
>  }
>  
>  static int stm32_get_count_direction(struct iio_dev *indio_dev,
> @@ -611,7 +618,7 @@ static int stm32_get_count_direction(struct iio_dev *indio_dev,
>  
>  	regmap_read(priv->regmap, TIM_CR1, &cr1);
>  
> -	return (cr1 & TIM_CR1_DIR);
> +	return ((cr1 & TIM_CR1_DIR) ? 1 : 0);
>  }
>  
>  static const struct iio_enum stm32_count_direction_enum = {

  reply	other threads:[~2017-07-30 13:46 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-27 16:18 [PATCH 0/4] iio: trigger: stm32-timer fixes Fabrice Gasnier
2017-07-27 16:18 ` Fabrice Gasnier
2017-07-27 16:18 ` [PATCH 1/4] iio: trigger: stm32-timer: fix quadrature mode get routine Fabrice Gasnier
2017-07-27 16:18   ` Fabrice Gasnier
2017-07-30 13:43   ` Jonathan Cameron
2017-07-30 13:43     ` Jonathan Cameron
2017-07-27 16:18 ` [PATCH 2/4] iio: trigger: stm32-timer: fix write_raw return value Fabrice Gasnier
2017-07-27 16:18   ` Fabrice Gasnier
2017-07-30 13:45   ` Jonathan Cameron
2017-07-30 13:45     ` Jonathan Cameron
2017-07-27 16:18 ` [PATCH 3/4] iio: trigger: stm32-timer: fix get/set down count direction Fabrice Gasnier
2017-07-27 16:18   ` Fabrice Gasnier
2017-07-30 13:46   ` Jonathan Cameron [this message]
2017-07-30 13:46     ` Jonathan Cameron
2017-07-27 16:19 ` [PATCH 4/4] iio: trigger: stm32-timer: add enable attribute Fabrice Gasnier
2017-07-27 16:19   ` Fabrice Gasnier
2017-07-30 13:49   ` Jonathan Cameron
2017-07-30 13:49     ` Jonathan Cameron
2017-07-28  8:14 ` [PATCH 0/4] iio: trigger: stm32-timer fixes Benjamin Gaignard
2017-07-28  8:14   ` Benjamin Gaignard
2017-07-28  8:14   ` Benjamin Gaignard

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=20170730144641.7a8825eb@kernel.org \
    --to=jic23@kernel.org \
    --cc=alexandre.torgue@st.com \
    --cc=benjamin.gaignard@linaro.org \
    --cc=benjamin.gaignard@st.com \
    --cc=fabrice.gasnier@st.com \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=pmeerw@pmeerw.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.