From patchwork Thu Feb 1 17:49:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Stach X-Patchwork-Id: 868316 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-gpio-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zXSL046b3z9t45 for ; Fri, 2 Feb 2018 04:49:28 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752712AbeBARt1 (ORCPT ); Thu, 1 Feb 2018 12:49:27 -0500 Received: from metis.ext.pengutronix.de ([85.220.165.71]:53007 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751567AbeBARt1 (ORCPT ); Thu, 1 Feb 2018 12:49:27 -0500 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7] helo=dude.pengutronix.de.) by metis.ext.pengutronix.de with esmtp (Exim 4.89) (envelope-from ) id 1ehIzE-0005xQ-54; Thu, 01 Feb 2018 18:49:24 +0100 From: Lucas Stach To: Linus Walleij , Rob Herring Cc: Mark Rutland , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, "A . s . Dong" , linux-imx@nxp.com, kernel@pengutronix.de, patchwork-lst@pengutronix.de Subject: [PATCH v2 2/3] pinctrl: imx: allow to configure SION with generic pinconf Date: Thu, 1 Feb 2018 18:49:22 +0100 Message-Id: <20180201174923.7385-2-l.stach@pengutronix.de> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180201174923.7385-1-l.stach@pengutronix.de> References: <20180201174923.7385-1-l.stach@pengutronix.de> X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-gpio@vger.kernel.org Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org The SION bit force enables the input buffer, overriding the configuration driven by the muxed module. It is not located in the pad config register, but in the mux register and thus needs special handling. Signed-off-by: Lucas Stach --- v2: new patch in v2 --- drivers/pinctrl/freescale/pinctrl-imx.c | 19 +++++++------------ drivers/pinctrl/freescale/pinctrl-imx.h | 4 ++++ 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index 24aaddd760a0..c976ffe7d47b 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -31,10 +31,6 @@ #include "../pinmux.h" #include "pinctrl-imx.h" -/* The bits in CONFIG cell defined in binding doc*/ -#define IMX_NO_PAD_CTL 0x80000000 /* no pin config need */ -#define IMX_PAD_SION 0x40000000 /* set SION */ - static inline const struct group_desc *imx_pinctrl_find_group_by_name( struct pinctrl_dev *pctldev, const char *name) @@ -509,18 +505,17 @@ static int imx_pinctrl_parse_groups(struct device_node *np, pin->mux_mode = be32_to_cpu(*list++); pin->input_val = be32_to_cpu(*list++); - if (info->generic_pinconf) { + if (info->generic_pinconf) /* generic pin config decoded */ pin->config = config; - } else { + else /* legacy pin config read from devicetree */ - config = be32_to_cpu(*list++); + pin->config = be32_to_cpu(*list++); - /* SION bit is in mux register */ - if (config & IMX_PAD_SION) - pin->mux_mode |= IOMUXC_CONFIG_SION; - pin->config = config & ~IMX_PAD_SION; - } + /* SION bit is in mux register */ + if (pin->config & IMX_PAD_SION) + pin->mux_mode |= IOMUXC_CONFIG_SION; + pin->config = pin->config & ~IMX_PAD_SION; dev_dbg(ipctl->dev, "%s: 0x%x 0x%08lx", info->pins[pin_id].name, pin->mux_mode, pin->config); diff --git a/drivers/pinctrl/freescale/pinctrl-imx.h b/drivers/pinctrl/freescale/pinctrl-imx.h index 038e8c0e5b96..8e74ddc9cd8a 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.h +++ b/drivers/pinctrl/freescale/pinctrl-imx.h @@ -18,6 +18,10 @@ #include #include +/* The bits in CONFIG cell defined in binding doc*/ +#define IMX_NO_PAD_CTL 0x80000000 /* no pin config need */ +#define IMX_PAD_SION 0x40000000 /* set SION */ + struct platform_device; extern struct pinmux_ops imx_pmx_ops;