From patchwork Fri Oct 7 15:11:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bhuvanchandra DV X-Patchwork-Id: 9366223 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 AFF8560752 for ; Fri, 7 Oct 2016 15:16:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A058E296A8 for ; Fri, 7 Oct 2016 15:16:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 948E8296B1; Fri, 7 Oct 2016 15:16:20 +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=-4.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id DB353296A8 for ; Fri, 7 Oct 2016 15:16:19 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1bsWrL-0000cS-N1; Fri, 07 Oct 2016 15:14:51 +0000 Received: from mail-am5eur03on0716.outbound.protection.outlook.com ([2a01:111:f400:fe08::716] helo=EUR03-AM5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1bsWr4-0000SY-O5 for linux-arm-kernel@lists.infradead.org; Fri, 07 Oct 2016 15:14:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=toradex.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=m/gIbWDhR4o+fbpl2L9heJeVQHk/sog/8dMb+hQHgbI=; b=M8v24coIJWdBiousHornPy7ACP66LprbVIlOIcorLqSdjmfGr8N0xMqVPoCZLCDGghASvxzVhnaggWCv1wMArGoSW1vFmz0xXjSJtFATUWKx0DYRMIXiF7RxOAXBPeioK++dXG7QcEIO2FB3RTI0Nzij6rVknqjC2xRhKqaIdzA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=bhuvanchandra.dv@toradex.com; Received: from tdx-in-nb-0014.toradex.int (115.115.243.34) by VI1PR05MB1407.eurprd05.prod.outlook.com (10.162.125.156) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.649.16; Fri, 7 Oct 2016 15:14:11 +0000 From: Bhuvanchandra DV To: , Subject: [PATCH v3 2/6] pwm: core: make the PWM_POLARITY flag in DTB optional Date: Fri, 7 Oct 2016 20:41:25 +0530 Message-ID: <20161007151129.6043-3-bhuvanchandra.dv@toradex.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20161007151129.6043-1-bhuvanchandra.dv@toradex.com> References: <20161007151129.6043-1-bhuvanchandra.dv@toradex.com> MIME-Version: 1.0 X-Originating-IP: [115.115.243.34] X-ClientProxiedBy: BM1PR01CA0062.INDPRD01.PROD.OUTLOOK.COM (10.163.199.34) To VI1PR05MB1407.eurprd05.prod.outlook.com (10.162.125.156) X-MS-Office365-Filtering-Correlation-Id: fa38e715-0d09-45fa-35e6-08d3eec498e6 X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1407; 2:lBVeix9nzVP8vzonZyDlquDvIXFuUhJsmqXwGFdClwquBHq/nahB9ELPPS2qz1tgVVf+TY87VV6kl/eexJNOv4YhvtAZwd3RYRojxco+Rud2vLDz2CLKjLIBcrjWRDRWHhaRLdX9/miw53/JoIMXSlax0mIxjw5K7Ge9m3cVsBaidVHFisYyZggyVe+Je5asGfrmt3biewHNm56SSNxGQA==; 3:IS5h8a+0iGoN2ua84tYpaJwDPQXFtT5iROorpXYPlrwvyFh5lBweVbWk/XJ+lEuEUUVbfKAU8io29ORz5pEVTeTD9QKoJfl4b3WqUNCgvIggU6+M1pSRXoBi/uqpYoW9XCERBarcls49j/m62Pk3hg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR05MB1407; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1407; 25:z9eUnS24Ug5dG7wrfm1kWm7j8S/TIOd26doH++XgE6BnOZ3BGN5r6scAzDM6HcSm+s8QjnCvbEloFAuzfms1G0F17s1OeluE06UcMZMhCZtd5nfbet34xXJEjAWM659QkeuZZKej69Zzy8a/jkV5V43sEQPf/QW9Ef1fjaxlED2ZefcdVAvG3P5dIuEl2QlX7ZXVMZMkBgucMBcbXpSB5TXtNiKJp8cBywbU7dSaRMbmMxFiK+rBqaZeghFhAch3fVGcoiWU7XC+tFprStd7uohtGaznXM3ah5HaTwL2uESq21P3kb2drPDQsEphUgVgTjjPIJoJxIUdpRQDflW/uDX7RPcLpXO2PZxUFpDrifMpHTWUoZptvuVa6wnH72grznrJ0VyyPMDfb27epk4U7JyjWviimef/xXtjoP9fQFISm4w3R2+X4AwhTm8ulELMCRzEMzPhC0EtNw2wVSuTnHMuIf9V0VrByPft/Y0b8W0mvAlXWgveWQFO7m9clTD+4P8IMqF6G1kXAPAwdTydde3UOlA/Q7xHh+bP2slq/7LslnRL6hE7Z+BM21fGZ+JwI0JHT7/IlZVvIdWzpPSAs3VKaRyzwPXakgtnwK1D1chH4cDM9CkhXp7buE6skv2dMV2o4Mb42jDzTQWLky0xtvebOWjVcCvqKRZu5J1FtLN7HpTPrDkgV3K2TJKJJJ0W+gzYUg8R7XUzQDzr/BHM6841XjG1KLNOuQsB1SftBlQ= X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1407; 31:O3JfrlETkzJdLFr3cgpqkzLFu179naPuPiOhU9jQq7DtncEhzMRa76SseosZhj/X/HEFemrth89Xqs/H5HQLBBcMg/2m4kZR2q03qD+sXWsurgG8xd3EOJyVIc6eqrLiipMe7ZhRRhGEq1Fqb9IkJrxGs99HaZWalZiKE21iDRG5q0At6rg4boxcOvYjQ5wxwy/30ZM/eA8RFzPrElBnx4OAJC3nfrs32NemDkFqXEfn7c6sEFaJP16dXTuFSBQnJ8wpGkielsbuQ6hUY+dDOw==; 20:7RO+Ujrrsmg5omRofPhy53kINoKw64koHUKY5v4ags5N91EvxDekX3KsCznv+dxP1fno9kP5EczIR9oU/rNEjv88JDLoTRIKmB570gPb9giHV9w/fsOhHFyVehfeCjIWcfnPSftphL+VEc8FuigBQ9NpJlr2MiPpTyNiImh+XWsuxwVCQBtCgy5cI7LPTFggxzZ0iApkf9WKlYty4ho0Y52nVyeRY7X0/4Rs9jukjzpISD0fcfAkCVL5h6Hi4u5Zc9ULQwVQNZqrMhVMfKVaqrYYn3QevfnlOYevHHBwW0rlhbAhuC2+5cZU+dNyUETKk1FK2NXwlkHK4KatQOdaWA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(7411616537696); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001); SRVR:VI1PR05MB1407; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB1407; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1407; 4:lOwtLIZJ4FMyN0+dGguDsKSeCgg5MCvw1vV/ss0VUVGOF51tySAKhtaDHpSD9Xg2ASyTw0KOp59YpntXKzVG86R94Jgc36Gnbo/NaCYLrmjmXDRQAkvjrTNOAc+bhMxULvUXO51AItujBa2QSwQLV4uU8EFXvEIHbx4YXdI8sOXLxROz7hmwKfq1/NsxXw6otq97K016OhQyNvUTyUonUJYa63M866nG79HP3mVk6CN7KofoE7UGTw9OdZ8cB5BskcoZUY/93XP1zyRfy8VfgOImVYB2f0gxIC16dHFmVcwc/P5DhtvTXBNsLKBRDjYZt4GS+Ac6/iWeSDPopAlfDIV5Gef6+qEAGqvB1ultG0H5+/ukKrCwuCy5cgR2gUJdy1fh145NuM6+wFgnCcwnSodPp41hMZkY6Hkl4jvsajU3ZBnMuma+DukMFRezQhQ+ X-Forefront-PRVS: 0088C92887 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(4001430100002)(5001770100001)(97736004)(77096005)(68736007)(107886002)(48376002)(86362001)(189998001)(4326007)(81166006)(81156014)(8676002)(36756003)(92566002)(2906002)(6116002)(50226002)(5003940100001)(50466002)(69596002)(586003)(1076002)(3846002)(33646002)(76176999)(50986999)(101416001)(6666003)(2950100002)(47776003)(42186005)(66066001)(7416002)(8666005)(7736002)(305945005)(5660300001)(19580405001)(19580395003)(7846002)(53416004)(105586002)(229853001)(106356001)(7059030); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR05MB1407; H:tdx-in-nb-0014.toradex.int; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: toradex.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR05MB1407; 23:7LD88nrsae2KOhHIJfMtZ2+IZqjIKAi7fzz4dq7k0?= =?us-ascii?Q?rxNSJvtiQAsIB9SjhvaKKI2CmhXpPfYn/P+No664ZfNUbCwXCIjzcGEr+E+1?= =?us-ascii?Q?ub/7NzeJcsytI/gvceTNZyrfu1SXGh5hGGTJzKDu4grDaaUwmpShdaf0J8tu?= =?us-ascii?Q?b4Lcmyr7PuJRcKzeX5GOasMtbsTG0H8xezkIwTYwUdYX2VA2sj6Gy1OVoKll?= =?us-ascii?Q?oCncp5bbAVOk9PR9jcZfLlp4I7P3u5iZT8j+3kdK8EMTyXpPYn/FoJS01TrK?= =?us-ascii?Q?MNYRyaGD652MfSLwewQi2CNcr4aqGImeosmM9mREvswd/Dsvi+goK/Rwrl3t?= =?us-ascii?Q?AYHov+bkJRXQy2x7Tlmb0qelOhpHWLDHwfsDkb8taH0LlRomrG2b/Y/3kxW0?= =?us-ascii?Q?rOS+6HVASoMQF5qGOlZNqUT5uX6xOZD6cOMmPmQZLYC+j148twjsGYSHBAUl?= =?us-ascii?Q?dDEnUKRM9/UBeH+loOXJLkR+lc15QKLnPJBDr3sKN6Gd2NP31j0OVaR3vPS8?= =?us-ascii?Q?KwUvDyGIEjbOKNZMb9T7onuCPkOfd9snMWmZqLwfbxEHekonC9p1X4AZtbtg?= =?us-ascii?Q?qp392GQEnI1P9LmWx9l3BBe3I3SjTluDwrQpnhiC4kUTvxtrcUTJp5+ZPHWJ?= =?us-ascii?Q?cGvIgvlOel3B9bkehKnLhpP6fMPSV2AU2zWN+1p1mr3IOYrGj1rXjc7nLdqu?= =?us-ascii?Q?S7nc/tgKW/ItqB66b55bNkuEXYKY5MsdJEZ0zITEiNbaA7vq+4hJ8gTrrz67?= =?us-ascii?Q?SFFhdzTvX8hmLv+PhL25Re1EJ8jmDED9qaw02nHa6cXrwgBCQV2lKIZaxRXJ?= =?us-ascii?Q?FF8YZNgUznw6arWaesi1DvdkUAAzPaV8vpKnh2wAELV/B9p0Q3DIEaF07LqJ?= =?us-ascii?Q?nc2EGrIbbUx6LduTOerRTE2fFvGtMIkKUTnlqX14Lo1NzLVh1r4AS8ahyV61?= =?us-ascii?Q?l+KEJws2UJye5EzFZ5aEkVkCoTuSzEWxKvjvasXUyurMI4b/V4+VgojCgTs2?= =?us-ascii?Q?+I1iBaVfjCcxmZrquB05LldAyF0sSG8IjSIZe0E78HETj5cbBp4d9ObBrVFb?= =?us-ascii?Q?/T4FR2/LZg1Cr00qM2B8px/gfWT4oXMJLZct7OhQiBzoHJp8FkuPzzm1M9MN?= =?us-ascii?Q?HSHusMZce7Lquodszc9Wy2Si4aNCXAyOd1/QCY4+7DeZuePOLxomxdCpCNd2?= =?us-ascii?Q?xSrScqOYvw6TZozuzUYE5l2hHGyR0u7+XU+L3ck/3Xy/De7NHrVjeBQFfAnb?= =?us-ascii?Q?GjhmXtj1RR6+oAaF3jESOuHOCLxOlPqmcQDw6c1?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB1407; 6:m9nCzvg920iN9eTyBc+H+ip0oTrwxYxpJe4YrBj5J1QiFZK9HrBrvXVCFlE6wIWi9YhJEOHGiYGIplmZ1AFfWifUfHG66yfazF3TEr+srzioY4cUX6b/Jy+ZoedkuSbvRWMDML9FaRPBsCwRDMT/HJpENwBCwlZzGsp8CzUraqCtkqBjIjs/m2sL5tjiRxKvrbCGPYt7tHIvuDeRP2v+tGTulo/fIB8aBK0PCPLs3z3MIa9JvuqGTy3m7lpiV2WYUz6UHOM6ieYaMZTZoDd2jWkx86PHuJtxrGFgsGU6yib1BmEAqVbFk6GvSIFqiLBB; 5:ekW/kfAPU4vfDsNMMBU9ZzyT5Ey/IYh0CV3fZPvVVkSC1Z64Hl15JHFjrriv3FReUbW9q1WcTECnBVoVyi6S2Lz3fNK4ioWwCLNtULF/VF7VNeNtaIQx8m8x1GNHHjuLAtLiFKDixeYjjTTbXSCKiuWA/DPgN4I6ztzIbHO10G0=; 24:vrD3kdv9b9eAa0CUUJrPOwA7ih34I4i/bBsn7SZyETA+F0fYAam9N9fhscaSNZPnd8ydkVOGhIvDY7q196s27+a3XkLVszu37fNCZ6BtsEk=; 7:hui9Gy3vRR8CIirDe60m2LafcK4DjzbD32uX3BZ60/4w76A9e7G1Zw65Lbi7b31QcOtrNT0bdwTgUh4iQZOfZTklz7ybWM2DBRyXbBtHNm4CFcJCkSQot2ZxL954c9xuh6gtMk87CwUxjTQ2bqzYsuapz28wW5iV5gsg60UAlik/Ui4c3a1r6hJDC8KQ+JKyG1qhOrXkX+fzyPzddX0bWIwxEQXq4JiZNt2su6vm1UiuAo1IUyM/Hz9UsGBmROZ96CMPA16J3j0v88J6Pih/vWj07/OzzrBT4FdZTboMePF4IbCocgSMKBQbqW42IMcq2mDuB8K7cqHDPXQGsG0Ypw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: toradex.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2016 15:14:11.2928 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB1407 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161007_081435_069985_53B55547 X-CRM114-Status: GOOD ( 11.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, linux-pwm@vger.kernel.org, l.majewski@samsung.com, Bhuvanchandra DV , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, stefan@agner.ch, robh+dt@kernel.org, kernel@pengutronix.de, fabio.estevam@nxp.com, linux-arm-kernel@lists.infradead.org, Lothar Wassmann 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 From: Lothar Wassmann Change the pwm chip driver registration, so that a chip driver that supports polarity inversion can still be used with DTBs that don't provide the 'PWM_POLARITY' flag. This is done to provide polarity inversion support for the pwm-imx driver without having to modify all existing DTS files. Signed-off-by: Lothar Wassmann Signed-off-by: Lukasz Majewski Signed-off-by: Bhuvanchandra DV Suggested-by: Sascha Hauer --- drivers/pwm/core.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 195373e..85cdda6 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -137,9 +137,14 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args) { struct pwm_device *pwm; + /* check, whether the driver supports a third cell for flags */ if (pc->of_pwm_n_cells < 3) return ERR_PTR(-EINVAL); + /* flags in the third cell are optional */ + if (args->args_count < 2) + return ERR_PTR(-EINVAL); + if (args->args[0] >= pc->npwm) return ERR_PTR(-EINVAL); @@ -148,11 +153,10 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args) return pwm; pwm->args.period = args->args[1]; + pwm->args.polarity = PWM_POLARITY_NORMAL; - if (args->args[2] & PWM_POLARITY_INVERTED) + if (args->args_count > 2 && args->args[2] & PWM_POLARITY_INVERTED) pwm->args.polarity = PWM_POLARITY_INVERSED; - else - pwm->args.polarity = PWM_POLARITY_NORMAL; return pwm; } @@ -163,9 +167,14 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args) { struct pwm_device *pwm; + /* sanity check driver support */ if (pc->of_pwm_n_cells < 2) return ERR_PTR(-EINVAL); + /* all cells are required */ + if (args->args_count != pc->of_pwm_n_cells) + return ERR_PTR(-EINVAL); + if (args->args[0] >= pc->npwm) return ERR_PTR(-EINVAL); @@ -672,13 +681,6 @@ struct pwm_device *of_pwm_get(struct device_node *np, const char *con_id) goto put; } - if (args.args_count != pc->of_pwm_n_cells) { - pr_debug("%s: wrong #pwm-cells for %s\n", np->full_name, - args.np->full_name); - pwm = ERR_PTR(-EINVAL); - goto put; - } - pwm = pc->of_xlate(pc, &args); if (IS_ERR(pwm)) goto put;