From patchwork Fri Mar 23 16:34:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 10305111 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2BF5E60386 for ; Fri, 23 Mar 2018 16:36:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D16D28DEC for ; Fri, 23 Mar 2018 16:36:11 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1170528E25; Fri, 23 Mar 2018 16:36:11 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B1E3D28DEC for ; Fri, 23 Mar 2018 16:36:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=h3j6CDU82W7wGlXpDg+1L9d0yNICC5ZUcpiHWdZRzCg=; b=GzPZfxZrpuHeGiK4wQbk5JuWtI Pkw2l+nllSG6G70vAVscYwNJc4rYSRFtmHFWeRfodBADI9vASCqsEyFoRuulhE6YVuOaqMqvyeaS+ Z+vNri8d2Ase8wHOgVh5eO457RMno3899zSJc9Y1WGNHFIu8nSzpO38UX6sIf0FLoKtLJIssY61Mv rJDUnt3oh5ZhtTQ7GRm7xF/XuKHx7vf15RBmZrRidJZ1tPN0qb69Mzwg4T9/Qp5j0b/sZUXqgsGY8 gTvCogMLvFPeURBv7yJAxbU2mvtyXrbMDW2O8k1pkmI0Dm0PMtKykHrcHQUDnbQuIGIB6dNXcJ99k 7gdUogfQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1ezPff-0005C5-5p; Fri, 23 Mar 2018 16:36:03 +0000 Received: from mail-pg0-x242.google.com ([2607:f8b0:400e:c05::242]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1ezPem-0003sd-DP for linux-arm-kernel@lists.infradead.org; Fri, 23 Mar 2018 16:35:21 +0000 Received: by mail-pg0-x242.google.com with SMTP id n11so4769568pgp.4 for ; Fri, 23 Mar 2018 09:34:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FGqHvdtEXH6ISReSBpU2jC6lg7R0YUgxQtmnA6KZ8S4=; b=d9GjtxAWH2zckAHynuVgiDkZEqEVCoswJyDpNPao/Pgz84fDzPX5kGdI9hWy4l7DvH hNsWLgTmcvNp4zMHALicfuE8YGzglOqyJaqVYxtvDXD5LVYwIWGaXBErKxccegsiGq+i p58rs8jWwqH5izOZuSx7r1K5HXaOAEKHbOys8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FGqHvdtEXH6ISReSBpU2jC6lg7R0YUgxQtmnA6KZ8S4=; b=TvgFBctekAdtJxscwdMMm+EdKHJAbu+hRcrYjNWCNyalcltk8Y03TUzrYos9KNkGPP PQLoDArS2y8YXSBa2zl3RY4dHsEij5Ulrpb335iZe7dIGhJ329OMlS7WOIroiQSBWoAI cVIhRiXpkHMvxETCQ/G+4wj7JpIKrO5tNyR9uwD6AvqvatXue1TUwSoFQZgFdV9pnsvb TGKXciIDiWdg6hshq2X27IQ5aqBpf17a5Wz3g7BBKNDMDMZEHuk+OYN7zMyOR67/qjVG nEEUKm+N9CzQoLzuyugF7TJmrp0Dxow2hURFJr6ZwYzQ6/GqOhrVBqJs1gJQs2pdxfjF 9J0Q== X-Gm-Message-State: AElRT7FSBQjBBd2+tEhunifNvr7up+5ecn0dLD3ldkdqvHOzIfz1Q8Il vUkawlFKaYq9PTMXuec1j91lZQ== X-Google-Smtp-Source: AG47ELskd6GPdfVEai96i1NCFmZKy0XqNCO1P8XlWuxYakj7ELOBtjBkFhje14MzbOEwrrSBagHUCQ== X-Received: by 10.99.4.3 with SMTP id 3mr1425708pge.147.1521822897775; Fri, 23 Mar 2018 09:34:57 -0700 (PDT) Received: from swboyd.mtv.corp.google.com ([2620:0:1000:1511:d30e:62c6:f82c:ff40]) by smtp.gmail.com with ESMTPSA id s78sm19131294pfa.161.2018.03.23.09.34.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Mar 2018 09:34:57 -0700 (PDT) From: Stephen Boyd To: Linus Walleij Subject: [PATCH v4 2/5] gpiolib: Extract mask allocation into subroutine Date: Fri, 23 Mar 2018 09:34:50 -0700 Message-Id: <20180323163453.96495-3-swboyd@chromium.org> X-Mailer: git-send-email 2.17.0.rc0.231.g781580f067-goog In-Reply-To: <20180323163453.96495-1-swboyd@chromium.org> References: <20180323163453.96495-1-swboyd@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180323_093509_224066_5E1A7BBB X-CRM114-Status: GOOD ( 14.97 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, Timur Tabi , linux-kernel@vger.kernel.org, Bjorn Andersson , Grant Likely , linux-gpio@vger.kernel.org, Andy Shevchenko , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP We're going to use similar code to allocate and set all the bits in a mask for valid gpios to use. Extract the code from the irqchip version so it can be reused. Signed-off-by: Stephen Boyd --- drivers/gpio/gpiolib.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index d66de67ef307..cc0e1519da45 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -337,6 +337,20 @@ static int gpiochip_set_desc_names(struct gpio_chip *gc) return 0; } +static unsigned long *gpiochip_allocate_mask(struct gpio_chip *chip) +{ + unsigned long *p; + + p = kcalloc(BITS_TO_LONGS(chip->ngpio), sizeof(long), GFP_KERNEL); + if (!p) + return NULL; + + /* Assume by default all GPIOs are valid */ + bitmap_fill(p, chip->ngpio); + + return p; +} + /* * GPIO line handle management */ @@ -1506,14 +1520,10 @@ static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gpiochip) if (!gpiochip->irq.need_valid_mask) return 0; - gpiochip->irq.valid_mask = kcalloc(BITS_TO_LONGS(gpiochip->ngpio), - sizeof(long), GFP_KERNEL); + gpiochip->irq.valid_mask = gpiochip_allocate_mask(gpiochip); if (!gpiochip->irq.valid_mask) return -ENOMEM; - /* Assume by default all GPIOs are valid */ - bitmap_fill(gpiochip->irq.valid_mask, gpiochip->ngpio); - return 0; }