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