From patchwork Wed Dec 9 13:41:31 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 58102 Delivered-To: patch@linaro.org Received: by 10.112.147.194 with SMTP id tm2csp675952lbb; Wed, 9 Dec 2015 05:41:37 -0800 (PST) X-Received: by 10.98.17.14 with SMTP id z14mr13028915pfi.55.1449668497164; Wed, 09 Dec 2015 05:41:37 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 86si12808196pfn.188.2015.12.09.05.41.36; Wed, 09 Dec 2015 05:41:37 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-gpio-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-gpio-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-gpio-owner@vger.kernel.org; dkim=neutral (body hash did not verify) header.i=@linaro-org.20150623.gappssmtp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753925AbbLINlg (ORCPT + 4 others); Wed, 9 Dec 2015 08:41:36 -0500 Received: from mail-lf0-f44.google.com ([209.85.215.44]:33511 "EHLO mail-lf0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751585AbbLINlg (ORCPT ); Wed, 9 Dec 2015 08:41:36 -0500 Received: by lfaz4 with SMTP id z4so34476607lfa.0 for ; Wed, 09 Dec 2015 05:41:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=DbdnGNvoXHUkAWtUDu3YaxfctobQe3pDS0CZLWLWPZ0=; b=IBGBwQMeOw6/fRh/t7E2CchGK6NNSj5HlrAR5GhDa1gD6IJfuKBVjwuBymmqMcWOzO 4BxzdVY8lNom1zW4OfNyxzXqHDre7AVtZYVilBA5hGNoB1ANy9Ikdp6UVocljoUGucdg c2/h99Zm82g/WaRPTPI/QDMT0bVYFve9O29KywI2ooQuVp3G8mQn4M0smCogiUDjM7HN TkUwJTpDJGffQ301fai6McMQrxWcosRFQ1+3o0C4gdwGei+PjJIeO6x30VezohkM6VhS K4VEblyT2Z5cdWbXb79D+v7+LEZ7xNnja+8dLd5KLCcQw4UwlUXBe98o4g7soF1+b1lW n9lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=DbdnGNvoXHUkAWtUDu3YaxfctobQe3pDS0CZLWLWPZ0=; b=YJwX2p//IgrDxCCxz1H1sEJgDod9zsEVSll4aeI7N3kZ5gpSBTo0DotiA7SX8eSBV9 pILwDxfperfJE9JmUY4KGMTKKthWWf0inwqQ9z2dy67qE9aEGnKO7Xtog9Fepn71PxCh 4HP7y8yFsFJJMZHqjGx5smMLc773vqf5p+q0miwtJK1IQK0MNg3diR0LGIeMW6qscjKc E/O0lFkBpQExJhegt+B/g+s1WZlHkyf408k1LoOQ8CzvBjCwxv6jCD9f4zpvX4Bz2GTm nIXasF9LEpIOJqwXGNwMIBGHZLDbm5FJW7kQAA/vjtZ+GQ25Yi3NRg8zFGF+IQgSiN9h zSKA== X-Gm-Message-State: ALoCoQl8KxfUPXJuPs3tgQZjN1t5bGfzs+RrOaY/mq98bipYyDTTnhAZtoxZ15BnrySvYRoTqv45XzaWwcaYBqH/W+X0J/M84g== X-Received: by 10.25.19.69 with SMTP id j66mr2271667lfi.25.1449668494541; Wed, 09 Dec 2015 05:41:34 -0800 (PST) Received: from localhost.localdomain ([85.235.10.227]) by smtp.gmail.com with ESMTPSA id w7sm1440194lbb.14.2015.12.09.05.41.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Dec 2015 05:41:33 -0800 (PST) From: Linus Walleij To: linux-gpio@vger.kernel.org, Johan Hovold , Alexandre Courbot , Michael Welling , Markus Pargmann , Anatolij Gustschin , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: Linus Walleij Subject: [PATCH 146/182] powerpc: cpm_common: use gpiochip data pointer Date: Wed, 9 Dec 2015 14:41:31 +0100 Message-Id: <1449668491-5023-1-git-send-email-linus.walleij@linaro.org> X-Mailer: git-send-email 2.4.3 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org This makes the driver use the data pointer added to the gpio_chip to store a pointer to the state container instead of relying on container_of(). Cc: Anatolij Gustschin Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Signed-off-by: Linus Walleij --- Power maintainers: please ACK this. I cannot really say if this should ideally be broken out as a separate driver in drivers/gpio or if it is better to keep it here. For now just refactoring... --- arch/powerpc/sysdev/cpm_common.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) -- 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c index e00a5ee58fd7..bc304269edc1 100644 --- a/arch/powerpc/sysdev/cpm_common.c +++ b/arch/powerpc/sysdev/cpm_common.c @@ -236,15 +236,9 @@ struct cpm2_gpio32_chip { u32 cpdata; }; -static inline struct cpm2_gpio32_chip * -to_cpm2_gpio32_chip(struct of_mm_gpio_chip *mm_gc) -{ - return container_of(mm_gc, struct cpm2_gpio32_chip, mm_gc); -} - static void cpm2_gpio32_save_regs(struct of_mm_gpio_chip *mm_gc) { - struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); + struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(&mm_gc->gc); struct cpm2_ioports __iomem *iop = mm_gc->regs; cpm2_gc->cpdata = in_be32(&iop->dat); @@ -264,7 +258,7 @@ static int cpm2_gpio32_get(struct gpio_chip *gc, unsigned int gpio) static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, int value) { - struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); + struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(&mm_gc->gc); struct cpm2_ioports __iomem *iop = mm_gc->regs; if (value) @@ -278,7 +272,7 @@ static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); - struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); + struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); unsigned long flags; u32 pin_mask = 1 << (31 - gpio); @@ -292,7 +286,7 @@ static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); - struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); + struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); struct cpm2_ioports __iomem *iop = mm_gc->regs; unsigned long flags; u32 pin_mask = 1 << (31 - gpio); @@ -310,7 +304,7 @@ static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) static int cpm2_gpio32_dir_in(struct gpio_chip *gc, unsigned int gpio) { struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); - struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); + struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); struct cpm2_ioports __iomem *iop = mm_gc->regs; unsigned long flags; u32 pin_mask = 1 << (31 - gpio); @@ -346,6 +340,6 @@ int cpm2_gpiochip_add32(struct device_node *np) gc->get = cpm2_gpio32_get; gc->set = cpm2_gpio32_set; - return of_mm_gpiochip_add(np, mm_gc); + return of_mm_gpiochip_add_data(np, mm_gc, cpm2_gc); } #endif /* CONFIG_CPM2 || CONFIG_8xx_GPIO */