From patchwork Thu Sep 24 20:54:01 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Alonso X-Patchwork-Id: 522581 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 8B56E1401AD for ; Fri, 25 Sep 2015 06:56:27 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754025AbbIXU41 (ORCPT ); Thu, 24 Sep 2015 16:56:27 -0400 Received: from mail-by2on0131.outbound.protection.outlook.com ([207.46.100.131]:31168 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754018AbbIXU4Z (ORCPT ); Thu, 24 Sep 2015 16:56:25 -0400 Received: from BY2PR03CA038.namprd03.prod.outlook.com (10.141.249.11) by BN1PR0301MB0772.namprd03.prod.outlook.com (10.160.78.153) with Microsoft SMTP Server (TLS) id 15.1.268.17; Thu, 24 Sep 2015 20:56:23 +0000 Received: from BY2FFO11FD022.protection.gbl (2a01:111:f400:7c0c::124) by BY2PR03CA038.outlook.office365.com (2a01:111:e400:2c5d::11) with Microsoft SMTP Server (TLS) id 15.1.280.20 via Frontend Transport; Thu, 24 Sep 2015 20:56:22 +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 BY2FFO11FD022.mail.protection.outlook.com (10.1.15.211) with Microsoft SMTP Server (TLS) id 15.1.274.4 via Frontend Transport; Thu, 24 Sep 2015 20:56:22 +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 t8OKu0F4030281; Thu, 24 Sep 2015 13:56:21 -0700 From: Adrian Alonso To: , , , , CC: , , , , , , , Subject: [PATCH v5 5/7] pinctrl: freescale: imx: add shared input select reg support Date: Thu, 24 Sep 2015 15:54:01 -0500 Message-ID: <1443128043-21063-5-git-send-email-aalonso@freescale.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1443128043-21063-1-git-send-email-aalonso@freescale.com> References: <1443128043-21063-1-git-send-email-aalonso@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD022; 1:6zHLEB0tI0QUa/0X5PUUszLoc0uDfY3hDR1QmvW/Np7pJuXdNvmsCtOPCU/wYypI9nPTe+XeYTj/CPgZm650Sv7cFIAbWbxSALluEt3VmwfY1uQgXrlyHztifYjs4+XEI4IzaVGtWxMCt8i7xhqiOObXYfC+fA35lFgJXlE/3BdzjDFTTqu0vSap5y9Ze8CaM3nOsDS7iuxJ7qMhWLzXgsje++ItW2xo0+TMLSKrc6UctIicINvaxSjx41JixnoNZ8KnDbOwh3mDHH9hVkyd+ZA0bZZc3q4NHGs81KNyJDvFrhuavtp1KMhLDT3XXzzGgVV7Q5T63GHGraqoqGvT/PT14RZaG762RD4oGfCkbxowVBVeUkJ1hwLFCtgOhW4wS/a4reZE9dhJX35QJdD2vA== X-Forefront-Antispam-Report: CIP:192.88.168.50; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(979002)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(5001860100001)(33646002)(5003940100001)(4001540100001)(5001830100001)(47776003)(62966003)(11100500001)(2950100001)(77156002)(46102003)(64706001)(85426001)(81156007)(87936001)(36756003)(6806005)(97736004)(5001770100001)(19580395003)(19580405001)(189998001)(50466002)(5007970100001)(5001960100002)(77096005)(48376002)(50226001)(86362001)(229853001)(50986999)(106466001)(2201001)(92566002)(105606002)(104016004)(76176999)(107886002)(68736005)(4001430100001)(2101003)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1102; SCL:1; SRVR:BN1PR0301MB0772; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0772; 2:EdU+NZvsRYOhmNXNBgXlOpliitNAkYW/OGtcwg2kUkyfUhrdvQ+HeKeQcEBAW6LjN+REj5FvorimZ7vF2Q3PcM47BZQLfTPNrg8VXYKeqqFjzi8q0DL9us2/ucSHZ8NaOhca5RKTG104NYnb2Y4Y0T5INozKGNCR2Hv2y3Pe+2s=; 3:nWO/p+UJrpjT0VpXrVymDOFldQeGaT5W+OQglul0ZgQIeZlXe7IX/byWyUOY9phxgAeK3I+VyjGI4aMUscYcbXtl/EVcJjzaeLMKsvyDp+Cw8u6Y2DUvWRAXIdc3Ey5Y3OIkpL1RRHhbd62dNnSylCeJENFVRDRtCV8WmfhV4ncNcWEiKqMX+hlTdzQLLy+5YbXYsBXB6TgtEsOBkC97pZopkEVrl1gikSkXQK+j4DU=; 25:OmE0BkycDPjRVGQQ0m1Qg/GO/3A/raUeq3UdwdrbX4oPz3CcnuUkR3jb38YRvYBO62vajcjep52g0DyoWM68cwzbUPv2/UC7nV5bASnQhbdFhcEuY0e64Ku69KyGArewp5pzKC7nQSDgKDu/U2aN97NBFH0oT2bSEIGJicbU/N0x4nS1zSwBzkWpIYonzjQtmuVyiT8tAz+Ox+wSEWQv8dQ5eZ0GPmnv7tAvmyIEn0YGXAAlzk5ytYQwtpSOAxPuE+bHAp2CY3UNQy3YgpQdXQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0301MB0772; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0772; 20:T5e/vj945ljVv8kbJvwbXHpbi768vvI13GpPvEIqSRIVyniMgwBweSUBMLm6KU19A6wuOLutIjUmt/xk5FKE6fuiBW5fNPmrgnf/7j9rwOUeICTQulr06qDFdsvBQqvjI2YYuQ/KFFvqqCMt9cvNQH64+sNrg/8Xa8n5/NYgMCFjComsrLdl5V6EpRRtigCZbYSuMDVWLmPvan3hQoWBMrkGU9GzTcGf+WX5zlmZ8qepj4Hr8JAzARp7Mcvg9DAxL3OEL4u7lbvnlxHL4B/qvOPS4nnqkaN/vU1ljsLWBHcBid71uin/L46tmCC6gbKBYqLl2Ja0ne2I3R5VR1laXcO5CswxiCWE3cUnLHG3Q6g=; 4:7kDyt/OyBi5LlDUO0WWnVrAY4XrAnKz3UnxAltlvb7D6zLSz/jsF7qS/R3bmkhS0CTzyLah7/MgBr5pKr9GHC77xnVNGGMPIZfGm/hBmXLYATDd3iDIKoT2aGCrXKFprzmukEBp1lMZYV7QrB2gVyUV+um2MLws48m6DuMu9aX2oMzVHw1rDw5dEIyheO8+D1nmbJVgbZeHLXNYH2/pWjFh94TvC79ipcCfi2L35SfyE0+EByNDYevvCRenqxkg8kjj6e7+M75c4OWCMcplGYaQaz2G9aNUGN5BE5wntGiUYXeJ5//iX1N15nPmiJwpq8JtbC9nItCiGlbxmbhkzmOLWbm32ZU6mo0ZqfNOlMXE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001); SRVR:BN1PR0301MB0772; BCL:0; PCL:0; RULEID:; SRVR:BN1PR0301MB0772; X-Forefront-PRVS: 070912876F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0772; 23:62epTBmd1aNe2K5GdgHL/Lp5V7TrJ9gG91HJkVl?= =?us-ascii?Q?vQaAa/ps5leeZAXxjNjb5cCCHsw7gyt+7I6TE7LuF5ldBPrKX7m6tuK5CKcJ?= =?us-ascii?Q?75OpnRq7CEtdEy/JnQF6cSDfx/m8yn+GqcYvrCwWrNujCfQU2mwOr+MtamYO?= =?us-ascii?Q?HCFFUFmN7e+1qfKkxDszvratszbyOcT6+6c02qkgREDHQiq61WJD8a1Ox6qB?= =?us-ascii?Q?Dr1aWj7mZg6b8aPlSu+t7dYupuQzPmIbPazjT7WTNAryLp3pjhDWTV7Wjq+W?= =?us-ascii?Q?f6bGROAQXKKdjtGgWWYlRzxE4tDt+jxA7Dv9+fp3tpCNFcuYkWPxkvV3eFF1?= =?us-ascii?Q?Y6jqjB42X4GEiG+nCpOu3XhENck1bBIDT9XXHIQxcSO+ifIYUGlsgwl7gHWd?= =?us-ascii?Q?Hr048y8g9I/VopKk8pvuv/taWTDCutV8OyAh1R0rmDYHKZuJWoh1041OGQeK?= =?us-ascii?Q?WMyEWvVIytV7S0V3UeFUbC53iF9aKTTTM+/bUfcVzFnFhjKNurTuETfDKUKb?= =?us-ascii?Q?EFPp1DY5ob1Tr2nMqoWJJaxCEcqgXObV7JE+x4B4XSy1nXQtviU1ar/sjbGZ?= =?us-ascii?Q?eyeCo/r598jYPTFUyZ5MoK0k6oda7qXuS4C+cV6pFABtBNHEnMzFHRjPB70S?= =?us-ascii?Q?ZOry+huQQK0wLcK37fUXwoh/d8Qtlkp8pwCB6a6z+OHy4NSnH/Y3BcXzIsZV?= =?us-ascii?Q?O7b7oao76CVCEiTOmUnkPu0jRixwf9B1PPMZcxwtnUyDd22pVSwy7SZjNoas?= =?us-ascii?Q?kmnBAYzoiO+eqRIrHKIaolG2szndtgHR1vG6g2T0qQXasOmo9rRzXMmj03cz?= =?us-ascii?Q?d/yujbQG/03N8HwluXjNwziX7WQ4MSVVAEhlNvxbOYg2s5RMGMHBs/rg5K2w?= =?us-ascii?Q?O1rGItz1pFe/TTrf0ztsnzt7x6OBRf3C1nofqWid82OnPOkT5Dw07DxreUiA?= =?us-ascii?Q?K+GhwPj8WORaZG+muLQjCU4cjaKG6FToKNBUxBaRHwKiybu6Rkze6H6AL5An?= =?us-ascii?Q?0kZMO1IWCiv5kPO2+y1wCX9tlShcV1LyBMv3CMRFyC3JshBu8VO03umD4M+Z?= =?us-ascii?Q?sk8/VPZz6GGC2cfxbRCUcZvo7bgsbk9diz8jLFZ0OSt/AQme7Wi2w2EE83F2?= =?us-ascii?Q?cZhvtcA3glRp15AKC8oV66xQb0u9b/1Gc0My10134U57eubeVRZaRkwLXAue?= =?us-ascii?Q?5RTgcF82h2oJhsy8k9CGdSQgDmuUupz0/6qKqCCecNdHDkPZ8lHuRF7GRaD/?= =?us-ascii?Q?yGG+e3tSJ/pjHlP7A5B8lStujwkkBFR88FcAdWGbC3/AkQLGrwyIMw1qOSnd?= =?us-ascii?Q?LI3LOnxIYFAJpIYWGPtA8PAT8LdPrmMkdOklbsY207rVQ+S/hFzPJFX1Tn52?= =?us-ascii?Q?YqQ75wAT/rq23D7wqUu7kCk0uPlg=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0772; 5:72l0oS4wyh5qIlNHsQ3HFSzKiut6jkttCoSYY9CGOlBeD3U3rBYt1IFS3B6hLL48OriHDr8MZtgCbYB935wHcI6f+URK9AikHPMazoegp3Wk04HZQj5HZr2Ok18d3/iD1pyYVph7GtGKB+/2fa6CpQ==; 24:7Lbd+1xTaDYKySjf59Dx5WAQKySndaDj1+rmA7j0C4Ifluh2O8AiX4nA0nmeDiHM3ftZXgCvU/058oX0B6H4LkQhQd5y0g6L5BcqyltWHn4=; 20:KBEnOlhBss43zfIPa2hGWqG0bqDdau7KNiS6Y2S+Ql2ahEoHJA/6ZNXAHX1wDj2s/io1VvGfpO1tu3tm9XTf4g== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2015 20:56:22.4955 (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: BN1PR0301MB0772 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org - Add shared input select register support - imx7d has two iomux controllers iomuxc and iomuxc-lpsr which share select_input register for daisy chain settings Signed-off-by: Adrian Alonso --- Changes for V2: Resend Changes for V3: - Use of_parse_phandle instead of of_get_child_by_name to get input select base register address Changes for V4: Resend Changes for V5: - Remove SHARE_INPUT_SELECT_REG flag - Use fsl,input-sel to check if shared input select register support is used drivers/pinctrl/freescale/pinctrl-imx.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index 23348d8..c7946fa 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -39,6 +40,7 @@ struct imx_pinctrl { struct device *dev; struct pinctrl_dev *pctl; void __iomem *base; + void __iomem *input_sel_base; const struct imx_pinctrl_soc_info *info; }; @@ -254,7 +256,12 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector, * Regular select input register can never be at offset * 0, and we only print register value for regular case. */ - writel(pin->input_val, ipctl->base + pin->input_reg); + if (ipctl->input_sel_base) + writel(pin->input_val, ipctl->input_sel_base + + pin->input_reg); + else + writel(pin->input_val, ipctl->base + + pin->input_reg); dev_dbg(ipctl->dev, "==>select_input: offset 0x%x val 0x%x\n", pin->input_reg, pin->input_val); @@ -682,6 +689,8 @@ static int imx_pinctrl_probe_dt(struct platform_device *pdev, int imx_pinctrl_probe(struct platform_device *pdev, struct imx_pinctrl_soc_info *info) { + struct device_node *dev_np = pdev->dev.of_node; + struct device_node *np; struct imx_pinctrl *ipctl; struct resource *res; int ret, i; @@ -712,6 +721,23 @@ int imx_pinctrl_probe(struct platform_device *pdev, if (IS_ERR(ipctl->base)) return PTR_ERR(ipctl->base); + if (of_property_read_bool(dev_np, "fsl,input-sel")) { + np = of_parse_phandle(dev_np, "fsl,input-sel", 0); + if (np) { + ipctl->input_sel_base = of_iomap(np, 0); + if (IS_ERR(ipctl->input_sel_base)) { + of_node_put(np); + dev_err(&pdev->dev, + "iomuxc input select base address not found\n"); + return PTR_ERR(ipctl->input_sel_base); + } + } else { + dev_err(&pdev->dev, "iomuxc fsl,input-sel property not found\n"); + return -EINVAL; + } + of_node_put(np); + } + imx_pinctrl_desc.name = dev_name(&pdev->dev); imx_pinctrl_desc.pins = info->pins; imx_pinctrl_desc.npins = info->npins;