From patchwork Thu Feb 28 10:59:17 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akshay Saraswat X-Patchwork-Id: 223868 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 BB2372C0299 for ; Thu, 28 Feb 2013 21:39:35 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2CD5E4A030; Thu, 28 Feb 2013 11:39:27 +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 cs5K+EnpAZIc; Thu, 28 Feb 2013 11:39:26 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B7CB24A032; Thu, 28 Feb 2013 11:39:08 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5D85D4A01E for ; Thu, 28 Feb 2013 11:39:04 +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 ktAlOVXQxMoV for ; Thu, 28 Feb 2013 11:39:03 +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 mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by theia.denx.de (Postfix) with ESMTP id 095AA4A023 for ; Thu, 28 Feb 2013 11:39:00 +0100 (CET) Received: from epcpsbgr3.samsung.com (u143.gpu120.samsung.co.kr [203.254.230.143]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MIX00IG9EVUNLI0@mailout2.samsung.com> for u-boot@lists.denx.de; Thu, 28 Feb 2013 19:38:58 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [172.20.52.123]) by epcpsbgr3.samsung.com (EPCPMTA) with SMTP id DD.6E.18793.1C33F215; Thu, 28 Feb 2013 19:38:58 +0900 (KST) X-AuditID: cbfee68f-b7f6a6d000004969-b2-512f33c1bf11 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id DD.A8.03918.1C33F215; Thu, 28 Feb 2013 19:38:57 +0900 (KST) Received: from chrome-ubuntu.sisodomain.com ([107.108.73.106]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MIX001ILEWPCT50@mmp1.samsung.com> for u-boot@lists.denx.de; Thu, 28 Feb 2013 19:38:57 +0900 (KST) From: Akshay Saraswat To: u-boot@lists.denx.de Date: Thu, 28 Feb 2013 05:59:17 -0500 Message-id: <1362049164-10297-3-git-send-email-akshay.s@samsung.com> X-Mailer: git-send-email 1.8.0 In-reply-to: <1362049164-10297-1-git-send-email-akshay.s@samsung.com> References: <1362049164-10297-1-git-send-email-akshay.s@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsWyRsSkWveQsX6gweenTBZv93ayOzB6nL2z gzGAMYrLJiU1J7MstUjfLoEr49qk/+wFt3gqZu3qY2tgPMTVxcjJISFgInGgYSkrhC0mceHe erYuRi4OIYGljBKPz19kgSn6vHIeM0RiEaPE/1WHWSCcZUwSp1pug7WzCehIbF/ynR3EFhGQ kPjVf5URxGYWcJTYd+QbE4gtLGApsf73IaBmDg4WAVWJTfssQcK8Ai4S3R1boK6Qk/iw5xE7 SAmngKvEw24jkLAQUMmln19YQdZKCFxnk2hb2QJWzyIgIPFtMsRICQFZiU0HmCHGSEocXHGD ZQKj8AJGhlWMoqkFyQXFSelFxnrFibnFpXnpesn5uZsYgSF4+t+z/h2Mdw9YH2JMBho3kVlK NDkfGMJ5JfGGxibmpsamZkaWlpampAkrifPKX5IJFBJITyxJzU5NLUgtii8qzUktPsTIxMEp 1cBoxR3LeGKKdrhF7UKZ3S2FZfOZ7gv1n9CZZn5w0creYptgwXib2TKZ9UZLber3Fk9ZIGkr PLXpstWWFv/gdceNLvzOuceW5+akmGk27daSivCLswulF+zI59LsnCl0f4nL49VR/xzW59/O bbLr+/9QrnX5G6+nO6z3n+AUybaYzSS04/XGm91KLMUZiYZazEXFiQDlHsABVwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsVy+t9jAd2DxvqBBhceGVm83dvJ7sDocfbO DsYAxqgGRpuM1MSU1CKF1Lzk/JTMvHRbJe/geOd4UzMDQ11DSwtzJYW8xNxUWyUXnwBdt8wc oLFKCmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMIaxoxrk/6zF9ziqZi1q4+t gfEQVxcjJ4eEgInE55XzmCFsMYkL99azdTFycQgJLGKU+L/qMAuEs4xJ4lTLbVaQKjYBHYnt S76zg9giAhISv/qvMoLYzAKOEvuOfGMCsYUFLCXW/z4E1MzBwSKgKrFpnyVImFfARaK7Ywsr xDI5iQ97HrGDlHAKuEo87DYCCQsBlVz6+YV1AiPvAkaGVYyiqQXJBcVJ6bmGesWJucWleel6 yfm5mxjBAf5MagfjygaLQ4wCHIxKPLwdJnqBQqyJZcWVuYcYJTiYlUR4Xfj1A4V4UxIrq1KL 8uOLSnNSiw8xJgPdNJFZSjQ5Hxh9eSXxhsYm5qbGppYmFiZmlqQJK4nzMp56EiAkkJ5Ykpqd mlqQWgSzhYmDU6qBsW1HuGBRSskc1ZrLqbGe+r/Kd7z5suNOxptff95lyeZzS5SwznpqW3r7 qfjrxQze8kUT3e55mxxnq5p+xnbL68rWbs8ZmyumujVJXujUi2K5KbLntYyBQkH7u9VHrjqF GK+8EPhz860NS1dHKzlvfeTiyL5rnc9hw8DWY9HzFq8tzXUV9/R/rMRSnJFoqMVcVJwIAHal KuW0AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: prashanth.g@samsung.com Subject: [U-Boot] [PATCH 2/9 v2] Exynos: Add timer_get_us function 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 timer_get_us returns the time in microseconds since a certain reference point of history. However, it does not guarantee to return an accurate time after a long period; instead, it wraps around (that is, the reference point is reset to some other point of history) after some periods. The frequency of wrapping around is about an hour (or 2^32 microseconds). 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 Signed-off-by: Che-Liang Chiou Signed-off-by: Akshay Saraswat Acked-by: Simon Glass --- Changes since v1: - Added "Acked-by: Simon Glass". arch/arm/cpu/armv7/s5p-common/timer.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/arch/arm/cpu/armv7/s5p-common/timer.c b/arch/arm/cpu/armv7/s5p-common/timer.c index c48a297..de61405 100644 --- a/arch/arm/cpu/armv7/s5p-common/timer.c +++ b/arch/arm/cpu/armv7/s5p-common/timer.c @@ -90,6 +90,21 @@ unsigned long get_timer(unsigned long base) return gd->arch.timer_reset_value / 1000 - base; } +unsigned long timer_get_us(void) +{ + static unsigned long base_time_us; + + struct s5p_timer *const timer = + (struct s5p_timer *)samsung_get_base_timer(); + unsigned long now_downward_us = readl(&timer->tcnto4); + + if (!base_time_us) + base_time_us = now_downward_us; + + /* Note that this timer counts downward. */ + return base_time_us - now_downward_us; +} + /* delay x useconds */ void __udelay(unsigned long usec) {