From patchwork Thu Mar 28 14:32:18 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akshay Saraswat X-Patchwork-Id: 232041 X-Patchwork-Delegate: promsoft@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id C3A502C009C for ; Fri, 29 Mar 2013 01:13:30 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D3DF34A090; Thu, 28 Mar 2013 15:13:23 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id jrvwd3pB2akv; Thu, 28 Mar 2013 15:13:23 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2BB654A098; Thu, 28 Mar 2013 15:12:58 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 521A54A03C for ; Thu, 28 Mar 2013 15:12:50 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5je2XsySTvcY for ; Thu, 28 Mar 2013 15:12:49 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by theia.denx.de (Postfix) with ESMTP id 48FD64A02D for ; Thu, 28 Mar 2013 15:12:44 +0100 (CET) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MKD0011YJGS8GI0@mailout4.samsung.com> for u-boot@lists.denx.de; Thu, 28 Mar 2013 23:12:42 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.126]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 5C.C0.12250.ADF44515; Thu, 28 Mar 2013 23:12:42 +0900 (KST) X-AuditID: cbfee691-b7f5f6d000002fda-5c-51544fda7dca Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 22.35.17838.ADF44515; Thu, 28 Mar 2013 23:12:42 +0900 (KST) Received: from chrome-ubuntu.sisodomain.com ([107.108.73.106]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MKD00MY2JGUVB00@mmp2.samsung.com>; Thu, 28 Mar 2013 23:12:42 +0900 (KST) From: Akshay Saraswat To: u-boot@lists.denx.de, mk7.kang@samsung.com Date: Thu, 28 Mar 2013 10:32:18 -0400 Message-id: <1364481144-17495-5-git-send-email-akshay.s@samsung.com> X-Mailer: git-send-email 1.8.0 In-reply-to: <1364481144-17495-1-git-send-email-akshay.s@samsung.com> References: <1364481144-17495-1-git-send-email-akshay.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOLMWRmVeSWpSXmKPExsWyRsSkTveWf0igwcNzihYdR1oYLVYd3sBu MfXBOUaLb1u2MVq83dvJ7sDqMbvhIovHzll32T3O3tnB6NG3ZRVjAEsUl01Kak5mWWqRvl0C V8ahF9cZC06IVZx//5+tgfGzYBcjB4eEgInEin2yXYycQKaYxIV769m6GLk4hASWMkp8n/Oe FSJhIvH2xRImiMR0RolrU+4zQzi9TBLte06DVbEJ6EhsX/KdHcQWEdCTmDfpHRuIzSzgKNF1 5w8jiC0sECVx6NY6FhCbRUBVYvqXiWD1vAIuEr0bJrNBbJOT+LDnETvIdZwCrhJ/14iChIWA ShbvbwHbKyHQzS5xd/ZFZog5AhLfJh9igfhGVmLTAWaIMZISB1fcYJnAKLyAkWEVo2hqQXJB cVJ6kalecWJucWleul5yfu4mRmAgn/73bOIOxvsHrA8xJgONm8gsJZqcD4yEvJJ4Q2MzIwtT E1NjI3NLM9KElcR51VusA4UE0hNLUrNTUwtSi+KLSnNSiw8xMnFwSjUwbvgf0bc/iOPMw0c7 T1/51P6um6fNfJG46jKzzhP/F7Y1e8/9I+SmfcFLzchnxa/jQWVPZ19xERNqP5ZzcGf6fhZ/ Ee2MTMWDb3Rznuv6VGx5xLyqi/n9s2Pm5XHHlG8ZRk9lzTm8X9j00ZzLP86tmSmmIzffddG/ V2avPrx6fHimae8RxVdudUosxRmJhlrMRcWJAIQeEbh6AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKIsWRmVeSWpSXmKPExsVy+t9jQd1b/iGBBr+mSFh0HGlhtFh1eAO7 xdQH5xgtvm3Zxmjxdm8nuwOrx+yGiyweO2fdZfc4e2cHo0ffllWMASxRDYw2GamJKalFCql5 yfkpmXnptkrewfHO8aZmBoa6hpYW5koKeYm5qbZKLj4Bum6ZOUCblRTKEnNKgUIBicXFSvp2 mCaEhrjpWsA0Ruj6hgTB9RgZoIGENYwZh15cZyw4IVZx/v1/tgbGz4JdjJwcEgImEm9fLGGC sMUkLtxbz9bFyMUhJDCdUeLalPvMEE4vk0T7ntOsIFVsAjoS25d8ZwexRQT0JOZNescGYjML OEp03fnDCGILC0RJHLq1jgXEZhFQlZj+ZSJYPa+Ai0TvhslsENvkJD7seQQU5+DgFHCV+LtG FCQsBFSyeH8L8wRG3gWMDKsYRVMLkguKk9JzDfWKE3OLS/PS9ZLzczcxgiPlmdQOxpUNFocY BTgYlXh4KwSCA4VYE8uKK3MPMUpwMCuJ8E6WCQkU4k1JrKxKLcqPLyrNSS0+xJgMdNREZinR 5HxgFOeVxBsam5ibGptamliYmFmSJqwkznug1TpQSCA9sSQ1OzW1ILUIZgsTB6dUA6Pi8v/5 x9ZLzjWZLRDmuevA94Vlx9tqI2+437C28as9nTy9wNTtaGrichPhL7+MnHhFggUstpeIqp9d KCLfyGP4wqqFJfLhs7sn1XhiHltk9Ex99exYg2Dj0SzLB5zzZ1g/cpRrXrvuSYv5ygkT9k0o Mt8lGdxzIk66Y4Kn9tu5JpYZ7/8d/q/EUpyRaKjFXFScCAC6BAw82AIAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: prashanth.g@samsung.com Subject: [U-Boot] [PATCH 04/11 v3] Exynos: pwm: Fix two bugs in the exynos pwm configuration code X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de From: Gabe Black First, the "div" value was being used incorrectly to compute the frequency of the PWM timer. The value passed in is a constant which reflects the value that would be found in a configuration register, 0 to 4. That should correspond to a scaling factor of 1, 2, 4, 8, or 16, 1 << div, but div + 1 was being used instead. Second, the reset value of the timers were being calculated to give an overall frequency, thrown out, and set to a maximum value. This was done so that PWM 4 could be used as the system clock by counting down from a high value, but it was applied indiscriminantly. It should at most be applied only to PWM 4. This change also takes the opportunity to tidy up the pwm_init function. Test with command "sf probe 1:0; time sf read 40008000 0 1000". Try with different numbers of bytes and see that sane values are obtained Build and boot U-boot with this patch, backlight works properly. Signed-off-by: Gabe Black Signed-off-by: Akshay Saraswat Acked-by: Simon Glass --- Changes since v2: - None. Changes since v1: - Added "Acked-by: Simon Glass". arch/arm/cpu/armv7/s5p-common/pwm.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/arch/arm/cpu/armv7/s5p-common/pwm.c b/arch/arm/cpu/armv7/s5p-common/pwm.c index 3147f59..02156d1 100644 --- a/arch/arm/cpu/armv7/s5p-common/pwm.c +++ b/arch/arm/cpu/armv7/s5p-common/pwm.c @@ -143,7 +143,7 @@ int pwm_init(int pwm_id, int div, int invert) u32 val; const struct s5p_timer *pwm = (struct s5p_timer *)samsung_get_base_timer(); - unsigned long timer_rate_hz; + unsigned long ticks_per_period; unsigned int offset, prescaler; /* @@ -167,20 +167,24 @@ int pwm_init(int pwm_id, int div, int invert) val |= (div & 0xf) << MUX_DIV_SHIFT(pwm_id); writel(val, &pwm->tcfg1); - timer_rate_hz = get_pwm_clk() / ((prescaler + 1) * - (div + 1)); + if (pwm_id == 4) { + /* + * TODO(sjg): Use this as a countdown timer for now. We count + * down from the maximum value to 0, then reset. + */ + ticks_per_period = -1UL; + } else { + const unsigned long pwm_hz = 1000; + unsigned long timer_rate_hz = get_pwm_clk() / + ((prescaler + 1) * (1 << div)); - timer_rate_hz = timer_rate_hz / CONFIG_SYS_HZ; + ticks_per_period = timer_rate_hz / pwm_hz; + } /* set count value */ offset = pwm_id * 3; - /* - * TODO(sjg): Use this as a countdown timer for now. We count down - * from the maximum value to 0, then reset. - */ - timer_rate_hz = -1; - writel(timer_rate_hz, &pwm->tcntb0 + offset); + writel(ticks_per_period, &pwm->tcntb0 + offset); val = readl(&pwm->tcon) & ~(0xf << TCON_OFFSET(pwm_id)); if (invert && (pwm_id < 4))