From patchwork Tue Jul 25 13:41:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aisheng Dong X-Patchwork-Id: 9862017 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 908E96038F for ; Tue, 25 Jul 2017 13:46:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 891522867D for ; Tue, 25 Jul 2017 13:46:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7AE2228688; Tue, 25 Jul 2017 13:46:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6BF902867D for ; Tue, 25 Jul 2017 13:46:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qNyANXnETHfxi55cVbrZFshGydbvFULFwRL+f04c4M0=; b=GErcQ9o9Du+Rpv q7Q3HGcaZweaom8XTEXP370kJQ5do4JOcfJF1Ok78+IuMMa59XTMDpup2cQ/2yjjMqhVPiuB1sei4 ND9Osa05iZx9fK1N733DF1/i+A9d/ou0nC+HYjtXi+kc7doRwNtEx37pWQuleL2CSKAdlA94FkZU8 oeQj99VkMfks0J2KqXoBa9o5+EdqLlp6EjgAnbee7vNLaOIGiNgIArUXcpOkL6YZDQwiYS9kE1nKh t+PSPXbFmQ9FtD1v3ar9LV34eF3JmZVTrJO0iGjj3Y+GzxGZ4jN7yyd226GBlZ+wYpUHuMN2fMEma 3OPmHQO5ARy7mID1TvBg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1da09P-0003Sy-KN; Tue, 25 Jul 2017 13:45:27 +0000 Received: from mail-by2nam01on0089.outbound.protection.outlook.com ([104.47.34.89] helo=NAM01-BY2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1da06v-0008UM-Ms for linux-arm-kernel@lists.infradead.org; Tue, 25 Jul 2017 13:42:57 +0000 Received: from BLUPR0301CA0039.namprd03.prod.outlook.com (10.162.113.177) by CY1PR0301MB2123.namprd03.prod.outlook.com (10.164.2.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1304.14; Tue, 25 Jul 2017 13:42:31 +0000 Received: from BN1AFFO11FD037.protection.gbl (2a01:111:f400:7c10::136) by BLUPR0301CA0039.outlook.office365.com (2a01:111:e400:5259::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10 via Frontend Transport; Tue, 25 Jul 2017 13:42:31 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; gmail.com; dkim=none (message not signed) header.d=none; gmail.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD037.mail.protection.outlook.com (10.58.52.241) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9 via Frontend Transport; Tue, 25 Jul 2017 13:42:31 +0000 Received: from b29396-OptiPlex-7040.ap.freescale.net (b29396-OptiPlex-7040.ap.freescale.net [10.192.242.182]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v6PDg5fk024270; Tue, 25 Jul 2017 06:42:24 -0700 From: Dong Aisheng To: Subject: [PATCH V4 RESEND 5/6] pinctrl: imx: make imx_pmx_ops.gpio_set_direction platform specific callbacks Date: Tue, 25 Jul 2017 21:41:55 +0800 Message-ID: <1500990116-3620-6-git-send-email-aisheng.dong@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1500990116-3620-1-git-send-email-aisheng.dong@nxp.com> References: <1500990116-3620-1-git-send-email-aisheng.dong@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131454637518017252; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39840400002)(39860400002)(39380400002)(39850400002)(39450400003)(39400400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(54534003)(199003)(39060400002)(5660300001)(7416002)(68736007)(110136004)(85426001)(50226002)(38730400002)(77096006)(305945005)(86362001)(104016004)(8656003)(356003)(498600001)(53936002)(2906002)(6916009)(189998001)(36756003)(8676002)(48376002)(105606002)(47776003)(5003940100001)(54906002)(6666003)(76176999)(97736004)(2950100002)(50466002)(50986999)(8936002)(69596002)(81156014)(81166006)(106466001)(2351001)(626005)(33646002)(4326008); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB2123; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD037; 1:PZL7mRIwG3HHoVIWU5Dwvg56sdY82/VN2/Yx3yBFQo2QCFhdjcHeWlyY3jvOtpKFkctT7527n6VdH9U07HKNcuMNS11VEw+ejUnVWs5gZvNROtZ8RSC3PAhAU693WQd+RD2Rw5OQGIYIx98IuwqMZzwpPDjlXsT+lChZHCuDS/zNa5BbDwAFWtwi6OW/rsCGsJkEtYMtYgaW9CepDtfE3qWlKrTlFzA+vUH5mniOPgbLQkmEKvkqfBYa/vlribqecdymps3UPL2OQLaJsUtxGVEm5gpD+tTvKtHHaV+ry5//grHzRUjAlbqUAc7rw6gSIhuJQ2G8wZmPTTYzxOMcF7MhIyBIQWPhLGHA5d/85LMmObEb0LQFct1W/gvGv/2HL+603bOVwNvQbg+5qWjSBCpFKepkmH5W43n7vpGeXzqbCc0iAEhCpLz5lNS8M2ukJmo5E8XWlhnWOYXejhGmGyMI9jG6riRok02OOgqiToqPmurQLI3sz6ItnhuKuWU2At7+O/v7ZT4NyMKyrA8Fb2+IcmP66caG1Xh2vhaXi2DQL9WpNDvymWibqfMrK33azpc3UBikXGPB1OHA8Fc8pY1OSHv0caRoXuUzIDszdAtJzCPiOEswtlLDwkFbFKeHuulBj2+JALwukLRIuIWiLwmnLXk8Qv6DnB/74NVNPIW8T/tqKoLY6yjfA1p1o10fEQLfUFNbXvxV26b63snoZSppVe0oHMTC4lav4t3S01Yj4jlObs6bHCXwHIRq7NvlFlxfQIcp8kzMdPsPZVp4VWZuCb3zCMEFZ58o+IHprKREQ5ZlJWXWiFmv4S1IemkpKradmyLIw3YabGjqSJnijMqARpGOwbBNG3IkS5GYuwuWSxKqb0gLwbbCdhA++hQUc3aqQdDRU8SuHf6lrxvZLgcZl8Ih8H4Rhym5vkEEUFE= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 36737c76-9396-4cca-d2e4-08d4d362ffcd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR0301MB2123; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2123; 3:Vopf/ME4JCHHF6UAzUyVPMjeUVyhys1V9WTt133qV+srGVr7mSuvv/LpDDIJ6/lC5IOWXfUMqwDP46ozgeZp1ppLJR9tjlJf9JO21TjRLYMCB+2Xy9dsALuBojdw7yXSSevHo7Ifa2WCa0zXTTma9FbXAJaYB9YWeNQhl9UpJhjzr435Z9eU/1Cg1PFoszSijuDPv1c6UKSi7Wc7G6kNyBpfQXKlmfWNRBMOjHEw+jyUCK62CT1GT7a/EpSSZlEXxY1x9sjPYwBKLJi+cuPkZf/2aRYeIdAYY4Rv2xBGjtbykRIANhSqDUSdelQ19g777C2APDt2l4+8r1N9nsnhM9Lqx/aicsl2gsC/ILq+WjBAk7kGsfNx+l0vpjlfYP1L1rEIGbZMIqQGVlarjf6/eC5WHi9e6lDz6Q4cY0Lbmmu816sx+yN9X4FiYzqByAvhMNmhSyIiw2SGuYvvAdMJdec7ea5+myzFRz+Xv1R99aSn9gcOAp4+weQtIDw8Y101F5RZvChAnNtcI0U5Kiw2u6GiyoEzCRqh4GbLWppg6H/QSspHyg00rxYLlygiBAQUFHCw1BgUz6Eg2bZXS5++pytPY29v1YUTWjuGBntk6wfyRZzgqZp4dgFWwh6G0qOtfQEbYpHRtw/HaxdzJXneHruV1AZ5HPPdY/mxs70wjYuClGLxcPV0/y+7jNif86qQ8U+ZywtNRIB3GCLjT90b8YwwiYhNyO2K6r3V8A12KYuabCbqVQyJ2tRR9+aTF5gkojX13a9ti1Tcu+MuIAmUewMcZp2ehrp8EB2zKXFNh11RhXhKNAyv8D5gNmak5ueKG5RQOTLVuZvrYC9z428clXp0/5w4tY+QvJdJsxT72iY= X-MS-TrafficTypeDiagnostic: CY1PR0301MB2123: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2123; 25:0lYFo3kpl36fn6FWjHO2hbbD7PRH/7+kUuIcyz+aPEQXlP6qeyz5TbU6aMaUq+da2RTHNk0x8GHk4oybijcv+wPMQohtQL8hfzhPGrJ4gyRBxZn/7ZwaRO3KJJks/GVn/xafzd1JOsKwwi7LoAZJA4bsRC1//bLFvLHVoAiIhbpMfDSqnEGud/q11vUcKfixh091L8qmR1rr3xX29gOkY+tjb/7yiEsikn/A/sOUy80n6xHXQO//z0QCu8Q5e4oLCKdPhh0hIi4KV7U5TEZYJvYdUAbFymZuWV7tk7nGQqIoSGnc4Pk7W4eOQ6Q5U/oNIXSWX5i6xQjvMnBWKxNq+Rv1mgVbdJpxEiVYjvYEhBXwtvP4tBgEka75rsNffzy/3FXaFpoDrTIPcwa41kp7i/HWcV0uqzr+px611kjD9+LOrBW8wiLiY3x5TAS20IjO65VPfEUVcf+tWlziGOFl0M62axM5h8KSXy7lPsyP31sRxm2uZlATHoN0rhhgwIQ8oQPYPjDDz3mrkG0jKMz1XzJLW70bEenBQ4++1MEpPdn+FeNwSWj7+1HmYFu33AyQNLWKA+iehPC+7e/ek6mn57DCkioKkFYB1p0yt7jKurtDYjoqyJPZV80iY8wiIX0B+7RfBiRy96g6o/Z730F+UE12AvWy8h7vmglNT0450/BXvFjVcaHPVmuZ5VGgiFsmB3EXAJkvUIf47C/Ueh0i7AwuVcR/KedQ8sLhKB0mk7dH7ZxRJDCK5974GIXJJufyN2Dpxmsb0EGqc4Bq69OPBMOz4wdkYzN6Raw2BZMF24a6+IwG4WmEKZGtR6BppfG+dw4nIVf9vEJ70zKAHUveyxUWMPaqEeqd0PIQBNlixBYqay3FVKCnvB3Qd7zJvKI0Ji3sR9uaOLmr7rB1B5w+k7/cEaR4ncxoPRZMTh8GRqE= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2123; 31:gHTdDsW6/sWDfte/GWsoyx6jujrQHrkIZhwubj3Hqs0rt/ENAicDiHfTCxZnFiUQXBjbvYO1+kjN0da9euL1Ii8ORG6+7LugRQJCOACQGYI6+qkRZMjpBzlTg5sGdksqaSltQVJK+7CEtrb6ARibfQd1lGlSC+8RQrFL5w5GRMbUI5sO+UNhq2hZFGgjsVQF2OfGTa97HJFrLMiaqo2+yZuQqK8r2zC0nAq0dWeXLz6adHMMvPWfN6SAMj8/c9KXmJPPsbZyeHizLqvbHV8cNGRNNkPbg6CH1s78OE27VoqCa7FXWewPU2iyzq7BfAGtQO3nDU/vYo/v96L4OtyNJjzJG4G3Gp0WAhP0AsS27hid6dGszKHmRzG1fFL0mkAhRKQGP+aOgD1l3DiSkkMkzu+zt8JU0RDdI75JbV8LoCMOZWc+/xdx2cEle8dxceOkr9b+yy0gerklKnpddDlG7aT8y9MJfp+Pyg1ADR46MtIKJ5WP48mSRuHFYeD2ebDVMGjmqD9UklYJ+D9Zwx0EpxhRRbjiVQzRDSB6SfSGMyRBpaJe3hbMxoKeFtxCRg2APBSPVJW7s4TOwqw6LiWY6ZZYdETUo8pZKmkb5IHvIctD0E8ndxLX1XWJTeVpF385ePK544BG6fIGQBqkILNznFcrS1eCCkFxFH+AaY4FvTte+WjJlkfMirNck4AVkzVK X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(8121501046)(13016025)(5005006)(13018025)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6096035)(20161123561025)(20161123556025)(20161123563025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0301MB2123; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0301MB2123; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2123; 4:Cn/sxD8KjTV7DT0f9p/28xxGBNBrRCB3TnCFr5WH?= =?us-ascii?Q?IFbzadSH7FpgBpyvorOu2TPHN7EOP09JoNU3N1vkFub5An9y9BlpuzmH/EYB?= =?us-ascii?Q?GcqttA6R5eUzLBkNe95q8sxcbxsHupdCd24xv7g0XvUT/K/AYzhl4HG5yR9p?= =?us-ascii?Q?OMNM0s7/dtxMoSI3SAFREbH3JzR/Ylz1rXHUwt6SE5B9u5HxiDyVqJetLC2u?= =?us-ascii?Q?HGz6uhH464/8BsiN/0YjWyJiEZ62k7qZREJ79t6VLl22j/pw5J0/qT0KiBa7?= =?us-ascii?Q?60T+SYgCLcOjdfMsy+SPvYmgkpGVR46evC3R0wgvvweQjpIxFxX1PkXKKwmK?= =?us-ascii?Q?tTIaytd77ljgxXQrLaJKC9ReyRcWTOxAR7VO3emQ3UlM9Qj9WkZFTtBq05IP?= =?us-ascii?Q?vz41fnmNAHp+wGhlXs3KQ25QuKnq8ZcSJFNKbqWzrtF48yqX7g+jhV6toLmh?= =?us-ascii?Q?Ungz6dLjGOa9FH5P75TwUfRo2QwZ07cOC0jcvRPdc6R4GjdfOXfnxErSJ+C4?= =?us-ascii?Q?cB8qna22IhY7yYnR36SkmqYCwxpudDuwxB1qPRWN2sLQhOlLMvM6YaagVPtV?= =?us-ascii?Q?MrkHlCRdY+hWqDasg3ATAA4wXhTEiBOKO5u5fkwEtdcFgT7oEDGWqqzKZhlh?= =?us-ascii?Q?5lWb9Ina5Y6wYLE0/wvWvoxv4+bKgmqHwjrgAsCtmj9ewxUCTiEsxX9AWCNB?= =?us-ascii?Q?pH6iTc5rFKsnGFNMzksSlvmcgTE/bJ+crvCX/wXvo0miihZaY0SD/A4WzG8d?= =?us-ascii?Q?yzN9RNV7F1aWzWhBINpG87JZhqbHIOkghVdJyto9DY+czFYUzUW5WsxbUanK?= =?us-ascii?Q?I3JMXm2vRwjiBh9E6mybWOeBlaGu+VPHzRVECozbF/WSnTXBo9paA3A1nGkq?= =?us-ascii?Q?Vr7gz50/59dThvQm48qqmUE0BGr84OB75ERCTmOfRj0nkO52awqUzQ3m1X/Z?= =?us-ascii?Q?NUxxBibu+OvpEdyZ48iUDaRKrLQl/qOSTnyCT8GfOaoa1o/9hwGjghItBrwE?= =?us-ascii?Q?BQad0wzjRCflnmIhwc9qnIuJHzfbqOAKPE5d+VLcJYiv/4WlWM2ibY7eurE6?= =?us-ascii?Q?NsW+2hHmZuZMfCu7rKysqQsUlnd9W/X9tZeO4Qdj0+gP48p0Y2RsdM6a5k+k?= =?us-ascii?Q?GQVaXzU9+GKR6LWXB1TmOd2hy3uUZG8DJJuyNUkX3bbvUqMkCCVo8cGrpI+m?= =?us-ascii?Q?AGXEmC4l2cP9xgPc+AjANOQ2OhVJDEOfm3ho6f5JcA+eDTmgk/I7W7r0vHkX?= =?us-ascii?Q?QhGxN1Ilvwfhpz3Tdnk=3D?= X-Forefront-PRVS: 03793408BA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2123; 23:x9UWzi6vRX27zqoCYlAFe5eA5o5+ZVWQSezCEFW?= =?us-ascii?Q?quz0XfYTEjuKKTWbcknFqgKmMG5LrMBSwt0pnT8oUn024Cxb0dChn5aDQoAN?= =?us-ascii?Q?ZxXRZCYaRkZej2Du5rbU/OoGEd+3XUa0WB3vqH34QvAFfAI5enxqZeTARu9P?= =?us-ascii?Q?pQLK5A14k3OvgY3/3q26T3Nxh6tdA7PpWNuXBizS7VzPU3GB9GjnGNiueBql?= =?us-ascii?Q?ZDi3UqLYWltzqCEMNgGqjzo73Jyrjg87oMhCU/lIg4j85cbvX3z6FKcqXltS?= =?us-ascii?Q?6o+fuKnUgWelgnDmr1LBs1dmCf+7bKfdzTOWyqaDHQ4ZHICNF73Ld3jfkoIJ?= =?us-ascii?Q?izWZ9MflE0xTyLvgFLQ/dDAmlx5FZqL8hn8d1Pm7XZPwVPLRysiHHi65G2rb?= =?us-ascii?Q?OzmsOQ0GikvpVK3Wc9+fPCUvmZ9/WZdwwDbpvJ7K4spa/T2HUgk5zb/xla7K?= =?us-ascii?Q?L4l2v/G4GJxuZLCX89pZDALFo8L8QNQFnroLsEEQC/+7NykopfIHlwxkM1SE?= =?us-ascii?Q?oSHFK5KOoJKdEVdv3k5dDLfDCI52PeuhRs9aRsby4kO+nS3zPpF8KiI4LBgb?= =?us-ascii?Q?Ub32/sYV/9nTfk3u8NQf2XWP50UakGYahLYlpIjr6h1MLf0b0v89mS9h52sE?= =?us-ascii?Q?iKBsPaa4O3YoobsHimw2CBpWol/vijLPglUORw4BAWwkHy89bRVOSN2PhSui?= =?us-ascii?Q?Mq28UOIIZD0EKsAk7xkx6+yjd/3ayX185OdvUkRGHNnPOeQou0qOzn/GskX2?= =?us-ascii?Q?Ay/YHxIiYNfK6lbh3kNH7b/iNlaFeDqmCitBXjCjhZ++97nMahwzCwuavasz?= =?us-ascii?Q?Nr2FZSs7w5Gjgav1t4gTulgM7qxwqAK0T8TdZdJEdPayloA5PaQnejZXVzzi?= =?us-ascii?Q?MdnFjZy+7e5wsO+u+Xekd//Gz3eSgSGKF0Rn2XPFGeD5iF+j0uDv3me1IzTQ?= =?us-ascii?Q?nUb5qcAa2N3wNdtwOk719UtJidxcKWMh1FEH1Fsre8QQFA3Ywl0S86Cc9VcW?= =?us-ascii?Q?mfPSjOYG5V2WS4tdnAowZNAwD39f9EEf7dQcf0dQOQKNV7vxLbDwmqy3y5JK?= =?us-ascii?Q?6e4zw8pn0nIofM7tqgP7vas+Aa1MGsR94ZUiUCPJru9MPmf87j+9o08wdnwZ?= =?us-ascii?Q?AF3enw8eAYugWifkUwDcmORUikFGqjP0qg1VC/krVJD5sPddwaIi7MvveDxd?= =?us-ascii?Q?0y8iYoZk/RgP2OkTD2Smj9lovvDPQmWpHxqNbonhk+55ILqLBl/4xBJ/SwrB?= =?us-ascii?Q?r56Az9evm+qkHTYqB5r54xTHLqMw9ikkRSGJxz3473cK4SOLS2aWQRIEN8/P?= =?us-ascii?Q?m6ElUofSATFTsz7+JdfsqlY+w9lLwx05bvnlwvbwKI92HO++yKb59EZ81Bjx?= =?us-ascii?Q?LY1kG3zfqB8ISioTpKVOkOz+/Tfk=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB2123; 6:FBwaeoLbhXrAM136xql571nIz4OOCa1IABWK1rw7?= =?us-ascii?Q?ag2WDnm/HL9oaLLvFjM2WGEJPwcSImgGk6jJSS5wHJCbsaWB4FB3IzxM5hOS?= =?us-ascii?Q?N2+AFTF6C5HGy62XDfkRkBaE/4S4YbgHBfuqAN23yBfquBy13/L2zITKzUD1?= =?us-ascii?Q?AaONtqVzbH92dByihIa4bq8B9oZqBlgFtWsDvJgyaSWy+3upMMpm3iyrtSdj?= =?us-ascii?Q?9qSUpJBTKENNcPR0TNrWgofxNeGwzc7NpA5NULtJhmJDssGHtoxPffTaJwQQ?= =?us-ascii?Q?U3ra52MV54g2OH8mP0QottsTMm+zgW8o69ZQF78mJS6ttjpJksQd5Ls8Se2+?= =?us-ascii?Q?/vExiLvob3+bg5MckBbTqGwWZfCY3/havFVsi0HObBYEThmre0HzzVvcRM3u?= =?us-ascii?Q?vRwvL95Y4lCmXKSm94WW1oW5scYtssYyIFihAx3Gmp6IvBLEIarI+6oYcagX?= =?us-ascii?Q?rTOHAB2B7izoolqXj8yb6XB0uauqye/9UWBEPPTQbLoIj7plrKspDmtPCI2c?= =?us-ascii?Q?s0ERwblR+eGTZF6WbGHuFpEXPEOCd0l9KZZEgrbXpHxnIQmQH/ErLs5A8ZOX?= =?us-ascii?Q?aymCQ+5M2SlGhrKHWXcvnmkyPcXC0rsvtfy+f+k8BhtBIixNgZE9J19otZ/d?= =?us-ascii?Q?C5SIvZwSTf+FT4QA2HRF0Wv/RKLlAWR64nuGE+m/+M5ntg9WSfEMSJSCKOIs?= =?us-ascii?Q?2BihQ7mfZQFDjsOUOofOLCA2QIJ8mccJZaadYU/1LMqN947f5FWYb3zmBOul?= =?us-ascii?Q?l7R0UZStz3DgfSGkVEj3plALPibJ+f4oQY+vG6pC4TQtjZ/fDm+IGph/KJoF?= =?us-ascii?Q?5lxQTzAucGTdsTMvRWX6ujpIl3YT6b0ESkeF0VRn3hRUoXDw5Z+8O5JILttd?= =?us-ascii?Q?xc42wX9BhH6oce8Z8WcnBLfRGhcEb540GY8NGhkNUfS+t0ho+f/+cqBuO0uW?= =?us-ascii?Q?e2htXEfe1LQ6Tv9v1olQVJ46aOYSrNXN1Thv+fsp2Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2123; 5:MZANVBBjXOp9p8RpcWExKJ6SpIS/BCQQIsy/KUevC19zqbSlw0Hoa/KEPIqFExGNa9laBYE6hS0pLPbs/9I4Xg5eo+u4tFzJfOThb0CAxDSw3cW7HMFBLGUICrZoySZW8jFn3pM7W4DQRu9wJAearJpfA4I2Oi0tv29gkxwJkdl6ODm5PsoDZ+4aOu9Qeuxgu76Rckkcl7o3VL3zF59yjuDdWiDGwAmWIZfubVdRNShxED0U+tZeByqf7Q6PQCC6OCbeV18cGWuFijiURCxxTpn7mTNSgScdJwnNUTTEBqC9tbFc2IyehXP1U2NVHAPDRduA6mHZRKOtceJNkF+le+s4sy2Ib9XiGZBOtv1c2dNPs5yY668dBzsSKAoTzP2SL+nqvbcwwAA/DJku/7SfxpN19fJJW9+eUod2JUZh4VhXzYekzAb3OdQQz/Sj6rn//8g6D/+0gpipCov4QySkBWOIbNDk+iXuYgQLgh96AkUal4phP1uvSQvMcsx0RRnB5A5A3qRIRu2iwa9Aiti7tw==; 24:wEl2D7icGUTxsTAUJohUkcM7kj3dv0kNhR9G09SFaO905i2a8LL8Va3sFYnrX0dhQCXD9ZvFbX/R5VsuUYlhELwh9WIdBZ8mY2pw+Uv9dZ8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB2123; 7:xrcvYDafl+g5p2QXNXIXxrBJl1++JGatSzIgIBXXGJIq2VLDtAaNBgtrGRvIklnq6+MPoKgZauN0hXXjZfAT6BkOA9hQv4bL3IQYpf/uERjpeGskoinsFmpTTM9P4TmcDh8dPamIwoUNMjLIe6iXWK1DB8Hzv90wrhW63HSgFZuainSRgk7aYmTAO9N0PDoRKnhB5SNTzsOVV9ktA2UkYCSZyNGlBp9HUhH6NzNxHODp9HBeDksTFbB8Q5E8FGhQIQypvKUvSrSiF8LsaJrwj6+Xm0lCRhePdiedoyHnG3sVuOM2obKC5SBL8T8rAG0P4cjmKfRhseaDvsVVay7pFjoB1uVA8OQdd1DE3/9RLqA7dU/sGqGwRvI+kyUStGwmtKVC0THqI6Vmm8LD62ugJO9/82EKaIiwQmWS7LhYHmfkId4XSYokW77Xua7lxSEilVW7ww5Tb67+hTQvhdMx8/Ge1fGjw7X0JhDS5/mc0bA9jjR8VN0LkUBW3OGIpUkf6++JKpugn89gk7O032/MxGfo/AOtXQrF704eHMZQsRoUXS7up2t1K9ie4Bny7b1Ec9Wf/tqR33IIx//y3LcIhMKfrxzSgnWLLvJ+1fSgW6B5LCmwxVkjlm6dssdY+cqh8v/7/OphKuiwlILipsT515lyCzwYTK/OIMBpxnTCyOajbuYdfsbE3fIIMdObrtYQqe9LkKSG/aKBn5oro5eCZiMI5XL+TsvxCzDKRvbUleIizIogJzlTvm0fiHvQU1zeXwY1sHKnq0JvqcRDwbI3razlD6T+h9htAq4xrEn0ubw= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2017 13:42:31.5677 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB2123 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170725_064254_108712_2422B298 X-CRM114-Status: UNSURE ( 3.39 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aisheng.dong@nxp.com, Alexandre Courbot , fugang.duan@nxp.com, dongas86@gmail.com, linus.walleij@linaro.org, stefan@agner.ch, kernel@pengutronix.de, shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org, ping.bai@nxp.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Various IMX platforms may have different imx_pmx_ops.gpio_set_direction implementations, so let's make it platform specific callbacks instead of the fixed common one. Currently only VF610 platform implements it. No function level changes. Cc: Linus Walleij Cc: Alexandre Courbot Cc: Shawn Guo Acked-by: Stefan Agner Signed-off-by: Dong Aisheng --- ChangeLog: * new patch. --- drivers/pinctrl/freescale/pinctrl-imx.c | 48 +++---------------------------- drivers/pinctrl/freescale/pinctrl-imx.h | 20 +++++++++++++ drivers/pinctrl/freescale/pinctrl-vf610.c | 25 ++++++++++++++++ 3 files changed, 49 insertions(+), 44 deletions(-) diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c index 505fe79..ad23e39 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.c +++ b/drivers/pinctrl/freescale/pinctrl-imx.c @@ -35,18 +35,6 @@ #define IMX_NO_PAD_CTL 0x80000000 /* no pin config need */ #define IMX_PAD_SION 0x40000000 /* set SION */ -/** - * @dev: a pointer back to containing device - * @base: the offset to the controller in virtual memory - */ -struct imx_pinctrl { - struct device *dev; - struct pinctrl_dev *pctl; - void __iomem *base; - void __iomem *input_sel_base; - struct imx_pinctrl_soc_info *info; -}; - static inline const struct group_desc *imx_pinctrl_find_group_by_name( struct pinctrl_dev *pctldev, const char *name) @@ -255,42 +243,11 @@ static int imx_pmx_set(struct pinctrl_dev *pctldev, unsigned selector, return 0; } -static int imx_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, - struct pinctrl_gpio_range *range, unsigned offset, bool input) -{ - struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev); - struct imx_pinctrl_soc_info *info = ipctl->info; - const struct imx_pin_reg *pin_reg; - u32 reg; - - /* - * Only Vybrid has the input/output buffer enable flags (IBE/OBE) - * They are part of the shared mux/conf register. - */ - if (!(info->flags & SHARE_MUX_CONF_REG)) - return 0; - - pin_reg = &info->pin_regs[offset]; - if (pin_reg->mux_reg == -1) - return -EINVAL; - - /* IBE always enabled allows us to read the value "on the wire" */ - reg = readl(ipctl->base + pin_reg->mux_reg); - if (input) - reg &= ~0x2; - else - reg |= 0x2; - writel(reg, ipctl->base + pin_reg->mux_reg); - - return 0; -} - -static const struct pinmux_ops imx_pmx_ops = { +struct pinmux_ops imx_pmx_ops = { .get_functions_count = pinmux_generic_get_function_count, .get_function_name = pinmux_generic_get_function_name, .get_function_groups = pinmux_generic_get_function_groups, .set_mux = imx_pmx_set, - .gpio_set_direction = imx_pmx_gpio_set_direction, }; /* decode generic config into raw register values */ @@ -793,6 +750,9 @@ int imx_pinctrl_probe(struct platform_device *pdev, imx_pinctrl_desc->custom_params = info->custom_params; imx_pinctrl_desc->num_custom_params = info->num_custom_params; + /* platform specific callback */ + imx_pmx_ops.gpio_set_direction = info->gpio_set_direction; + mutex_init(&info->mutex); ipctl->info = info; diff --git a/drivers/pinctrl/freescale/pinctrl-imx.h b/drivers/pinctrl/freescale/pinctrl-imx.h index 880bba7..5aa22b5 100644 --- a/drivers/pinctrl/freescale/pinctrl-imx.h +++ b/drivers/pinctrl/freescale/pinctrl-imx.h @@ -16,9 +16,12 @@ #define __DRIVERS_PINCTRL_IMX_H #include +#include struct platform_device; +extern struct pinmux_ops imx_pmx_ops; + /** * struct imx_pin - describes a single i.MX pin * @pin: the pin_id of this pin @@ -76,6 +79,23 @@ struct imx_pinctrl_soc_info { unsigned int num_decodes; void (*fixup)(unsigned long *configs, unsigned int num_configs, u32 *raw_config); + + int (*gpio_set_direction)(struct pinctrl_dev *pctldev, + struct pinctrl_gpio_range *range, + unsigned offset, + bool input); +}; + +/** + * @dev: a pointer back to containing device + * @base: the offset to the controller in virtual memory + */ +struct imx_pinctrl { + struct device *dev; + struct pinctrl_dev *pctl; + void __iomem *base; + void __iomem *input_sel_base; + struct imx_pinctrl_soc_info *info; }; #define IMX_CFG_PARAMS_DECODE(p, m, o) \ diff --git a/drivers/pinctrl/freescale/pinctrl-vf610.c b/drivers/pinctrl/freescale/pinctrl-vf610.c index 3bd8556..ac18bb6 100644 --- a/drivers/pinctrl/freescale/pinctrl-vf610.c +++ b/drivers/pinctrl/freescale/pinctrl-vf610.c @@ -295,10 +295,35 @@ static const struct pinctrl_pin_desc vf610_pinctrl_pads[] = { IMX_PINCTRL_PIN(VF610_PAD_PTA7), }; +static int vf610_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, + struct pinctrl_gpio_range *range, + unsigned offset, bool input) +{ + struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev); + struct imx_pinctrl_soc_info *info = ipctl->info; + const struct imx_pin_reg *pin_reg; + u32 reg; + + pin_reg = &info->pin_regs[offset]; + if (pin_reg->mux_reg == -1) + return -EINVAL; + + /* IBE always enabled allows us to read the value "on the wire" */ + reg = readl(ipctl->base + pin_reg->mux_reg); + if (input) + reg &= ~0x2; + else + reg |= 0x2; + writel(reg, ipctl->base + pin_reg->mux_reg); + + return 0; +} + static struct imx_pinctrl_soc_info vf610_pinctrl_info = { .pins = vf610_pinctrl_pads, .npins = ARRAY_SIZE(vf610_pinctrl_pads), .flags = SHARE_MUX_CONF_REG | ZERO_OFFSET_VALID, + .gpio_set_direction = vf610_pmx_gpio_set_direction, .mux_mask = 0x700000, .mux_shift = 20, };