linux/arch/arm/mach-davinci/include/mach/common.h
<<
>>
Prefs
   1/*
   2 * Header for code common to all DaVinci machines.
   3 *
   4 * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
   5 *
   6 * 2007 (c) MontaVista Software, Inc. This file is licensed under
   7 * the terms of the GNU General Public License version 2. This program
   8 * is licensed "as is" without any warranty of any kind, whether express
   9 * or implied.
  10 */
  11
  12#ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
  13#define __ARCH_ARM_MACH_DAVINCI_COMMON_H
  14
  15#include <linux/compiler.h>
  16#include <linux/types.h>
  17#include <linux/reboot.h>
  18
  19extern void davinci_timer_init(void);
  20
  21extern void davinci_irq_init(void);
  22extern void __iomem *davinci_intc_base;
  23extern int davinci_intc_type;
  24
  25struct davinci_timer_instance {
  26        u32             base;
  27        u32             bottom_irq;
  28        u32             top_irq;
  29        unsigned long   cmp_off;
  30        unsigned int    cmp_irq;
  31};
  32
  33struct davinci_timer_info {
  34        struct davinci_timer_instance   *timers;
  35        unsigned int                    clockevent_id;
  36        unsigned int                    clocksource_id;
  37};
  38
  39struct davinci_gpio_controller;
  40
  41/*
  42 * SoC info passed into common davinci modules.
  43 *
  44 * Base addresses in this structure should be physical and not virtual.
  45 * Modules that take such base addresses, should internally ioremap() them to
  46 * use.
  47 */
  48struct davinci_soc_info {
  49        struct map_desc                 *io_desc;
  50        unsigned long                   io_desc_num;
  51        u32                             cpu_id;
  52        u32                             jtag_id;
  53        u32                             jtag_id_reg;
  54        struct davinci_id               *ids;
  55        unsigned long                   ids_num;
  56        u32                             *psc_bases;
  57        unsigned long                   psc_bases_num;
  58        u32                             pinmux_base;
  59        const struct mux_config         *pinmux_pins;
  60        unsigned long                   pinmux_pins_num;
  61        u32                             intc_base;
  62        int                             intc_type;
  63        u8                              *intc_irq_prios;
  64        unsigned long                   intc_irq_num;
  65        u32                             *intc_host_map;
  66        struct davinci_timer_info       *timer_info;
  67        int                             gpio_type;
  68        u32                             gpio_base;
  69        unsigned                        gpio_num;
  70        unsigned                        gpio_irq;
  71        unsigned                        gpio_unbanked;
  72        struct davinci_gpio_controller  *gpio_ctlrs;
  73        int                             gpio_ctlrs_num;
  74        struct emac_platform_data       *emac_pdata;
  75        dma_addr_t                      sram_dma;
  76        unsigned                        sram_len;
  77};
  78
  79extern struct davinci_soc_info davinci_soc_info;
  80
  81extern void davinci_common_init(const struct davinci_soc_info *soc_info);
  82extern void davinci_init_ide(void);
  83void davinci_init_late(void);
  84
  85#ifdef CONFIG_DAVINCI_RESET_CLOCKS
  86int davinci_clk_disable_unused(void);
  87#else
  88static inline int davinci_clk_disable_unused(void) { return 0; }
  89#endif
  90
  91#ifdef CONFIG_CPU_FREQ
  92int davinci_cpufreq_init(void);
  93#else
  94static inline int davinci_cpufreq_init(void) { return 0; }
  95#endif
  96
  97#ifdef CONFIG_SUSPEND
  98int davinci_pm_init(void);
  99#else
 100static inline int davinci_pm_init(void) { return 0; }
 101#endif
 102
 103void __init pdata_quirks_init(void);
 104
 105#define SRAM_SIZE       SZ_128K
 106
 107#endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */
 108