linux/arch/arm/mach-at91/at91x40.c
<<
>>
Prefs
   1/*
   2 * arch/arm/mach-at91/at91x40.c
   3 *
   4 * (C) Copyright 2007, Greg Ungerer <gerg@snapgear.com>
   5 * Copyright (C) 2005 SAN People
   6 *
   7 * This program is free software; you can redistribute it and/or modify
   8 * it under the terms of the GNU General Public License as published by
   9 * the Free Software Foundation; either version 2 of the License, or
  10 * (at your option) any later version.
  11 */
  12
  13#include <linux/kernel.h>
  14#include <linux/init.h>
  15#include <linux/irq.h>
  16#include <asm/mach/arch.h>
  17#include <mach/at91x40.h>
  18#include <mach/at91_st.h>
  19#include <mach/timex.h>
  20#include "generic.h"
  21
  22/*
  23 * Export the clock functions for the AT91X40. Some external code common
  24 * to all AT91 family parts relys on this, like the gpio and serial support.
  25 */
  26int clk_enable(struct clk *clk)
  27{
  28        return 0;
  29}
  30
  31void clk_disable(struct clk *clk)
  32{
  33}
  34
  35unsigned long clk_get_rate(struct clk *clk)
  36{
  37        return AT91X40_MASTER_CLOCK;
  38}
  39
  40struct clk *clk_get(struct device *dev, const char *id)
  41{
  42        return NULL;
  43}
  44
  45void __init at91x40_initialize(unsigned long main_clock)
  46{
  47        at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
  48                        | (1 << AT91X40_ID_IRQ2);
  49}
  50
  51/*
  52 * The default interrupt priority levels (0 = lowest, 7 = highest).
  53 */
  54static unsigned int at91x40_default_irq_priority[NR_AIC_IRQS] __initdata = {
  55        7,      /* Advanced Interrupt Controller (FIQ) */
  56        0,      /* System Peripherals */
  57        0,      /* USART 0 */
  58        0,      /* USART 1 */
  59        2,      /* Timer Counter 0 */
  60        2,      /* Timer Counter 1 */
  61        2,      /* Timer Counter 2 */
  62        0,      /* Watchdog timer */
  63        0,      /* Parallel IO Controller A */
  64        0,      /* Reserved */
  65        0,      /* Reserved */
  66        0,      /* Reserved */
  67        0,      /* Reserved */
  68        0,      /* Reserved */
  69        0,      /* Reserved */
  70        0,      /* Reserved */
  71        0,      /* External IRQ0 */
  72        0,      /* External IRQ1 */
  73        0,      /* External IRQ2 */
  74};
  75
  76void __init at91x40_init_interrupts(unsigned int priority[NR_AIC_IRQS])
  77{
  78        if (!priority)
  79                priority = at91x40_default_irq_priority;
  80
  81        at91_aic_init(priority);
  82}
  83
  84