diff mbox series

MIPS: Lantiq: switch vmmc to use gpiod API

Message ID Yy08TBymyuQb27NU@google.com (mailing list archive)
State Accepted
Commit 692cb5b0f4e25b3ff504f108e55033dd20d2ef74
Headers show
Series MIPS: Lantiq: switch vmmc to use gpiod API | expand

Commit Message

Dmitry Torokhov Sept. 23, 2022, 4:55 a.m. UTC
This switches vmmc to use gpiod API instead of OF-specific legacy gpio
API that we want to stop exporting from gpiolib.

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
---
 arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

Comments

Thomas Bogendoerfer Sept. 24, 2022, 10:46 a.m. UTC | #1
On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> API that we want to stop exporting from gpiolib.
> 
> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> ---
>  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
>  1 file changed, 13 insertions(+), 9 deletions(-)

applied to mips-next.

Thomas.
Dmitry Torokhov Sept. 27, 2022, 4:56 a.m. UTC | #2
Hi Thomas,

On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
> On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> > API that we want to stop exporting from gpiolib.
> > 
> > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > ---
> >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
> >  1 file changed, 13 insertions(+), 9 deletions(-)
> 
> applied to mips-next.

My apologies, I screwed up. I thought this patch passed 0day before I
sent it to you, but apparently it has not.

Here is a fixup (actually cross-compiled this time), or I can send a v2
incorporating it into the original change.

Thanks.
Thomas Bogendoerfer Sept. 27, 2022, 7:49 a.m. UTC | #3
On Mon, Sep 26, 2022 at 09:56:08PM -0700, Dmitry Torokhov wrote:
> Hi Thomas,
> 
> On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
> > On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> > > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> > > API that we want to stop exporting from gpiolib.
> > > 
> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > > ---
> > >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
> > >  1 file changed, 13 insertions(+), 9 deletions(-)
> > 
> > applied to mips-next.
> 
> My apologies, I screwed up. I thought this patch passed 0day before I
> sent it to you, but apparently it has not.
> 
> Here is a fixup (actually cross-compiled this time), or I can send a v2
> incorporating it into the original change.

I need a fixup, but this one still fails in my build:

/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c: In function ‘vmmc_probe’:
/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:43:5: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Werror=format=]
     "failed to request GPIO idx %d: %d\n",
     ^
/local/tbogendoerfer/korg/linux/include/linux/dev_printk.h:110:16: note: in definition of macro ‘dev_printk_index_wrap’
   _p_func(dev, fmt, ##__VA_ARGS__);   \
                ^~~
/local/tbogendoerfer/korg/linux/include/linux/dev_printk.h:144:49: note: in expansion of macro ‘dev_fmt’
  dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
                                                 ^~~~~~~
/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:42:4: note: in expansion of macro ‘dev_err’
    dev_err(&pdev->dev,
    ^~~~~~~

Thomas.
Dmitry Torokhov Sept. 27, 2022, 8:08 a.m. UTC | #4
On September 27, 2022 12:49:53 AM PDT, Thomas Bogendoerfer <tsbogend@alpha.franken.de> wrote:
>On Mon, Sep 26, 2022 at 09:56:08PM -0700, Dmitry Torokhov wrote:
>> Hi Thomas,
>> 
>> On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
>> > On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
>> > > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
>> > > API that we want to stop exporting from gpiolib.
>> > > 
>> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
>> > > ---
>> > >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
>> > >  1 file changed, 13 insertions(+), 9 deletions(-)
>> > 
>> > applied to mips-next.
>> 
>> My apologies, I screwed up. I thought this patch passed 0day before I
>> sent it to you, but apparently it has not.
>> 
>> Here is a fixup (actually cross-compiled this time), or I can send a v2
>> incorporating it into the original change.
>
>I need a fixup, but this one still fails in my build:
>
>/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c: In function ‘vmmc_probe’:
>/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:43:5: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Werror=format=]
>     "failed to request GPIO idx %d: %d\n",
>     ^

I see, I did not realize PTR_ERR() is actually long. I guess I can introduce a temp variable and use PTR_ERR_OR_ZERO(), but there are a lot of places in the kernel that use %d and PTR_ERR(). I wonder why we can't define PTR_ERR() as (int)(long)ptr or something.

What compiler/version are you using for your builds? 

Thanks.
Thomas Bogendoerfer Sept. 27, 2022, 8:29 a.m. UTC | #5
On Tue, Sep 27, 2022 at 01:08:35AM -0700, Dmitry Torokhov wrote:
> On September 27, 2022 12:49:53 AM PDT, Thomas Bogendoerfer <tsbogend@alpha.franken.de> wrote:
> >On Mon, Sep 26, 2022 at 09:56:08PM -0700, Dmitry Torokhov wrote:
> >> Hi Thomas,
> >> 
> >> On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
> >> > On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> >> > > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> >> > > API that we want to stop exporting from gpiolib.
> >> > > 
> >> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> >> > > ---
> >> > >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
> >> > >  1 file changed, 13 insertions(+), 9 deletions(-)
> >> > 
> >> > applied to mips-next.
> >> 
> >> My apologies, I screwed up. I thought this patch passed 0day before I
> >> sent it to you, but apparently it has not.
> >> 
> >> Here is a fixup (actually cross-compiled this time), or I can send a v2
> >> incorporating it into the original change.
> >
> >I need a fixup, but this one still fails in my build:
> >
> >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c: In function ‘vmmc_probe’:
> >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:43:5: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Werror=format=]
> >     "failed to request GPIO idx %d: %d\n",
> >     ^
> 
> I see, I did not realize PTR_ERR() is actually long. I guess I can introduce a temp variable and use PTR_ERR_OR_ZERO(), but there are a lot of places in the kernel that use %d and PTR_ERR(). I wonder why we can't define PTR_ERR() as (int)(long)ptr or something.
> 
> What compiler/version are you using for your builds? 

it's rather old:

gcc version 6.1.1 20160621 (Red Hat Cross 6.1.1-2) (GCC) 

Thomas.
Dmitry Torokhov Sept. 27, 2022, 3:29 p.m. UTC | #6
On Tue, Sep 27, 2022 at 10:29:46AM +0200, Thomas Bogendoerfer wrote:
> On Tue, Sep 27, 2022 at 01:08:35AM -0700, Dmitry Torokhov wrote:
> > On September 27, 2022 12:49:53 AM PDT, Thomas Bogendoerfer <tsbogend@alpha.franken.de> wrote:
> > >On Mon, Sep 26, 2022 at 09:56:08PM -0700, Dmitry Torokhov wrote:
> > >> Hi Thomas,
> > >> 
> > >> On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
> > >> > On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> > >> > > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> > >> > > API that we want to stop exporting from gpiolib.
> > >> > > 
> > >> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > >> > > ---
> > >> > >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
> > >> > >  1 file changed, 13 insertions(+), 9 deletions(-)
> > >> > 
> > >> > applied to mips-next.
> > >> 
> > >> My apologies, I screwed up. I thought this patch passed 0day before I
> > >> sent it to you, but apparently it has not.
> > >> 
> > >> Here is a fixup (actually cross-compiled this time), or I can send a v2
> > >> incorporating it into the original change.
> > >
> > >I need a fixup, but this one still fails in my build:
> > >
> > >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c: In function ‘vmmc_probe’:
> > >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:43:5: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Werror=format=]
> > >     "failed to request GPIO idx %d: %d\n",
> > >     ^
> > 
> > I see, I did not realize PTR_ERR() is actually long. I guess I can introduce a temp variable and use PTR_ERR_OR_ZERO(), but there are a lot of places in the kernel that use %d and PTR_ERR(). I wonder why we can't define PTR_ERR() as (int)(long)ptr or something.
> > 
> > What compiler/version are you using for your builds? 
> 
> it's rather old:
> 
> gcc version 6.1.1 20160621 (Red Hat Cross 6.1.1-2) (GCC) 

OK, I tried the below with gcc 12.1.0 cross-compiler, hopefully this
does not trip on 6.1.1.

Thanks.
Thomas Bogendoerfer Sept. 27, 2022, 8:13 p.m. UTC | #7
On Tue, Sep 27, 2022 at 08:29:42AM -0700, Dmitry Torokhov wrote:
> On Tue, Sep 27, 2022 at 10:29:46AM +0200, Thomas Bogendoerfer wrote:
> > On Tue, Sep 27, 2022 at 01:08:35AM -0700, Dmitry Torokhov wrote:
> > > On September 27, 2022 12:49:53 AM PDT, Thomas Bogendoerfer <tsbogend@alpha.franken.de> wrote:
> > > >On Mon, Sep 26, 2022 at 09:56:08PM -0700, Dmitry Torokhov wrote:
> > > >> Hi Thomas,
> > > >> 
> > > >> On Sat, Sep 24, 2022 at 12:46:12PM +0200, Thomas Bogendoerfer wrote:
> > > >> > On Thu, Sep 22, 2022 at 09:55:40PM -0700, Dmitry Torokhov wrote:
> > > >> > > This switches vmmc to use gpiod API instead of OF-specific legacy gpio
> > > >> > > API that we want to stop exporting from gpiolib.
> > > >> > > 
> > > >> > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > > >> > > ---
> > > >> > >  arch/mips/lantiq/xway/vmmc.c | 22 +++++++++++++---------
> > > >> > >  1 file changed, 13 insertions(+), 9 deletions(-)
> > > >> > 
> > > >> > applied to mips-next.
> > > >> 
> > > >> My apologies, I screwed up. I thought this patch passed 0day before I
> > > >> sent it to you, but apparently it has not.
> > > >> 
> > > >> Here is a fixup (actually cross-compiled this time), or I can send a v2
> > > >> incorporating it into the original change.
> > > >
> > > >I need a fixup, but this one still fails in my build:
> > > >
> > > >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c: In function ‘vmmc_probe’:
> > > >/local/tbogendoerfer/korg/linux/arch/mips/lantiq/xway/vmmc.c:43:5: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘long int’ [-Werror=format=]
> > > >     "failed to request GPIO idx %d: %d\n",
> > > >     ^
> > > 
> > > I see, I did not realize PTR_ERR() is actually long. I guess I can introduce a temp variable and use PTR_ERR_OR_ZERO(), but there are a lot of places in the kernel that use %d and PTR_ERR(). I wonder why we can't define PTR_ERR() as (int)(long)ptr or something.
> > > 
> > > What compiler/version are you using for your builds? 
> > 
> > it's rather old:
> > 
> > gcc version 6.1.1 20160621 (Red Hat Cross 6.1.1-2) (GCC) 
> 
> OK, I tried the below with gcc 12.1.0 cross-compiler, hopefully this
> does not trip on 6.1.1.

works with 6.1.1 as well. Applied to mips-next.

Thomas.
diff mbox series

Patch

diff --git a/arch/mips/lantiq/xway/vmmc.c b/arch/mips/lantiq/xway/vmmc.c
index 7a14da8d9d15..a1947306ac18 100644
--- a/arch/mips/lantiq/xway/vmmc.c
+++ b/arch/mips/lantiq/xway/vmmc.c
@@ -4,9 +4,10 @@ 
  *  Copyright (C) 2012 John Crispin <john@phrozen.org>
  */
 
+#include <linux/err.h>
 #include <linux/export.h>
+#include <linux/gpio/consumer.h>
 #include <linux/of_platform.h>
-#include <linux/of_gpio.h>
 #include <linux/dma-mapping.h>
 
 #include <lantiq_soc.h>
@@ -25,6 +26,7 @@  EXPORT_SYMBOL(ltq_get_cp1_base);
 static int vmmc_probe(struct platform_device *pdev)
 {
 #define CP1_SIZE       (1 << 20)
+	struct gpio_desc *gpio;
 	int gpio_count;
 	dma_addr_t dma;
 
@@ -32,16 +34,18 @@  static int vmmc_probe(struct platform_device *pdev)
 		(void *) CPHYSADDR(dma_alloc_coherent(&pdev->dev, CP1_SIZE,
 						    &dma, GFP_KERNEL));
 
-	gpio_count = of_gpio_count(pdev->dev.of_node);
+	gpio_count = gpiod_count(&pdev->dev, NULL);
 	while (gpio_count > 0) {
-		enum of_gpio_flags flags;
-		int gpio = of_get_gpio_flags(pdev->dev.of_node,
-					     --gpio_count, &flags);
-		if (gpio_request(gpio, "vmmc-relay"))
+		gpio = devm_gpiod_get_index(&pdev->dev,
+					    NULL, --gpio_count, GPIOD_OUT_HIGH);
+		if (IS_ERR(gpio)) {
+			dev_err(&pdev->dev,
+				"failed to request GPIO idx %d: %d\n",
+				gpio_count, PTR_ERR(gpio);
 			continue;
-		dev_info(&pdev->dev, "requested GPIO %d\n", gpio);
-		gpio_direction_output(gpio,
-				      (flags & OF_GPIO_ACTIVE_LOW) ? (0) : (1));
+		}
+
+		gpio_consumer_set_name(gpio, "vmmc-relay");
 	}
 
 	dev_info(&pdev->dev, "reserved %dMB at 0x%p", CP1_SIZE >> 20, cp1_base);