2 * include/asm-v850/v850e_timer_d.c -- `Timer D' component often used
5 * Copyright (C) 2001,02,03 NEC Electronics Corporation
6 * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org>
8 * This file is subject to the terms and conditions of the GNU General
9 * Public License. See the file COPYING in the main directory of this
10 * archive for more details.
12 * Written by Miles Bader <miles@gnu.org>
15 #include <linux/kernel.h>
17 #include <asm/v850e_utils.h>
18 #include <asm/v850e_timer_d.h>
20 /* Start interval timer TIMER (0-3). The timer will issue the
21 corresponding INTCMD interrupt RATE times per second.
22 This function does not enable the interrupt. */
23 void v850e_timer_d_configure (unsigned timer
, unsigned rate
)
25 unsigned divlog2
, count
;
27 /* Calculate params for timer. */
28 if (! calc_counter_params (
29 V850E_TIMER_D_BASE_FREQ
, rate
,
30 V850E_TIMER_D_TMCD_CS_MIN
, V850E_TIMER_D_TMCD_CS_MAX
, 16,
33 "Cannot find interval timer %d setting suitable"
34 " for rate of %dHz.\n"
35 "Using rate of %dHz instead.\n",
37 (V850E_TIMER_D_BASE_FREQ
>> divlog2
) >> 16);
39 /* Do the actual hardware timer initialization: */
42 V850E_TIMER_D_TMCD(timer
) = V850E_TIMER_D_TMCD_CAE
;
43 /* Set clock divider. */
44 V850E_TIMER_D_TMCD(timer
)
45 = V850E_TIMER_D_TMCD_CAE
46 | V850E_TIMER_D_TMCD_CS(divlog2
);
47 /* Set timer compare register. */
48 V850E_TIMER_D_CMD(timer
) = count
;
50 V850E_TIMER_D_TMCD(timer
)
51 = V850E_TIMER_D_TMCD_CAE
52 | V850E_TIMER_D_TMCD_CS(divlog2
)
53 | V850E_TIMER_D_TMCD_CE
;