2011-05-18 11:10:07 +00:00
# ifndef __VIDEO_SH_MOBILE_MERAM_H__
# define __VIDEO_SH_MOBILE_MERAM_H__
/* For sh_mobile_meram_info.addr_mode */
enum {
SH_MOBILE_MERAM_MODE0 = 0 ,
SH_MOBILE_MERAM_MODE1
} ;
enum {
SH_MOBILE_MERAM_PF_NV = 0 ,
2011-05-18 11:10:08 +00:00
SH_MOBILE_MERAM_PF_RGB ,
SH_MOBILE_MERAM_PF_NV24
2011-05-18 11:10:07 +00:00
} ;
struct sh_mobile_meram_priv ;
struct sh_mobile_meram_ops ;
struct sh_mobile_meram_info {
int addr_mode ;
struct sh_mobile_meram_ops * ops ;
struct sh_mobile_meram_priv * priv ;
struct platform_device * pdev ;
} ;
/* icb config */
struct sh_mobile_meram_icb {
int marker_icb ; /* ICB # for Marker ICB */
int cache_icb ; /* ICB # for Cache ICB */
int meram_offset ; /* MERAM Buffer Offset to use */
int meram_size ; /* MERAM Buffer Size to use */
int cache_unit ; /* bytes to cache per ICB */
} ;
struct sh_mobile_meram_cfg {
struct sh_mobile_meram_icb icb [ 2 ] ;
int pixelformat ;
int current_reg ;
} ;
struct module ;
struct sh_mobile_meram_ops {
struct module * module ;
/* register usage of meram */
int ( * meram_register ) ( struct sh_mobile_meram_info * meram_dev ,
struct sh_mobile_meram_cfg * cfg ,
int xres , int yres , int pixelformat ,
unsigned long base_addr_y ,
unsigned long base_addr_c ,
unsigned long * icb_addr_y ,
unsigned long * icb_addr_c , int * pitch ) ;
/* unregister usage of meram */
int ( * meram_unregister ) ( struct sh_mobile_meram_info * meram_dev ,
struct sh_mobile_meram_cfg * cfg ) ;
/* update meram settings */
int ( * meram_update ) ( struct sh_mobile_meram_info * meram_dev ,
struct sh_mobile_meram_cfg * cfg ,
unsigned long base_addr_y ,
unsigned long base_addr_c ,
unsigned long * icb_addr_y ,
unsigned long * icb_addr_c ) ;
} ;
# endif /* __VIDEO_SH_MOBILE_MERAM_H__ */