Message ID | Yy08TBymyuQb27NU@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 692cb5b0f4e25b3ff504f108e55033dd20d2ef74 |
Headers | show |
Series | MIPS: Lantiq: switch vmmc to use gpiod API | expand |
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.
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.
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.
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.
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.
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.
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 --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);
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(-)