From: Alexandre Courbot <acourbot@nvidia.com> To: Grant Likely <grant.likely@secretlab.ca>, Linus Walleij <linus.walleij@linaro.org>, Arnd Bergmann <arnd@arndb.de> Cc: linux-arch@vger.kernel.org, gnurou@gmail.com, Alexandre Courbot <acourbot@nvidia.com>, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 3/9] gpiolib: use gpio_chips list in gpiochip_find Date: Sun, 3 Feb 2013 01:29:26 +0900 [thread overview] Message-ID: <1359822572-26009-5-git-send-email-acourbot@nvidia.com> (raw) In-Reply-To: <1359822572-26009-1-git-send-email-acourbot@nvidia.com> Using the GPIO chips list is much faster than parsing the entire GPIO number space. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> --- drivers/gpio/gpiolib.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 4ceb4a7..92f9ee4 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1194,20 +1194,17 @@ struct gpio_chip *gpiochip_find(void *data, int (*match)(struct gpio_chip *chip, void *data)) { - struct gpio_chip *chip = NULL; + struct gpio_chip *chip; unsigned long flags; - int i; spin_lock_irqsave(&gpio_lock, flags); - for (i = 0; i < ARCH_NR_GPIOS; i++) { - if (!gpio_desc[i].chip) - continue; - - if (match(gpio_desc[i].chip, data)) { - chip = gpio_desc[i].chip; + list_for_each_entry(chip, &gpio_chips, list) + if (match(chip, data)) break; - } - } + + /* No match? */ + if (&chip->list == &gpio_chips) + chip = NULL; spin_unlock_irqrestore(&gpio_lock, flags); return chip; -- 1.8.1.1
WARNING: multiple messages have this Message-ID (diff)
From: Alexandre Courbot <acourbot@nvidia.com> To: Grant Likely <grant.likely@secretlab.ca>, Linus Walleij <linus.walleij@linaro.org>, Arnd Bergmann <arnd@arndb.de> Cc: linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, gnurou@gmail.com, Alexandre Courbot <acourbot@nvidia.com> Subject: [PATCH 3/9] gpiolib: use gpio_chips list in gpiochip_find Date: Sun, 3 Feb 2013 01:29:26 +0900 [thread overview] Message-ID: <1359822572-26009-5-git-send-email-acourbot@nvidia.com> (raw) Message-ID: <20130202162926.F69Br9yi-J3UdhlRS66TOWI5geuG6zLADuAP_-zGICg@z> (raw) In-Reply-To: <1359822572-26009-1-git-send-email-acourbot@nvidia.com> Using the GPIO chips list is much faster than parsing the entire GPIO number space. Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> --- drivers/gpio/gpiolib.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 4ceb4a7..92f9ee4 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1194,20 +1194,17 @@ struct gpio_chip *gpiochip_find(void *data, int (*match)(struct gpio_chip *chip, void *data)) { - struct gpio_chip *chip = NULL; + struct gpio_chip *chip; unsigned long flags; - int i; spin_lock_irqsave(&gpio_lock, flags); - for (i = 0; i < ARCH_NR_GPIOS; i++) { - if (!gpio_desc[i].chip) - continue; - - if (match(gpio_desc[i].chip, data)) { - chip = gpio_desc[i].chip; + list_for_each_entry(chip, &gpio_chips, list) + if (match(chip, data)) break; - } - } + + /* No match? */ + if (&chip->list == &gpio_chips) + chip = NULL; spin_unlock_irqrestore(&gpio_lock, flags); return chip; -- 1.8.1.1
next prev parent reply other threads:[~2013-02-02 16:29 UTC|newest] Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-02-02 16:29 [PATCH 0/9] gpiolib: remove gpio_desc[] static array Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-02 16:29 ` [PATCH 1/9] gpiolib: link all gpio_chips using a list Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 17:00 ` Linus Walleij 2013-02-09 9:20 ` Grant Likely 2013-02-09 9:20 ` Grant Likely 2013-02-02 16:29 ` [PATCH 2/9] gpiolib: use gpio_chips list in gpiolib_sysfs_init Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 17:04 ` Linus Walleij 2013-02-09 9:22 ` Grant Likely 2013-02-09 9:22 ` Grant Likely 2013-02-02 16:29 ` Alexandre Courbot [this message] 2013-02-02 16:29 ` [PATCH 3/9] gpiolib: use gpio_chips list in gpiochip_find Alexandre Courbot 2013-02-05 17:05 ` Linus Walleij 2013-02-09 9:25 ` Grant Likely 2013-02-09 9:25 ` Grant Likely 2013-02-02 16:29 ` [PATCH 4/9] gpiolib: use gpio_chips list in sysfs ops Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 17:15 ` Linus Walleij 2013-02-05 17:15 ` Linus Walleij 2013-02-09 9:37 ` Grant Likely 2013-02-09 9:37 ` Grant Likely 2013-02-09 13:53 ` Alexandre Courbot 2013-02-02 16:29 ` [PATCH 5/9] gpiolib: use gpio_chips list in gpiochip_find_base Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 17:21 ` Linus Walleij 2013-02-06 4:48 ` Alex Courbot 2013-02-09 9:47 ` Grant Likely 2013-02-09 9:47 ` Grant Likely 2013-02-02 16:29 ` [PATCH 6/9] gpiolib: use descriptors internally Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 17:53 ` Linus Walleij 2013-02-07 6:57 ` Alexandre Courbot 2013-02-09 9:17 ` Grant Likely 2013-02-09 9:17 ` Grant Likely 2013-02-11 14:09 ` Linus Walleij 2013-02-11 15:40 ` Paul Mundt 2013-02-11 15:40 ` Paul Mundt 2013-02-11 17:39 ` Stephen Warren 2013-02-12 12:29 ` Linus Walleij 2013-02-12 15:59 ` Paul Mundt 2013-02-12 17:18 ` Arnd Bergmann 2013-02-09 13:11 ` Grant Likely 2013-02-09 13:11 ` Grant Likely 2013-02-09 14:15 ` Alexandre Courbot 2013-02-09 13:24 ` Grant Likely 2013-02-09 13:24 ` Grant Likely 2013-02-09 14:18 ` Alexandre Courbot 2013-02-02 16:29 ` [PATCH 7/9] gpiolib: let gpio_chip reference its descriptors Alexandre Courbot 2013-02-05 18:00 ` Linus Walleij 2013-02-09 13:28 ` Grant Likely 2013-02-02 16:29 ` [PATCH 8/9] gpiolib: use gpio_chips list in gpio_to_desc Alexandre Courbot 2013-02-05 18:01 ` Linus Walleij 2013-02-05 18:01 ` Linus Walleij 2013-02-09 9:58 ` Grant Likely 2013-02-09 9:58 ` Grant Likely 2013-02-09 14:21 ` Alexandre Courbot 2013-02-09 14:21 ` Alexandre Courbot 2013-02-09 14:37 ` Grant Likely 2013-02-02 16:29 ` [PATCH 9/9] gpiolib: dynamically allocate descriptors array Alexandre Courbot 2013-02-02 16:29 ` Alexandre Courbot 2013-02-05 18:02 ` Linus Walleij
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=1359822572-26009-5-git-send-email-acourbot@nvidia.com \ --to=acourbot@nvidia.com \ --cc=arnd@arndb.de \ --cc=gnurou@gmail.com \ --cc=grant.likely@secretlab.ca \ --cc=linus.walleij@linaro.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).