diff mbox series

[net-next] nfc: st95hf: switch to using sleeping variants of gpiod API

Message ID ZsPtCPwnXAyHG2Jq@google.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series [net-next] nfc: st95hf: switch to using sleeping variants of gpiod API | expand

Checks

Context Check Description
netdev/series_format success Single patches do not need cover letters
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 16 this patch: 16
netdev/build_tools success No tools touched, skip
netdev/cc_maintainers warning 2 maintainers not CCed: kuba@kernel.org andriy.shevchenko@linux.intel.com
netdev/build_clang success Errors and warnings before: 16 this patch: 16
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 16 this patch: 16
netdev/checkpatch warning WARNING: Possible repeated word: 'not'
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest success net-next-2024-08-20--09-00 (tests: 712)

Commit Message

Dmitry Torokhov Aug. 20, 2024, 1:10 a.m. UTC
The driver does not not use gpiod API calls in an atomic context. Switch
to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
controllers that might need process context to operate.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 drivers/nfc/st95hf/core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Przemek Kitszel Aug. 20, 2024, 8:10 a.m. UTC | #1
On 8/20/24 03:10, Dmitry Torokhov wrote:
> The driver does not not use gpiod API calls in an atomic context. Switch

please remove one "not"

> to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
> controllers that might need process context to operate.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Code is fine, but why not as a fix?

> ---
>   drivers/nfc/st95hf/core.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/nfc/st95hf/core.c b/drivers/nfc/st95hf/core.c
> index ffe5b4eab457..5b3451fc4491 100644
> --- a/drivers/nfc/st95hf/core.c
> +++ b/drivers/nfc/st95hf/core.c
> @@ -450,19 +450,19 @@ static int st95hf_select_protocol(struct st95hf_context *stcontext, int type)
>   static void st95hf_send_st95enable_negativepulse(struct st95hf_context *st95con)
>   {
>   	/* First make irq_in pin high */
> -	gpiod_set_value(st95con->enable_gpiod, HIGH);
> +	gpiod_set_value_cansleep(st95con->enable_gpiod, HIGH);
>   
>   	/* wait for 1 milisecond */
>   	usleep_range(1000, 2000);
>   
>   	/* Make irq_in pin low */
> -	gpiod_set_value(st95con->enable_gpiod, LOW);
> +	gpiod_set_value_cansleep(st95con->enable_gpiod, LOW);
>   
>   	/* wait for minimum interrupt pulse to make st95 active */
>   	usleep_range(1000, 2000);
>   
>   	/* At end make it high */
> -	gpiod_set_value(st95con->enable_gpiod, HIGH);
> +	gpiod_set_value_cansleep(st95con->enable_gpiod, HIGH);
>   }
>   
>   /*
Andrew Lunn Aug. 20, 2024, 1:53 p.m. UTC | #2
On Tue, Aug 20, 2024 at 10:10:37AM +0200, Przemek Kitszel wrote:
> On 8/20/24 03:10, Dmitry Torokhov wrote:
> > The driver does not not use gpiod API calls in an atomic context. Switch
> 
> please remove one "not"
> 
> > to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
> > controllers that might need process context to operate.
> > 
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> 
> Code is fine, but why not as a fix?

Why would this be a fix? What is broken?

    Andrew
Jakub Kicinski Aug. 20, 2024, 3:26 p.m. UTC | #3
On Mon, 19 Aug 2024 18:10:32 -0700 Dmitry Torokhov wrote:
> The driver does not not use gpiod API calls in an atomic context. Switch
> to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
> controllers that might need process context to operate.

Could you explain why? Are you using this device? Is it part of some
larger effort to remove an API?
Dmitry Torokhov Aug. 20, 2024, 4:37 p.m. UTC | #4
On Tue, Aug 20, 2024 at 08:26:14AM -0700, Jakub Kicinski wrote:
> On Mon, 19 Aug 2024 18:10:32 -0700 Dmitry Torokhov wrote:
> > The driver does not not use gpiod API calls in an atomic context. Switch
> > to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
> > controllers that might need process context to operate.
> 
> Could you explain why? Are you using this device? Is it part of some
> larger effort to remove an API?

Because it is better to use sleeping variants of gpiod API unless the
call is in atomic context, so it is basic code hygiene. We do not want
other drivers to copy the behavior.

I was going through my WIP patches and decided to sent it out. Originally
it was part of overall transition of the driver to gpiod API, but Andy
Shevchenko beat me to it, so movement to gpiod_set_value_cansleep()
is all that is left.

Thanks.
Dmitry Torokhov Aug. 20, 2024, 4:38 p.m. UTC | #5
On Tue, Aug 20, 2024 at 03:53:21PM +0200, Andrew Lunn wrote:
> On Tue, Aug 20, 2024 at 10:10:37AM +0200, Przemek Kitszel wrote:
> > On 8/20/24 03:10, Dmitry Torokhov wrote:
> > > The driver does not not use gpiod API calls in an atomic context. Switch
> > 
> > please remove one "not"
> > 
> > > to gpiod_set_value_cansleep() calls to allow using the driver with GPIO
> > > controllers that might need process context to operate.
> > > 
> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > 
> > Code is fine, but why not as a fix?
> 
> Why would this be a fix? What is broken?

No, this is not a fix but a tiny enhancement. As far as I know no
existing devices actually require it.

Thanks.
diff mbox series

Patch

diff --git a/drivers/nfc/st95hf/core.c b/drivers/nfc/st95hf/core.c
index ffe5b4eab457..5b3451fc4491 100644
--- a/drivers/nfc/st95hf/core.c
+++ b/drivers/nfc/st95hf/core.c
@@ -450,19 +450,19 @@  static int st95hf_select_protocol(struct st95hf_context *stcontext, int type)
 static void st95hf_send_st95enable_negativepulse(struct st95hf_context *st95con)
 {
 	/* First make irq_in pin high */
-	gpiod_set_value(st95con->enable_gpiod, HIGH);
+	gpiod_set_value_cansleep(st95con->enable_gpiod, HIGH);
 
 	/* wait for 1 milisecond */
 	usleep_range(1000, 2000);
 
 	/* Make irq_in pin low */
-	gpiod_set_value(st95con->enable_gpiod, LOW);
+	gpiod_set_value_cansleep(st95con->enable_gpiod, LOW);
 
 	/* wait for minimum interrupt pulse to make st95 active */
 	usleep_range(1000, 2000);
 
 	/* At end make it high */
-	gpiod_set_value(st95con->enable_gpiod, HIGH);
+	gpiod_set_value_cansleep(st95con->enable_gpiod, HIGH);
 }
 
 /*