From patchwork Fri Sep 18 16:29:55 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Alonso X-Patchwork-Id: 519473 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 9894614017E for ; Sat, 19 Sep 2015 02:32:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754598AbbIRQcW (ORCPT ); Fri, 18 Sep 2015 12:32:22 -0400 Received: from mail-bl2on0148.outbound.protection.outlook.com ([65.55.169.148]:15037 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754841AbbIRQcG (ORCPT ); Fri, 18 Sep 2015 12:32:06 -0400 Received: from BY2PR03CA009.namprd03.prod.outlook.com (10.255.93.26) by BN3PR0301MB1217.namprd03.prod.outlook.com (10.161.207.17) with Microsoft SMTP Server (TLS) id 15.1.268.17; Fri, 18 Sep 2015 16:32:03 +0000 Received: from BL2FFO11FD050.protection.gbl (10.255.93.4) by BY2PR03CA009.outlook.office365.com (10.255.93.26) with Microsoft SMTP Server (TLS) id 15.1.274.16 via Frontend Transport; Fri, 18 Sep 2015 16:32:03 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD050.mail.protection.outlook.com (10.173.161.212) with Microsoft SMTP Server (TLS) id 15.1.274.4 via Frontend Transport; Fri, 18 Sep 2015 16:32:02 +0000 Received: from bluefly.am.freescale.net (bluefly.am.freescale.net [10.81.17.130]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id t8IGVgDc032121; Fri, 18 Sep 2015 09:32:02 -0700 From: Adrian Alonso To: , , , , CC: , , , , , , , Subject: [PATCH v4 5/8] pinctrl: freescale: imx: add ZERO_OFFSET_VALID flag Date: Fri, 18 Sep 2015 11:29:55 -0500 Message-ID: <1442593798-11501-5-git-send-email-aalonso@freescale.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1442593798-11501-1-git-send-email-aalonso@freescale.com> References: <1442593798-11501-1-git-send-email-aalonso@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD050; 1:AKZhCMtlcKYat6dzKtcfo++he3cIbWvaefQLHkKAl6wb7OY1h7XWHMxF8WsYoWeyVV7uKrJdb8vtcvUOdO413TbgXToYWRdXk9PMGZuDtvordO2+r3yorrBjcuf56YOT6Bo47I/Vs4eVlxK/yhyWwBQwmVICD+ZWUWk/jD2gYvg8mylPxTU8DdjVI5AOyYnP293ILCshIKz77SgTYyZlSBJ8dhHoF/WRAqEcYJLK6sdAl4ixyAMzZ+2ch9ccsfXoaZTuiDr/quWL9JlIJWt6ZBiVqO3wErMUIWcib5rhJozgbChQfM7/s2uubgIAm/QnG4xnJX1IsTn08enjtHT/dl0h6RMZNrorJxT9JxXDSISOMQeZyiTU3XbJ0JmUR2PWWJIo+S4HSxgCKDPxSN4nWA== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(5007970100001)(85426001)(104016003)(19580395003)(64706001)(106466001)(47776003)(105606002)(229853001)(46102003)(6806004)(19580405001)(76176999)(33646002)(50226001)(50986999)(87936001)(189998001)(92566002)(97736004)(4001540100001)(107886002)(81156007)(86362001)(77096005)(2201001)(5001770100001)(36756003)(68736005)(5003940100001)(50466002)(5001860100001)(2950100001)(5001960100002)(5001830100001)(48376002)(77156002)(5001920100001)(11100500001)(62966003)(4001430100001)(2101003); DIR:OUT; SFP:1102; SCL:1; SRVR:BN3PR0301MB1217; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1217; 2:y/hiYz5z0R9GX5H9RUYfgIvqb0+SZiPdjtONLOdp7Dnb7+kRDzwmveU7leJsEdcfFuie7V5SSKKdw3hhm6akHJH2cpVpNvIUXoLTFa6jnEIAHFPBjCquJoD8+bAAHc7vqnAjQZEXyZpIJEuMfJb/Oo1oYY30lB4YK/GfxwXkUJ0=; 3:JAjJGdMQeHdzH1YkO9+6gqML/sNO/YBZtcNaqhR10+AG2B46s/yn1aJooWdLFoy8rMd0wqObSsXTjU9oDHPx9fW3R3zE1BCOQ2sl8aOIU+ZERWBaRYsyYQDUcESvwD0/6ow56OnrduOy3ZRf+iK9vwWcBrcrP14S8J5liZ52XSV2UWEhFhH4nejNdjLEKU3wIEJfIvH05ThNuvCzSdDk+75eCuRKp4IwdfsfssWr7Wg=; 25:kkr+AHRCZnQ6uRbAYMBewOoXFMWUrIaIaWHmoKbO9FG3LpYV/e5rXx0wivu4nzQVyqglZ+LHNlfIDMOA3+AgxeYSnhmFYJykfwOUHutFRVBWkrkIKVEJrq0q26HapOzq40hw/ftuYqXHRzFAfc/kmE7tZo5M+BLlimGPVZ98O8xy7SZEZzjFMOYdJ/fBO7B9JKG5Saz5g566U8QPPWPM/5Z3b55brb35WQF2GI66v3kgz/ZmBjEQqoC3B6Y2leQerPYss3ZWDixoYt9haZlbdw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0301MB1217; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1217; 20:MTUnSKhG0ypqo9+aWD55mdI16NlltDW7KkBMNSzQQ/9/9JdJqBA8B+fYkSZywtIgPgTyKaEGfG3ca1ffg9HxyhrS1cbDb9Pcl1OAV3hLk1uCudstEMxsVo+vSlkI4ciwVm+sqvbV36magJvccj8Y7uA2sWpoXKkNAe8oWZmkAa37YiooFBQJ+dkvkELvIYgmHHe2xSKXIsYGY1/AnqW7q/XHOmxljE5L9ap5is/rjG7XLVsOkUV8KqdvtXy9Js2jpDUeSpPQZjccmdDS4Eb1LNPVzL+uRYM+TFoI6SeM/lLtQN8U7CaBfOLm7PQ7I48teiBUWpx1vUEeHMOB4NBVssprAIOO4moISN9EcrLXMAI=; 4:UBZVuxAt6p2tg7KUoaUnuNbf5nVkWXLnPSzPOMXh9UU6mBMyWBo8pp+ezkF/Z/hbfbAqHO8hgEULeHTXbNTuqrwolBlhJ/ZmLKhR04PhK7HATGlZ3iNQ+4wuGrGVfDFLjDIcBhYGKFZ3M2Rx5GnWW5aY6sbApfTqNCPUp/7xAdZLXR0PGs6HuoQN8YNcg6T7yynqaoJO6oxhtmwOP1AndZ+PR0wOK/3sBU/08g2lF9wWWH7mm1050AS0iBRphPqW+3JPnUu+mArNdea7r/I7J/Xy1r8ghOebKEw1LjTgOq23L6XliPyymxJbx+fNGa2DMmb8X4dZ4lHaEn7IUG8m8d8DBtykW9cJETWts9pBzRY= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(8121501046)(520078)(520075)(5005006)(3002001); SRVR:BN3PR0301MB1217; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0301MB1217; X-Forefront-PRVS: 0703B549E4 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0301MB1217; 23:dQwPtZldX8Mw53FQOpMzgx0gotQAkl8cTt9UvuH?= =?us-ascii?Q?bhAXZdTijAAJIjClNMCLn30klMigW1F4SibzMdjcdqpbJs6pJ45hXPeZ93oh?= =?us-ascii?Q?drtTix94CxEn4SENuD6Ux/mnNRnpIn26DY5D7LabYuKE7oz27Yktyvqa+OWc?= =?us-ascii?Q?tN/S1PVbp+8fFc/fQoDzJWh4FzQskD/gqYvmGf0Rv7PRZztNiXemhzBRQyS7?= =?us-ascii?Q?OC8Ep1m8EHYgHP+LHs971hSNl8DR7ap/YCq8KWBGf3QZ58AywmJPME5atqgH?= =?us-ascii?Q?90H2HQs+oR1cWbp6pJJ0Ao/tpOQkdR+0z8xx2zsDNsD72FxOpNXVLbji8UyG?= =?us-ascii?Q?RZMmsYyNMZj6P2v8U4sG4KTiVJOouOZJe19S86lNU755Chge49PRsjP05T3N?= =?us-ascii?Q?DjzFi0oyZ/9uOtNzaAX8ZxG/TvooV0wFPNd9m1+oAj3fv3xc3znctHJe1MdK?= =?us-ascii?Q?18tp35MC9AC0ceyDyJUSqedhpYjrJW+8IOO1DjN4tsi/MFvUYTBaASxKEuql?= =?us-ascii?Q?qjQK3mqkWLc5eP32FdxTVO3a4RUETA14ego7Btxe3m8iFUMtfl+kKjfI15Kf?= =?us-ascii?Q?AI0oGlyqjjeZzpZQ6SDodrNWpS12Yib5iMHJkGFMt8pStn3926DLOtkK6r4M?= =?us-ascii?Q?KySzbDIquXriX5vn/CSsLuVl9WpyLgBldIVTNTjmLFFutkq71SmKFVLmbl5I?= =?us-ascii?Q?ne/5fCKQ4P/etQ2a0Lyl2DcYw+Vof8UuDBA9y2IqUwLpGTmCFWYOGFHPMBx7?= =?us-ascii?Q?xvhJf8wdeH756XSlINXdrqqrgWd1OhwcFH0XKjWMibpGztSE2YPmvaEdRJYY?= =?us-ascii?Q?cwTqf7KPneFLEQt9AXXWWtCsMZKbZprjDTn3Thf3DvdspXhs63qmJHciRqKN?= =?us-ascii?Q?Z/Uj1LCyNNQr1oyj3dZGVK8WviFu6W4cQE6v+JR8zBCYCo5OCfoL5QpUEAxt?= =?us-ascii?Q?tEt7rffssr5psvXq96bK7T9F/+BiOJMNJSpZvcJmJJ/Nn1HzAFp3kmKCYi69?= =?us-ascii?Q?r/qgQIyAs702R2oGnaEOecbdZNckZs4As5uzklF9xpdu47OmtaL1K+sH07UH?= =?us-ascii?Q?2/CRa6h+b4LlmHOHxmFYjZMceThiXoI/rPKxLtbaFYNqr5o8skEYeFDIsG+A?= =?us-ascii?Q?awZ9GyrRS3dO1nkxGlBFVjnrqVLiuJtSupZ+tLNZnx/q96VV293VzOcqfdjY?= =?us-ascii?Q?y2ZiwTNtXZtUaDp2rkV4/DJckTyI4By0p0EDlKFrYH3KJx7YzYVh2TEdOs6b?= =?us-ascii?Q?Ht1GD3P8bR3QBgpJQy8LhFbMZT66fdlyXX4zQjtPTlHJDWSZz+vH7RfLAh5N?= =?us-ascii?Q?ZQWVzZqh7GO1H02SF3eqrGus=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0301MB1217; 5:bq/vNNUXQBrDFgFNW0CTcLU2+1q64WkDBhNHWA9FDIhpEm6yDmEDk3UY4m4ostY1vyqR/3k7OB+nCcNw02BvjcPWvoprrVnGCLNKki+dSGbukjajdeO/4C6oaWuHdCTDuj8JXbzsjkrLzLbced6ZwA==; 24:ISuvGvDnEpWTpKRIWvqyF4PPsCihj3voH/MoAg3P3FTB9oUJYwrIcQm4GGsnHza6TDG0WvpVsrnkYRaW4ElGLtYRbfYx+MZrD2i6ppf2ahk=; 20:gU7QeUzvfSfwsPmtjJbJJl4PcTn6DChsPh4s1UD81ldjzJdez2h+VQ7YsX7VvpqfwwDQl6AVOmtWSB6THLcddg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2015 16:32:02.6867 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0301MB1217 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org - Add ZERO_OFFSET_VALID flag, on imx7d mux_conf reg offset is zero for iomuxc-lspr controller - Do default initialization on parse group function. Signed-off-by: Adrian Alonso --- Changes for V2: Resend Changes for V3: Resend Changes for V4: Simplify pin_id assigment when ZERO_OFFSET_VALID is set drivers/pinctrl/freescale/pinctrl-imx.c | 20 ++++++++++---------- drivers/pinctrl/freescale/pinctrl-imx.h | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index b9c6deb..866d864 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -437,7 +437,7 @@ static void imx_pinconf_dbg_show(struct pinctrl_dev *pctldev, const struct imx_pin_reg *pin_reg = &info->pin_regs[pin_id]; unsigned long config; - if (!pin_reg || pin_reg->conf_reg == -1) { + if (pin_reg->conf_reg == -1) { seq_printf(s, "N/A"); return; } @@ -536,21 +536,26 @@ static int imx_pinctrl_parse_groups(struct device_node *np, return -ENOMEM; for (i = 0; i < grp->npins; i++) { - u32 mux_reg = be32_to_cpu(*list++); + u32 mux_reg; u32 conf_reg; unsigned int pin_id; struct imx_pin_reg *pin_reg; struct imx_pin *pin = &grp->pins[i]; + mux_reg = be32_to_cpu(*list++); + if (!(info->flags & ZERO_OFFSET_VALID) && !mux_reg) + mux_reg = -1; + if (info->flags & SHARE_MUX_CONF_REG) { conf_reg = mux_reg; } else { conf_reg = be32_to_cpu(*list++); - if (!conf_reg) + if (!(info->flags & ZERO_OFFSET_VALID) && !conf_reg) conf_reg = -1; } - pin_id = mux_reg ? mux_reg / 4 : conf_reg / 4; + pin_id = (mux_reg != -1) ? mux_reg / 4 : conf_reg / 4; + pin_reg = &info->pin_regs[pin_id]; pin->pin = pin_id; grp->pin_ids[i] = pin_id; @@ -684,7 +689,7 @@ int imx_pinctrl_probe(struct platform_device *pdev, { struct imx_pinctrl *ipctl; struct resource *res; - int ret, i; + int ret; if (!info || !info->pins || !info->npins) { dev_err(&pdev->dev, "wrong pinctrl info\n"); @@ -702,11 +707,6 @@ int imx_pinctrl_probe(struct platform_device *pdev, if (!info->pin_regs) return -ENOMEM; - for (i = 0; i < info->npins; i++) { - info->pin_regs[i].mux_reg = -1; - info->pin_regs[i].conf_reg = -1; - } - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); ipctl->base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(ipctl->base)) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.h b/drivers/pinctrl/freescale/pinctrl-imx.h index 2a5fe72..2a592f6 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.h +++ b/drivers/pinctrl/freescale/pinctrl-imx.h @@ -85,6 +85,7 @@ struct imx_pinctrl_soc_info { }; #define SHARE_MUX_CONF_REG 0x1 +#define ZERO_OFFSET_VALID 0x2 #define NO_MUX 0x0 #define NO_PAD 0x0