Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932133Ab1BYV1e (ORCPT ); Fri, 25 Feb 2011 16:27:34 -0500 Received: from xes-mad.com ([216.165.139.218]:6704 "EHLO xes-mad.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753434Ab1BYV1d (ORCPT ); Fri, 25 Feb 2011 16:27:33 -0500 From: Peter Tyser To: linux-kernel@vger.kernel.org Cc: Peter Tyser , Alek Du , Samuel Ortiz , David Brownell , Eric Miao , Uwe Kleine-K?nig , Mark Brown , Joe Perches , Alan Cox , Grant Likely Subject: [PATCH v4 3/4] gpio: pca953x: Implement get_direction() hook Date: Fri, 25 Feb 2011 15:26:20 -0600 Message-Id: <1298669181-9589-3-git-send-email-ptyser@xes-inc.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1298669181-9589-1-git-send-email-ptyser@xes-inc.com> References: <1298669181-9589-1-git-send-email-ptyser@xes-inc.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1955 Lines: 63 Adding the get_direction() function allows the accurate GPIO pin direction data to be shown in sysfs. Previously, the direction was was always initialized to 'unknown'. Cc: Alek Du Cc: Samuel Ortiz Cc: David Brownell Cc: Eric Miao Cc: Uwe Kleine-K?nig Cc: Mark Brown Cc: Joe Perches Cc: Alan Cox Cc: Grant Likely Signed-off-by: Peter Tyser --- Changes since v1: - None Changes since v2: - Use GPIOF_DIR_* defines Changes since v3: - None drivers/gpio/pca953x.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index b473429..b93611f 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c @@ -168,6 +168,15 @@ exit: return ret; } +static int pca953x_gpio_get_direction(struct gpio_chip *gc, unsigned off) +{ + struct pca953x_chip *chip; + + chip = container_of(gc, struct pca953x_chip, gpio_chip); + + return chip->reg_direction & (1u << off) ? GPIOF_DIR_IN : GPIOF_DIR_OUT; +} + static int pca953x_gpio_get_value(struct gpio_chip *gc, unsigned off) { struct pca953x_chip *chip; @@ -221,6 +230,7 @@ static void pca953x_setup_gpio(struct pca953x_chip *chip, int gpios) gc->direction_input = pca953x_gpio_direction_input; gc->direction_output = pca953x_gpio_direction_output; + gc->get_direction = pca953x_gpio_get_direction; gc->get = pca953x_gpio_get_value; gc->set = pca953x_gpio_set_value; gc->can_sleep = 1; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/