From: Stefano Babic <sbabic@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] mx35 timer: Switch to 32-kHz source
Date: Fri, 17 Aug 2012 21:51:07 +0200 [thread overview]
Message-ID: <502EA0AB.1060601@denx.de> (raw)
In-Reply-To: <662576707.2410929.1344973995206.JavaMail.root@advansee.com>
On 14/08/2012 21:53, Beno?t Th?baudeau wrote:
> Switch the mx35 timer driver to the 32-kHz clock source to avoid calling
> mxc_get_clock() again and again, and to be consistent with the timer drivers of
> other i.MX SoCs.
>
> Signed-off-by: Beno?t Th?baudeau <benoit.thebaudeau@advansee.com>
> Cc: Stefano Babic <sbabic@denx.de>
> ---
Hi Beno?t,
just some minor points:
> .../arch/arm/cpu/arm1136/mx35/timer.c | 43 ++++++++++++--------
> .../include/configs/flea3.h | 1 +
> .../include/configs/mx35pdk.h | 1 +
> 3 files changed, 27 insertions(+), 18 deletions(-)
>
> diff --git u-boot-4d3c95f.orig/arch/arm/cpu/arm1136/mx35/timer.c u-boot-4d3c95f/arch/arm/cpu/arm1136/mx35/timer.c
> index 04937a1..25057af 100644
> --- u-boot-4d3c95f.orig/arch/arm/cpu/arm1136/mx35/timer.c
> +++ u-boot-4d3c95f/arch/arm/cpu/arm1136/mx35/timer.c
> @@ -27,7 +27,7 @@
> #include <asm/io.h>
> #include <div64.h>
> #include <asm/arch/imx-regs.h>
> -#include <asm/arch/clock.h>
> +#include <asm/arch/crm_regs.h>
>
> DECLARE_GLOBAL_DATA_PTR;
>
> @@ -37,43 +37,50 @@ DECLARE_GLOBAL_DATA_PTR;
> /* General purpose timers bitfields */
> #define GPTCR_SWR (1<<15) /* Software reset */
> #define GPTCR_FRR (1<<9) /* Freerun / restart */
> -#define GPTCR_CLKSOURCE_32 (0x100<<6) /* Clock source */
> -#define GPTCR_CLKSOURCE_IPG (0x001<<6) /* Clock source */
> +#define GPTCR_CLKSOURCE_32 (4<<6) /* Clock source */
> #define GPTCR_TEN (1) /* Timer enable */
>
> -#define TIMER_FREQ_HZ mxc_get_clock(MXC_IPG_CLK)
> -
> +/*
> + * "time" is measured in 1 / CONFIG_SYS_HZ seconds,
> + * "tick" is internal timer period
> + */
> +/* ~0.4% error - measured with stop-watch on 100s boot-delay */
> static inline unsigned long long tick_to_time(unsigned long long tick)
> {
> tick *= CONFIG_SYS_HZ;
> - do_div(tick, TIMER_FREQ_HZ);
> + do_div(tick, CONFIG_MX35_CLK32);
>
> return tick;
> }
>
> -static inline unsigned long long us_to_tick(unsigned long long usec)
> +static inline unsigned long long us_to_tick(unsigned long long us)
> {
> - usec *= TIMER_FREQ_HZ;
> - do_div(usec, 1000000);
> + us = us * CONFIG_MX35_CLK32 + 999999;
> + do_div(us, 1000000);
>
> - return usec;
> + return us;
> }
>
> +/* nothing really to do with interrupts, just starts up a counter. */
> +/* The 32KHz 32-bit timer overruns in 134217 seconds */
Wrong multiline comment. A multiline comment must be in the form:
/*
* blah blah blah
* blah blah blah
*/
> int timer_init(void)
> {
> int i;
> struct gpt_regs *gpt = (struct gpt_regs *)GPT1_BASE_ADDR;
> + struct ccm_regs *ccm = (struct ccm_regs *)CCM_BASE_ADDR;
>
> /* setup GP Timer 1 */
> writel(GPTCR_SWR, &gpt->ctrl);
> - for (i = 0; i < 100; i++)
> - writel(0, &gpt->ctrl); /* We have no udelay by now */
>
> - writel(0, &gpt->pre);
> - /* Freerun Mode, PERCLK1 input */
> - writel(readl(&gpt->ctrl) |
> - GPTCR_CLKSOURCE_IPG | GPTCR_TEN,
> - &gpt->ctrl);
> + writel(readl(&ccm->cgr1) | 3 << MXC_CCM_CGR1_GPT_OFFSET, &ccm->cgr1);
> +
> + for (i = 0; i < 100; i++)
> + writel(0, &gpt->ctrl); /* We have no udelay by now */
> + writel(0, &gpt->pre); /* prescaler = 1 */
> + /* Freerun Mode, 32KHz input */
> + writel(readl(&gpt->ctrl) | GPTCR_CLKSOURCE_32 | GPTCR_FRR,
> + &gpt->ctrl);
> + writel(readl(&gpt->ctrl) | GPTCR_TEN, &gpt->ctrl);
>
> return 0;
> }
> @@ -132,5 +139,5 @@ void __udelay(unsigned long usec)
> */
> ulong get_tbclk(void)
> {
> - return TIMER_FREQ_HZ;
> + return CONFIG_MX35_CLK32;
> }
> diff --git u-boot-4d3c95f.orig/include/configs/flea3.h u-boot-4d3c95f/include/configs/flea3.h
> index 46939d4..26f1b3e 100644
> --- u-boot-4d3c95f.orig/include/configs/flea3.h
> +++ u-boot-4d3c95f/include/configs/flea3.h
> @@ -32,6 +32,7 @@
> #define CONFIG_ARM1136 /* This is an arm1136 CPU core */
> #define CONFIG_MX35
> #define CONFIG_MX35_HCLK_FREQ 24000000
> +#define CONFIG_MX35_CLK32 32768
I know the example in the tx25, but on all MX35 they share the same
value and I doubt we will have a different one. And if we will had, it
will be the exception that should be handled.
So set it inside timer.c and do not add it to the board configuartion files.
Best regards,
Stefano Babic
--
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
next prev parent reply other threads:[~2012-08-17 19:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-14 19:53 [U-Boot] [PATCH] mx35 timer: Switch to 32-kHz source Benoît Thébaudeau
2012-08-17 19:51 ` Stefano Babic [this message]
2012-08-21 21:07 ` [U-Boot] [PATCH v2 1/2] mx35: Define default SoC input clock frequencies Benoît Thébaudeau
2012-08-21 21:07 ` [U-Boot] [PATCH v2 2/2] mx35 timer: Switch to 32-kHz source Benoît Thébaudeau
2012-08-22 7:32 ` Stefano Babic
2012-08-22 7:32 ` [U-Boot] [PATCH v2 1/2] mx35: Define default SoC input clock frequencies Stefano Babic
2012-08-27 6:34 ` Stefano Babic
2012-08-27 13:26 ` Benoît Thébaudeau
2012-08-27 14:39 ` Stefano Babic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=502EA0AB.1060601@denx.de \
--to=sbabic@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).