2007-04-30 19:37:19 +01:00
/*
* Header for code common to all DaVinci machines .
*
* Author : Kevin Hilman , MontaVista Software , Inc . < source @ mvista . com >
*
* 2007 ( c ) MontaVista Software , Inc . This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed " as is " without any warranty of any kind , whether express
* or implied .
*/
# ifndef __ARCH_ARM_MACH_DAVINCI_COMMON_H
# define __ARCH_ARM_MACH_DAVINCI_COMMON_H
2010-04-21 15:33:32 +02:00
# include <linux/compiler.h>
# include <linux/types.h>
2013-07-08 16:01:40 -07:00
# include <linux/reboot.h>
2010-04-21 15:33:32 +02:00
2012-11-08 12:40:59 -07:00
extern void davinci_timer_init ( void ) ;
2007-04-30 19:37:19 +01:00
2009-04-14 11:30:11 -05:00
extern void davinci_irq_init ( void ) ;
2009-04-15 12:40:00 -07:00
extern void __iomem * davinci_intc_base ;
2009-04-15 12:41:40 -07:00
extern int davinci_intc_type ;
2009-04-14 11:30:11 -05:00
2009-04-15 12:40:11 -07:00
struct davinci_timer_instance {
2010-05-07 17:06:35 -04:00
u32 base ;
2009-04-15 12:40:11 -07:00
u32 bottom_irq ;
u32 top_irq ;
2009-04-15 12:41:54 -07:00
unsigned long cmp_off ;
unsigned int cmp_irq ;
2009-04-15 12:40:11 -07:00
} ;
struct davinci_timer_info {
struct davinci_timer_instance * timers ;
unsigned int clockevent_id ;
unsigned int clocksource_id ;
} ;
2010-05-01 18:37:53 -04:00
struct davinci_gpio_controller ;
2010-05-07 17:06:39 -04:00
/*
* SoC info passed into common davinci modules .
*
* Base addresses in this structure should be physical and not virtual .
* Modules that take such base addresses , should internally ioremap ( ) them to
* use .
*/
2009-04-15 12:38:58 -07:00
struct davinci_soc_info {
struct map_desc * io_desc ;
unsigned long io_desc_num ;
2009-04-15 12:39:09 -07:00
u32 cpu_id ;
u32 jtag_id ;
2010-05-07 17:06:34 -04:00
u32 jtag_id_reg ;
2009-04-15 12:39:09 -07:00
struct davinci_id * ids ;
unsigned long ids_num ;
2010-01-11 08:22:23 -08:00
struct clk_lookup * cpu_clks ;
2010-05-07 17:06:36 -04:00
u32 * psc_bases ;
2009-04-15 12:39:33 -07:00
unsigned long psc_bases_num ;
2010-05-07 17:06:38 -04:00
u32 pinmux_base ;
2009-04-15 12:39:48 -07:00
const struct mux_config * pinmux_pins ;
unsigned long pinmux_pins_num ;
2010-05-07 17:06:37 -04:00
u32 intc_base ;
2009-04-15 12:40:00 -07:00
int intc_type ;
u8 * intc_irq_prios ;
unsigned long intc_irq_num ;
2010-05-07 17:06:37 -04:00
u32 * intc_host_map ;
2009-04-15 12:40:11 -07:00
struct davinci_timer_info * timer_info ;
2010-05-01 18:37:54 -04:00
int gpio_type ;
2010-05-07 17:06:32 -04:00
u32 gpio_base ;
2009-04-15 12:40:35 -07:00
unsigned gpio_num ;
unsigned gpio_irq ;
2009-06-25 17:01:31 -07:00
unsigned gpio_unbanked ;
2010-05-01 18:37:53 -04:00
struct davinci_gpio_controller * gpio_ctlrs ;
int gpio_ctlrs_num ;
2009-04-15 12:40:56 -07:00
struct emac_platform_data * emac_pdata ;
2009-04-30 17:35:48 -07:00
dma_addr_t sram_dma ;
unsigned sram_len ;
2009-04-15 12:38:58 -07:00
} ;
extern struct davinci_soc_info davinci_soc_info ;
extern void davinci_common_init ( struct davinci_soc_info * soc_info ) ;
2010-04-21 18:11:33 +04:00
extern void davinci_init_ide ( void ) ;
2013-07-08 16:01:40 -07:00
void davinci_restart ( enum reboot_mode mode , const char * cmd ) ;
2012-04-26 09:45:39 +08:00
void davinci_init_late ( void ) ;
# ifdef CONFIG_DAVINCI_RESET_CLOCKS
int davinci_clk_disable_unused ( void ) ;
# else
static inline int davinci_clk_disable_unused ( void ) { return 0 ; }
# endif
# ifdef CONFIG_CPU_FREQ
int davinci_cpufreq_init ( void ) ;
# else
static inline int davinci_cpufreq_init ( void ) { return 0 ; }
# endif
# ifdef CONFIG_SUSPEND
int davinci_pm_init ( void ) ;
# else
static inline int davinci_pm_init ( void ) { return 0 ; }
# endif
2009-04-15 12:38:58 -07:00
2009-04-30 17:35:48 -07:00
# define SRAM_SIZE SZ_128K
2007-04-30 19:37:19 +01:00
# endif /* __ARCH_ARM_MACH_DAVINCI_COMMON_H */