2005-04-17 02:20:36 +04:00
/*
* include / asm - sh / machvec . h
*
* Copyright 2000 Stuart Menefy ( stuart . menefy @ st . com )
*
* May be copied or modified under the terms of the GNU General Public
* License . See linux / COPYING for more information .
*/
# ifndef _ASM_SH_MACHVEC_H
2006-09-27 13:17:31 +04:00
# define _ASM_SH_MACHVEC_H
2005-04-17 02:20:36 +04:00
# include <linux/types.h>
# include <linux/time.h>
# include <asm/machtypes.h>
struct device ;
2006-01-17 09:14:15 +03:00
struct sh_machine_vector {
2006-09-27 13:17:31 +04:00
void ( * mv_setup ) ( char * * cmdline_p ) ;
const char * mv_name ;
2005-04-17 02:20:36 +04:00
int mv_nr_irqs ;
2006-01-17 09:14:15 +03:00
u8 ( * mv_inb ) ( unsigned long ) ;
u16 ( * mv_inw ) ( unsigned long ) ;
u32 ( * mv_inl ) ( unsigned long ) ;
void ( * mv_outb ) ( u8 , unsigned long ) ;
void ( * mv_outw ) ( u16 , unsigned long ) ;
void ( * mv_outl ) ( u32 , unsigned long ) ;
u8 ( * mv_inb_p ) ( unsigned long ) ;
u16 ( * mv_inw_p ) ( unsigned long ) ;
u32 ( * mv_inl_p ) ( unsigned long ) ;
void ( * mv_outb_p ) ( u8 , unsigned long ) ;
void ( * mv_outw_p ) ( u16 , unsigned long ) ;
void ( * mv_outl_p ) ( u32 , unsigned long ) ;
void ( * mv_insb ) ( unsigned long , void * dst , unsigned long count ) ;
void ( * mv_insw ) ( unsigned long , void * dst , unsigned long count ) ;
void ( * mv_insl ) ( unsigned long , void * dst , unsigned long count ) ;
void ( * mv_outsb ) ( unsigned long , const void * src , unsigned long count ) ;
void ( * mv_outsw ) ( unsigned long , const void * src , unsigned long count ) ;
void ( * mv_outsl ) ( unsigned long , const void * src , unsigned long count ) ;
u8 ( * mv_readb ) ( void __iomem * ) ;
u16 ( * mv_readw ) ( void __iomem * ) ;
u32 ( * mv_readl ) ( void __iomem * ) ;
void ( * mv_writeb ) ( u8 , void __iomem * ) ;
void ( * mv_writew ) ( u16 , void __iomem * ) ;
void ( * mv_writel ) ( u32 , void __iomem * ) ;
2005-04-17 02:20:36 +04:00
int ( * mv_irq_demux ) ( int irq ) ;
void ( * mv_init_irq ) ( void ) ;
void ( * mv_init_pci ) ( void ) ;
void ( * mv_heartbeat ) ( void ) ;
2005-10-21 11:21:38 +04:00
void * ( * mv_consistent_alloc ) ( struct device * , size_t , dma_addr_t * , gfp_t ) ;
2005-04-17 02:20:36 +04:00
int ( * mv_consistent_free ) ( struct device * , size_t , void * , dma_addr_t ) ;
2006-01-17 09:14:15 +03:00
void __iomem * ( * mv_ioport_map ) ( unsigned long port , unsigned int size ) ;
void ( * mv_ioport_unmap ) ( void __iomem * ) ;
2005-04-17 02:20:36 +04:00
} ;
extern struct sh_machine_vector sh_mv ;
2006-09-27 13:17:31 +04:00
# define get_system_type() sh_mv.mv_name
2007-05-15 10:19:34 +04:00
# define __initmv \
__attribute_used__ __attribute__ ( ( __section__ ( " .machvec.init " ) ) )
2005-04-17 02:20:36 +04:00
# endif /* _ASM_SH_MACHVEC_H */