From patchwork Mon Dec 19 03:23:28 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Chen X-Patchwork-Id: 5857 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 1BF1823E33 for ; Mon, 19 Dec 2011 03:23:35 +0000 (UTC) Received: from mail-ey0-f180.google.com (mail-ey0-f180.google.com [209.85.215.180]) by fiordland.canonical.com (Postfix) with ESMTP id 1157EA183A3 for ; Mon, 19 Dec 2011 03:23:35 +0000 (UTC) Received: by eaac11 with SMTP id c11so1459180eaa.11 for ; Sun, 18 Dec 2011 19:23:35 -0800 (PST) Received: by 10.204.136.194 with SMTP id s2mr923393bkt.96.1324265014687; Sun, 18 Dec 2011 19:23:34 -0800 (PST) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.204.40.4 with SMTP id i4cs114048bke; Sun, 18 Dec 2011 19:23:34 -0800 (PST) Received: by 10.180.3.37 with SMTP id 5mr23862070wiz.43.1324265013377; Sun, 18 Dec 2011 19:23:33 -0800 (PST) Received: from DB3EHSOBE003.bigfish.com (db3ehsobe003.messaging.microsoft.com. [213.199.154.141]) by mx.google.com with ESMTPS id v60si8087439wec.34.2011.12.18.19.23.32 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 18 Dec 2011 19:23:33 -0800 (PST) Received-SPF: neutral (google.com: 213.199.154.141 is neither permitted nor denied by best guess record for domain of jason.chen@linaro.org) client-ip=213.199.154.141; Authentication-Results: mx.google.com; spf=neutral (google.com: 213.199.154.141 is neither permitted nor denied by best guess record for domain of jason.chen@linaro.org) smtp.mail=jason.chen@linaro.org Received: from mail105-db3-R.bigfish.com (10.3.81.251) by DB3EHSOBE003.bigfish.com (10.3.84.23) with Microsoft SMTP Server id 14.1.225.23; Mon, 19 Dec 2011 03:23:27 +0000 Received: from mail105-db3 (localhost [127.0.0.1]) by mail105-db3-R.bigfish.com (Postfix) with ESMTP id 0B29B5802D5; Mon, 19 Dec 2011 03:23:47 +0000 (UTC) X-SpamScore: 0 X-BigFish: VS0(zzzz1202hzz8275dhz2dh87h2a8h668h839h) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-FB-DOMAIN-IP-MATCH: fail Received: from mail105-db3 (localhost.localdomain [127.0.0.1]) by mail105-db3 (MessageSwitch) id 1324265026876396_2753; Mon, 19 Dec 2011 03:23:46 +0000 (UTC) Received: from DB3EHSMHS012.bigfish.com (unknown [10.3.81.254]) by mail105-db3.bigfish.com (Postfix) with ESMTP id D187B120046; Mon, 19 Dec 2011 03:23:46 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by DB3EHSMHS012.bigfish.com (10.3.87.112) with Microsoft SMTP Server (TLS) id 14.1.225.23; Mon, 19 Dec 2011 03:23:27 +0000 Received: from az33smr02.freescale.net (10.64.34.200) by 039-SN1MMR1-003.039d.mgd.msft.net (10.84.1.16) with Microsoft SMTP Server id 14.1.355.3; Sun, 18 Dec 2011 21:23:31 -0600 Received: from weitway.ap.freescale.net (weitway.ap.freescale.net [10.192.242.173]) by az33smr02.freescale.net (8.13.1/8.13.0) with ESMTP id pBJ3NSJG008066; Sun, 18 Dec 2011 21:23:29 -0600 (CST) From: Jason Chen To: CC: , Subject: [PATCH] ARM:imx:fix pwm period value Date: Mon, 19 Dec 2011 11:23:28 +0800 Message-ID: <1324265008-22866-1-git-send-email-jason.chen@linaro.org> X-Mailer: git-send-email 1.7.4.1 MIME-Version: 1.0 X-OriginatorOrg: sigmatel.com According to imx pwm RM, the real period value should be PERIOD value in PWMPR plus 2. PWMO (Hz) = PCLK(Hz) / (period +2) Signed-off-by: Jason Chen --- arch/arm/plat-mxc/pwm.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-mxc/pwm.c b/arch/arm/plat-mxc/pwm.c index 6b78490..0b112d2 100644 --- a/arch/arm/plat-mxc/pwm.c +++ b/arch/arm/plat-mxc/pwm.c @@ -78,6 +78,15 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns) do_div(c, period_ns); duty_cycles = c; + /* + * according to imx pwm RM, the real period value should be + * PERIOD value in PWMPR plus 2. + */ + if (period_cycles > 2) + period_cycles -= 2; + else + period_cycles = 0; + writel(duty_cycles, pwm->mmio_base + MX3_PWMSAR); writel(period_cycles, pwm->mmio_base + MX3_PWMPR);