From patchwork Tue May 17 10:35:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Boris Brezillon X-Patchwork-Id: 623003 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3r8DLJ0p85z9t4F for ; Tue, 17 May 2016 20:37:44 +1000 (AEST) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1b2cM5-0007IF-2f; Tue, 17 May 2016 10:36:01 +0000 Received: from down.free-electrons.com ([37.187.137.238] helo=mail.free-electrons.com) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1b2cM0-0007BJ-VF for linux-arm-kernel@lists.infradead.org; Tue, 17 May 2016 10:35:58 +0000 Received: by mail.free-electrons.com (Postfix, from userid 110) id 652A44A3; Tue, 17 May 2016 12:35:35 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from bbrezillon.home (LStLambert-657-1-97-87.w90-63.abo.wanadoo.fr [90.63.216.87]) by mail.free-electrons.com (Postfix) with ESMTPSA id 11CA6143; Tue, 17 May 2016 12:35:35 +0200 (CEST) From: Boris Brezillon To: Thierry Reding , linux-pwm@vger.kernel.org, =?UTF-8?q?Mika=20Penttil=C3=A4?= Subject: [PATCH] pwm: Fill pwm->args before calling pwm_request_from_chip() Date: Tue, 17 May 2016 12:35:32 +0200 Message-Id: <1463481333-23438-1-git-send-email-boris.brezillon@free-electrons.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160517_033557_189974_4DF6CF03 X-CRM114-Status: GOOD ( 13.28 ) X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [37.187.137.238 listed in list.dnswl.org] 1.0 FSL_HELO_HOME No description available. -0.0 SPF_PASS SPF: sender matches SPF record -1.4 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Boris Brezillon , linux-kernel@vger.kernel.org, Haojian Zhuang , linux-arm-kernel@lists.infradead.org, Robert Jarzmik , Daniel Mack Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org Commit e39c0df1be5a ("pwm: Introduce the pwm_args concept"), moved the period and polarity initialization steps into pwm_request_device() (called by pwm_request_from_chip()) based on the pwm->args information. Make sure we fill pwm->args fields before calling pwm_request_from_chip(). Signed-off-by: Boris Brezillon Reported-by: Mika Penttilä Fixes: e39c0df1be5a ("pwm: Introduce the pwm_args concept") --- Mika, Can you test after applying this patch and let me know if it fixes your bug. Thanks, Boris drivers/pwm/core.c | 12 ++++++------ drivers/pwm/pwm-pxa.c | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c index 427142d..3d2eeaa 100644 --- a/drivers/pwm/core.c +++ b/drivers/pwm/core.c @@ -143,10 +143,6 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args) if (args->args[0] >= pc->npwm) return ERR_PTR(-EINVAL); - pwm = pwm_request_from_chip(pc, args->args[0], NULL); - if (IS_ERR(pwm)) - return pwm; - pwm->args.period = args->args[1]; if (args->args[2] & PWM_POLARITY_INVERTED) @@ -154,6 +150,10 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const struct of_phandle_args *args) else pwm->args.polarity = PWM_POLARITY_NORMAL; + pwm = pwm_request_from_chip(pc, args->args[0], NULL); + if (IS_ERR(pwm)) + return pwm; + return pwm; } EXPORT_SYMBOL_GPL(of_pwm_xlate_with_flags); @@ -169,12 +169,12 @@ of_pwm_simple_xlate(struct pwm_chip *pc, const struct of_phandle_args *args) if (args->args[0] >= pc->npwm) return ERR_PTR(-EINVAL); + pwm->args.period = args->args[1]; + pwm = pwm_request_from_chip(pc, args->args[0], NULL); if (IS_ERR(pwm)) return pwm; - pwm->args.period = args->args[1]; - return pwm; } diff --git a/drivers/pwm/pwm-pxa.c b/drivers/pwm/pwm-pxa.c index 58b709f..c33bd42 100644 --- a/drivers/pwm/pwm-pxa.c +++ b/drivers/pwm/pwm-pxa.c @@ -156,12 +156,12 @@ pxa_pwm_of_xlate(struct pwm_chip *pc, const struct of_phandle_args *args) { struct pwm_device *pwm; + pwm->args.period = args->args[0]; + pwm = pwm_request_from_chip(pc, 0, NULL); if (IS_ERR(pwm)) return pwm; - pwm->args.period = args->args[0]; - return pwm; }