All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Janusz Użycki" <j.uzycki@elproma.com.pl>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Richard Genoud" <richard.genoud@gmail.com>
Cc: fabio.estevam@freescale.com, Alexandre Courbot <gnurou@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>,
	Fabio Estevam <festevam@gmail.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] gpio: mxs: implement get_direction callback
Date: Mon, 17 Nov 2014 16:58:15 +0100	[thread overview]
Message-ID: <546A1B17.4010600@elproma.com.pl> (raw)
In-Reply-To: <20141117155300.GI27002@pengutronix.de>


W dniu 2014-11-17 o 16:53, Uwe Kleine-König pisze:
> Hello,
>
> On Mon, Nov 17, 2014 at 11:05:51AM +0100, Richard Genoud wrote:
>> 2014-11-17 10:59 GMT+01:00 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:
>>> Hello Richard,
>>>
>>>>>>>> So finally the prototypes would be:
>>>>>>>> int mctrl_gpio_request_irqs(struct mctrl_gpios*, struct
>>>>>>>> uart_port*, irqhandler_t);
>>>>>>>> void mctrl_gpio_free_irqs(struct mctrl_gpios*);
>>>>>> I think:
>>>>>>
>>>>>>          struct mctrl_gpios {
>>>>>>                  struct uart_port *port;
>>>>>>                  struct {
>>>>>>                          gpio_desc *gpio;
>>>>>>                          unsigned int irq;
>>>> I think it's just "int irq;" there
>>> irqs are unsigned. Some functions returning an irq use "int", but
>>> depending on who you ask this only for error reporting or a relict.
>>> Use 0 for invalid/unused in mctrl_gpio*.
>>>
>>>>> Yes. I tried to assign irq value in mctrl_gpio_init() only.
>>>>> There was another issue if CONFIG_GPIOLIB is not defined but it looks mctrl_
>>>>> disable/enable_ms()
>>>>> and mctrl_ irq handler solve the problem.
>>>>>
>>>>>>    Not sure there is a corresponding request_irq variant for that.
>>>>>
>>>>> What would you propose?
>>>> In atmel_request_gpio_irq(), the function irq_set_status_flags(irq,
>>>> IRQ_NOAUTOEN); is used before request_irq to prevent the irq from
>>>> being enabled when requested.
>>> I'm not sure this is allowed. How do you handle request_irq failing? (I
>>> just checked: you don't.) Consider another thread just doing
>>> request_irq($yourirq, ...) between
>>>
>>>          irq_set_status_flags(irq[i], IRQ_NOAUTOEN);
>>>
>>> and
>>>
>>>          err = request_irq(irq[i], ...
>> well, in this case, request_irq() will fail and all the previously
>> requested irqs will be freed:
>>      /*
>>       * If something went wrong, rollback.
>>       */
>>      while (err && (--i >= 0))
>>          if (irq[i] >= 0)
>>              free_irq(irq[i], port);
> Just in case you didn't notice: Your statement is right, but for the
> other caller to request_irq there is something fishy. He gets
> IRQ_NOAUTOEN without being able to notice ...

Likely the gpio interrupts will never shared. We can say mctrl_gpio is 
the only owner
of a gpio after a request. So should we worry that IRQ_NOAUTOEN is hidden?

best regards
Janusz

>
> Best regards
> Uwe
>

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: j.uzycki@elproma.com.pl (Janusz Użycki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio: mxs: implement get_direction callback
Date: Mon, 17 Nov 2014 16:58:15 +0100	[thread overview]
Message-ID: <546A1B17.4010600@elproma.com.pl> (raw)
In-Reply-To: <20141117155300.GI27002@pengutronix.de>


W dniu 2014-11-17 o 16:53, Uwe Kleine-K?nig pisze:
> Hello,
>
> On Mon, Nov 17, 2014 at 11:05:51AM +0100, Richard Genoud wrote:
>> 2014-11-17 10:59 GMT+01:00 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
>>> Hello Richard,
>>>
>>>>>>>> So finally the prototypes would be:
>>>>>>>> int mctrl_gpio_request_irqs(struct mctrl_gpios*, struct
>>>>>>>> uart_port*, irqhandler_t);
>>>>>>>> void mctrl_gpio_free_irqs(struct mctrl_gpios*);
>>>>>> I think:
>>>>>>
>>>>>>          struct mctrl_gpios {
>>>>>>                  struct uart_port *port;
>>>>>>                  struct {
>>>>>>                          gpio_desc *gpio;
>>>>>>                          unsigned int irq;
>>>> I think it's just "int irq;" there
>>> irqs are unsigned. Some functions returning an irq use "int", but
>>> depending on who you ask this only for error reporting or a relict.
>>> Use 0 for invalid/unused in mctrl_gpio*.
>>>
>>>>> Yes. I tried to assign irq value in mctrl_gpio_init() only.
>>>>> There was another issue if CONFIG_GPIOLIB is not defined but it looks mctrl_
>>>>> disable/enable_ms()
>>>>> and mctrl_ irq handler solve the problem.
>>>>>
>>>>>>    Not sure there is a corresponding request_irq variant for that.
>>>>>
>>>>> What would you propose?
>>>> In atmel_request_gpio_irq(), the function irq_set_status_flags(irq,
>>>> IRQ_NOAUTOEN); is used before request_irq to prevent the irq from
>>>> being enabled when requested.
>>> I'm not sure this is allowed. How do you handle request_irq failing? (I
>>> just checked: you don't.) Consider another thread just doing
>>> request_irq($yourirq, ...) between
>>>
>>>          irq_set_status_flags(irq[i], IRQ_NOAUTOEN);
>>>
>>> and
>>>
>>>          err = request_irq(irq[i], ...
>> well, in this case, request_irq() will fail and all the previously
>> requested irqs will be freed:
>>      /*
>>       * If something went wrong, rollback.
>>       */
>>      while (err && (--i >= 0))
>>          if (irq[i] >= 0)
>>              free_irq(irq[i], port);
> Just in case you didn't notice: Your statement is right, but for the
> other caller to request_irq there is something fishy. He gets
> IRQ_NOAUTOEN without being able to notice ...

Likely the gpio interrupts will never shared. We can say mctrl_gpio is 
the only owner
of a gpio after a request. So should we worry that IRQ_NOAUTOEN is hidden?

best regards
Janusz

>
> Best regards
> Uwe
>

  reply	other threads:[~2014-11-17 15:58 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-14 22:27 [PATCH] gpio: mxs: implement get_direction callback Janusz Uzycki
2014-11-14 22:27 ` Janusz Uzycki
2014-11-14 23:26 ` Uwe Kleine-König
2014-11-14 23:26   ` Uwe Kleine-König
2014-11-15 19:29   ` Janusz Użycki
2014-11-15 19:29     ` Janusz Użycki
2014-11-16 21:42     ` Uwe Kleine-König
2014-11-16 21:42       ` Uwe Kleine-König
2014-11-16 21:48       ` Uwe Kleine-König
2014-11-16 21:48         ` Uwe Kleine-König
2014-11-16 23:59       ` Janusz Użycki
2014-11-16 23:59         ` Janusz Użycki
2014-11-17  1:58         ` Janusz Użycki
2014-11-17  1:58           ` Janusz Użycki
2014-11-17  8:28           ` Uwe Kleine-König
2014-11-17  8:28             ` Uwe Kleine-König
2014-11-17  8:38             ` Alexander Shiyan
2014-11-17  8:38               ` Alexander Shiyan
2014-11-17  8:44               ` Uwe Kleine-König
2014-11-17  8:44                 ` Uwe Kleine-König
2014-11-17  8:53                 ` Alexander Shiyan
2014-11-17  8:53                   ` Alexander Shiyan
2014-11-17  9:11             ` Janusz Użycki
2014-11-17  9:11               ` Janusz Użycki
2014-11-17  9:39               ` Uwe Kleine-König
2014-11-17  9:39                 ` Uwe Kleine-König
2014-11-17  9:46               ` Richard Genoud
2014-11-17  9:46                 ` Richard Genoud
2014-11-17  9:59                 ` Uwe Kleine-König
2014-11-17  9:59                   ` Uwe Kleine-König
2014-11-17 10:05                   ` Richard Genoud
2014-11-17 10:05                     ` Richard Genoud
2014-11-17 14:29                     ` Janusz Użycki
2014-11-17 14:29                       ` Janusz Użycki
2014-11-17 16:14                       ` Richard Genoud
2014-11-17 16:14                         ` Richard Genoud
2014-11-17 15:53                     ` Uwe Kleine-König
2014-11-17 15:53                       ` Uwe Kleine-König
2014-11-17 15:58                       ` Janusz Użycki [this message]
2014-11-17 15:58                         ` Janusz Użycki
2014-11-17 16:02                         ` Uwe Kleine-König
2014-11-17 16:02                           ` Uwe Kleine-König
2014-11-17 16:04                       ` Richard Genoud
2014-11-17 16:04                         ` Richard Genoud
2014-11-17 17:26                     ` Janusz Użycki
2014-11-17 17:26                       ` Janusz Użycki
2014-11-17 10:05                   ` Alexander Shiyan
2014-11-17 10:05                     ` Alexander Shiyan
2014-11-17 10:09                     ` Russell King - ARM Linux
2014-11-17 10:09                       ` Russell King - ARM Linux
2014-11-17 10:10                     ` Richard Genoud
2014-11-17 10:10                       ` Richard Genoud
2014-11-17 10:17                       ` Russell King - ARM Linux
2014-11-17 10:17                         ` Russell King - ARM Linux
2014-11-17 12:40                 ` Janusz Użycki
2014-11-17 12:40                   ` Janusz Użycki
2014-11-17  9:51               ` request an irq without enabling? [Was: Re: [PATCH] gpio: mxs: implement get_direction callback] Uwe Kleine-König
2014-11-17  9:51                 ` Uwe Kleine-König
2014-11-17  9:57                 ` Richard Genoud
2014-11-17  9:57                   ` Richard Genoud
2014-11-17 17:00             ` [PATCH] gpio: mxs: implement get_direction callback Janusz Użycki
2014-11-17 17:00               ` Janusz Użycki
2014-11-17 17:07               ` Janusz Użycki
2014-11-17 17:07                 ` Janusz Użycki
2014-11-17 18:42                 ` Uwe Kleine-König
2014-11-17 18:42                   ` Uwe Kleine-König
2014-11-17 19:02                   ` Janusz Użycki
2014-11-17 19:02                     ` Janusz Użycki
2014-11-17 22:21                     ` Uwe Kleine-König
2014-11-17 22:21                       ` Uwe Kleine-König
2014-11-18  9:59                       ` Janusz Użycki
2014-11-18  9:59                         ` Janusz Użycki
2014-11-17  9:26         ` Richard Genoud
2014-11-17  9:26           ` Richard Genoud
2014-11-17 14:45           ` Janusz Użycki
2014-11-17 14:45             ` Janusz Użycki
2014-11-17 15:59             ` Uwe Kleine-König
2014-11-17 15:59               ` Uwe Kleine-König
2014-11-17  8:31       ` Richard Genoud
2014-11-17  8:31         ` Richard Genoud
2014-11-17  8:39         ` Uwe Kleine-König
2014-11-17  8:39           ` Uwe Kleine-König

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=546A1B17.4010600@elproma.com.pl \
    --to=j.uzycki@elproma.com.pl \
    --cc=fabio.estevam@freescale.com \
    --cc=festevam@gmail.com \
    --cc=gnurou@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=richard.genoud@gmail.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /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.