From 709827b5ea23f0df86a8056b73bf71fa93cc6681 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Sun, 21 Oct 2012 14:42:32 +0200 Subject: [PATCH] imx233: fix user timer The running count is only 16-bit wide, since the always tick setting derives from the crystal clock at 24MHz the user timer cannot be set lower than ~300Hz which is already too high. Switch to the 32KHz crystal source to fix this. Change-Id: Ie7775460b17ea7ab331738734e3d688ad5563857 --- firmware/export/imx233.h | 4 ++-- firmware/target/arm/imx233/timer-imx233.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/firmware/export/imx233.h b/firmware/export/imx233.h index 70be3788ff..a18b584d8e 100644 --- a/firmware/export/imx233.h +++ b/firmware/export/imx233.h @@ -61,8 +61,8 @@ #define FRAME_PHYS_ADDR (DRAM_ORIG + DRAM_SIZE - TTB_SIZE - FRAME_SIZE) #define FRAME ((void *)(FRAME_PHYS_ADDR - UNCACHED_DRAM_ADDR + BUFFERED_DRAM_ADDR)) -/* Timer runs at APBX speed which is derived from ref_xtal@24MHz */ -#define TIMER_FREQ 24000000 +/* Timer runs at 32KHz, derived from clk32k@32KHz */ +#define TIMER_FREQ 32000 /* USBOTG */ #define USB_QHARRAY_ATTR __attribute__((section(".qharray"),nocommon,aligned(2048))) diff --git a/firmware/target/arm/imx233/timer-imx233.c b/firmware/target/arm/imx233/timer-imx233.c index bcc1974c63..4175dde95a 100644 --- a/firmware/target/arm/imx233/timer-imx233.c +++ b/firmware/target/arm/imx233/timer-imx233.c @@ -58,7 +58,7 @@ bool timer_set(long cycles, bool start) bool timer_start(IF_COP_VOID(int core)) { imx233_setup_timer(USER_TIMER_NR, true, timer_cycles, - HW_TIMROT_TIMCTRL__SELECT_TICK_ALWAYS, HW_TIMROT_TIMCTRL__PRESCALE_1, + HW_TIMROT_TIMCTRL__SELECT_32KHZ_XTAL, HW_TIMROT_TIMCTRL__PRESCALE_1, false, &timer_fn); return true; } -- 2.11.4.GIT