common.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. #ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
  12. #define __ARCH_ARM_MACH_DAVINCI_COMMON_H
  13. #include <linux/clk.h>
  14. #include <linux/compiler.h>
  15. #include <linux/types.h>
  16. #include <linux/reboot.h>
  17. void davinci_timer_init(struct clk *clk);
  18. extern void davinci_irq_init(void);
  19. extern void __iomem *davinci_intc_base;
  20. extern int davinci_intc_type;
  21. struct davinci_timer_instance {
  22. u32 base;
  23. u32 bottom_irq;
  24. u32 top_irq;
  25. unsigned long cmp_off;
  26. unsigned int cmp_irq;
  27. };
  28. struct davinci_timer_info {
  29. struct davinci_timer_instance *timers;
  30. unsigned int clockevent_id;
  31. unsigned int clocksource_id;
  32. };
  33. struct davinci_gpio_controller;
  34. /*
  35. * SoC info passed into common davinci modules.
  36. *
  37. * Base addresses in this structure should be physical and not virtual.
  38. * Modules that take such base addresses, should internally ioremap() them to
  39. * use.
  40. */
  41. struct davinci_soc_info {
  42. struct map_desc *io_desc;
  43. unsigned long io_desc_num;
  44. u32 cpu_id;
  45. u32 jtag_id;
  46. u32 jtag_id_reg;
  47. struct davinci_id *ids;
  48. unsigned long ids_num;
  49. u32 pinmux_base;
  50. const struct mux_config *pinmux_pins;
  51. unsigned long pinmux_pins_num;
  52. u32 intc_base;
  53. int intc_type;
  54. u8 *intc_irq_prios;
  55. unsigned long intc_irq_num;
  56. u32 *intc_host_map;
  57. struct davinci_timer_info *timer_info;
  58. int gpio_type;
  59. u32 gpio_base;
  60. unsigned gpio_num;
  61. unsigned gpio_irq;
  62. unsigned gpio_unbanked;
  63. struct davinci_gpio_controller *gpio_ctlrs;
  64. int gpio_ctlrs_num;
  65. struct emac_platform_data *emac_pdata;
  66. dma_addr_t sram_dma;
  67. unsigned sram_len;
  68. };
  69. extern struct davinci_soc_info davinci_soc_info;
  70. extern void davinci_common_init(const struct davinci_soc_info *soc_info);
  71. extern void davinci_init_ide(void);
  72. void davinci_init_late(void);
  73. #ifdef CONFIG_CPU_FREQ
  74. int davinci_cpufreq_init(void);
  75. #else
  76. static inline int davinci_cpufreq_init(void) { return 0; }
  77. #endif
  78. #ifdef CONFIG_SUSPEND
  79. int davinci_pm_init(void);
  80. #else
  81. static inline int davinci_pm_init(void) { return 0; }
  82. #endif
  83. void __init pdata_quirks_init(void);
  84. #define SRAM_SIZE SZ_128K
  85. #endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */