Logo Search packages:      
Sourcecode: linux version File versions  Download package

v850e_timer_d.c

/*
 * include/asm-v850/v850e_timer_d.c -- `Timer D' component often used
 *    with V850E CPUs
 *
 *  Copyright (C) 2001,02,03  NEC Electronics Corporation
 *  Copyright (C) 2001,02,03  Miles Bader <miles@gnu.org>
 *
 * This file is subject to the terms and conditions of the GNU General
 * Public License.  See the file COPYING in the main directory of this
 * archive for more details.
 *
 * Written by Miles Bader <miles@gnu.org>
 */

#include <linux/kernel.h>

#include <asm/v850e_utils.h>
#include <asm/v850e_timer_d.h>

/* Start interval timer TIMER (0-3).  The timer will issue the
   corresponding INTCMD interrupt RATE times per second.
   This function does not enable the interrupt.  */
void v850e_timer_d_configure (unsigned timer, unsigned rate)
{
      unsigned divlog2, count;

      /* Calculate params for timer.  */
      if (! calc_counter_params (
                V850E_TIMER_D_BASE_FREQ, rate,
                V850E_TIMER_D_TMCD_CS_MIN, V850E_TIMER_D_TMCD_CS_MAX, 16,
                &divlog2, &count))
            printk (KERN_WARNING
                  "Cannot find interval timer %d setting suitable"
                  " for rate of %dHz.\n"
                  "Using rate of %dHz instead.\n",
                  timer, rate,
                  (V850E_TIMER_D_BASE_FREQ >> divlog2) >> 16);

      /* Do the actual hardware timer initialization:  */

      /* Enable timer.  */
      V850E_TIMER_D_TMCD(timer) = V850E_TIMER_D_TMCD_CAE;
      /* Set clock divider.  */
      V850E_TIMER_D_TMCD(timer)
            = V850E_TIMER_D_TMCD_CAE
            | V850E_TIMER_D_TMCD_CS(divlog2);
      /* Set timer compare register.  */
      V850E_TIMER_D_CMD(timer) = count;
      /* Start counting.  */
      V850E_TIMER_D_TMCD(timer)
            = V850E_TIMER_D_TMCD_CAE
            | V850E_TIMER_D_TMCD_CS(divlog2)
            | V850E_TIMER_D_TMCD_CE;
}

Generated by  Doxygen 1.6.0   Back to index