From patchwork Fri Jan 30 10:45:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 434807 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 17E6014029C for ; Fri, 30 Jan 2015 21:46:06 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759176AbbA3KqE (ORCPT ); Fri, 30 Jan 2015 05:46:04 -0500 Received: from mail-lb0-f178.google.com ([209.85.217.178]:35204 "EHLO mail-lb0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753101AbbA3KqB (ORCPT ); Fri, 30 Jan 2015 05:46:01 -0500 Received: by mail-lb0-f178.google.com with SMTP id u10so35656559lbd.9 for ; Fri, 30 Jan 2015 02:45:59 -0800 (PST) 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=ggV8JyudLJGYJuNq0/TvJwn9A/uloGoGGgSuOn6b6Oc=; b=Ngh9FLK9ZsRPZj4Ijx/PuBpxWYBr49i79PMOSVAJ/lFYAnB/QHf7Ya9gqbiGHoQehj CjjlaCoyH0TNcbE0DjXko5UMKezrAzvOLmJwFzk+wxdEumW7IZEtwVkVoYK4U54sDEMb 59tt9hVXRbnCw4iPOyrwe2MuWIT8cn83Gszj9rfiIaNFINN1n5hFVBsfGEc1juS/Innw NrjDmrjjfH2CsszmIPGig2abFcPMrPNthgGO/Ch8gLK159BjjJsCSN926Zy0Dk1DmIWA YUKdQRWbTrTQ6kaTcVHeOglx5T7wcAkeqOOEPRrylPAZcrDMMX6H/cB48axj04vb4xrL pUsA== X-Gm-Message-State: ALoCoQkPXP7cY1MJpE/FuYEwKRKpiANDLseR19KZSTRz3++014AhX8W+n4/GPHcG1sPGPdprmfo3 X-Received: by 10.112.211.168 with SMTP id nd8mr5888946lbc.18.1422614759879; Fri, 30 Jan 2015 02:45:59 -0800 (PST) Received: from localhost.localdomain ([85.235.11.236]) by mx.google.com with ESMTPSA id g5sm2647663lag.11.2015.01.30.02.45.57 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Jan 2015 02:45:58 -0800 (PST) From: Linus Walleij To: linux-gpio@vger.kernel.org Cc: Alexandre Courbot , Linus Walleij , Semen Protsenko , Mans Rullgard Subject: [PATCH 1/2] gpio: max732x: use an inline function for container cast Date: Fri, 30 Jan 2015 11:45:54 +0100 Message-Id: <1422614754-5391-1-git-send-email-linus.walleij@linaro.org> X-Mailer: git-send-email 1.9.3 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Cast the struct gpio_chip into a max732x_chip using an inline macro and move the assignment to the variable declaration to save lines and simplify things. Cc: Semen Protsenko Cc: Mans Rullgard Signed-off-by: Linus Walleij Acked-by: Mans Rullgard --- drivers/gpio/gpio-max732x.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/drivers/gpio/gpio-max732x.c b/drivers/gpio/gpio-max732x.c index 745698d977a5..a095b2393fe9 100644 --- a/drivers/gpio/gpio-max732x.c +++ b/drivers/gpio/gpio-max732x.c @@ -161,6 +161,11 @@ struct max732x_chip { #endif }; +static inline struct max732x_chip *to_max732x(struct gpio_chip *gc) +{ + return container_of(gc, struct max732x_chip, gpio_chip); +} + static int max732x_writeb(struct max732x_chip *chip, int group_a, uint8_t val) { struct i2c_client *client; @@ -199,12 +204,10 @@ static inline int is_group_a(struct max732x_chip *chip, unsigned off) static int max732x_gpio_get_value(struct gpio_chip *gc, unsigned off) { - struct max732x_chip *chip; + struct max732x_chip *chip = to_max732x(gc); uint8_t reg_val; int ret; - chip = container_of(gc, struct max732x_chip, gpio_chip); - ret = max732x_readb(chip, is_group_a(chip, off), ®_val); if (ret < 0) return 0; @@ -215,12 +218,10 @@ static int max732x_gpio_get_value(struct gpio_chip *gc, unsigned off) static void max732x_gpio_set_mask(struct gpio_chip *gc, unsigned off, int mask, int val) { - struct max732x_chip *chip; + struct max732x_chip *chip = to_max732x(gc); uint8_t reg_out; int ret; - chip = container_of(gc, struct max732x_chip, gpio_chip); - mutex_lock(&chip->lock); reg_out = (off > 7) ? chip->reg_out[1] : chip->reg_out[0]; @@ -261,11 +262,9 @@ static void max732x_gpio_set_multiple(struct gpio_chip *gc, static int max732x_gpio_direction_input(struct gpio_chip *gc, unsigned off) { - struct max732x_chip *chip; + struct max732x_chip *chip = to_max732x(gc); unsigned int mask = 1u << off; - chip = container_of(gc, struct max732x_chip, gpio_chip); - if ((mask & chip->dir_input) == 0) { dev_dbg(&chip->client->dev, "%s port %d is output only\n", chip->client->name, off); @@ -285,11 +284,9 @@ static int max732x_gpio_direction_input(struct gpio_chip *gc, unsigned off) static int max732x_gpio_direction_output(struct gpio_chip *gc, unsigned off, int val) { - struct max732x_chip *chip; + struct max732x_chip *chip = to_max732x(gc); unsigned int mask = 1u << off; - chip = container_of(gc, struct max732x_chip, gpio_chip); - if ((mask & chip->dir_output) == 0) { dev_dbg(&chip->client->dev, "%s port %d is input only\n", chip->client->name, off); @@ -361,9 +358,7 @@ static void max732x_irq_update_mask(struct max732x_chip *chip) static int max732x_gpio_to_irq(struct gpio_chip *gc, unsigned off) { - struct max732x_chip *chip; - - chip = container_of(gc, struct max732x_chip, gpio_chip); + struct max732x_chip *chip = to_max732x(gc); if (chip->irq_domain) { return irq_create_mapping(chip->irq_domain,