From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933461AbcCNF55 (ORCPT ); Mon, 14 Mar 2016 01:57:57 -0400 Received: from regular2.263xmail.com ([211.157.152.4]:35266 "EHLO regular2.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752211AbcCNF5v (ORCPT ); Mon, 14 Mar 2016 01:57:51 -0400 X-263anti-spam: KSV:0;BIG:0;ABS:1;DNS:0;ATT:0;SPF:S; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED: 0 X-RL-SENDER: wxt@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 104.37.5.155 X-LOGIN-NAME: wxt@rock-chips.com X-UNIQUE-TAG: <7565a27991a4b744a7f3b8d8d107302f> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH] pinctrl: rockchip: add support the get_direction To: linus.walleij@linaro.org, heiko@sntech.de References: <1457934266-29862-1-git-send-email-wxt@rock-chips.com> Cc: linux-gpio@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org From: Caesar Wang Message-ID: <56E652C6.7030503@rock-chips.com> Date: Mon, 14 Mar 2016 13:57:26 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <1457934266-29862-1-git-send-email-wxt@rock-chips.com> Content-Type: text/plain; charset=gbk; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 在 2016年03月14日 13:44, Caesar Wang 写道: > This patch adds the get_direction to support the gpio > interface. > > the gpio direction is not used on rockchip platform when use the gpio > debugfs. > > Tested on kylin board. (RK3036 SoCs) > The repro steps: > $/sys/class/gpio/ > echo 53 > export > $/sys/class/gpio/gpio53# cat direction > in > In general, the gpio53 should be out value, but the direction is the > default value 'in', since the get_direction didn't supported in rockchip > pinctrl. > > So, we should add this patch to support it. > > Change-Id: I237c2e85ac7680b3d0de15bbbb923985b4827def Resend it since the change id, sorry for the noise. > Reported-by: Jeffy Chen > Signed-off-by: Caesar Wang > Cc: Linus Walleij > Cc: Heiko Stuebner > Cc: linux-gpio@vger.kernel.org > Cc: linux-rockchip@lists.infradead.org > --- > drivers/pinctrl/pinctrl-rockchip.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c > index bf032b9..f22a186 100644 > --- a/drivers/pinctrl/pinctrl-rockchip.c > +++ b/drivers/pinctrl/pinctrl-rockchip.c > @@ -1208,6 +1208,18 @@ static int rockchip_pmx_set(struct pinctrl_dev *pctldev, unsigned selector, > return 0; > } > > +static int rockchip_gpio_get_direction(struct gpio_chip *chip, unsigned offset) > +{ > + struct rockchip_pin_bank *bank = gpiochip_get_data(chip); > + int pin; > + u32 data; > + > + pin = offset - chip->base; > + data = readl_relaxed(bank->reg_base + GPIO_SWPORT_DDR); > + > + return !!(data & BIT(pin)); > +} > + > /* > * The calls to gpio_direction_output() and gpio_direction_input() > * leads to this function call (via the pinctrl_gpio_direction_{input|output}() > @@ -1741,6 +1753,7 @@ static const struct gpio_chip rockchip_gpiolib_chip = { > .free = gpiochip_generic_free, > .set = rockchip_gpio_set, > .get = rockchip_gpio_get, > + .get_direction = rockchip_gpio_get_direction, > .direction_input = rockchip_gpio_direction_input, > .direction_output = rockchip_gpio_direction_output, > .to_irq = rockchip_gpio_to_irq, -- caesar wang | software engineer | wxt@rock-chip.com