1 #ifndef __VIDEO_SH_MOBILE_MERAM_H__ 2 #define __VIDEO_SH_MOBILE_MERAM_H__ 3 4 /* For sh_mobile_meram_info.addr_mode */ 5 enum { 6 SH_MOBILE_MERAM_MODE0 = 0, 7 SH_MOBILE_MERAM_MODE1 8 }; 9 10 enum { 11 SH_MOBILE_MERAM_PF_NV = 0, 12 SH_MOBILE_MERAM_PF_RGB, 13 SH_MOBILE_MERAM_PF_NV24 14 }; 15 16 17 struct sh_mobile_meram_priv; 18 struct sh_mobile_meram_ops; 19 20 /* 21 * struct sh_mobile_meram_info - MERAM platform data 22 * @reserved_icbs: Bitmask of reserved ICBs (for instance used through UIO) 23 */ 24 struct sh_mobile_meram_info { 25 int addr_mode; 26 u32 reserved_icbs; 27 struct sh_mobile_meram_ops *ops; 28 struct sh_mobile_meram_priv *priv; 29 struct platform_device *pdev; 30 }; 31 32 /* icb config */ 33 struct sh_mobile_meram_icb_cfg { 34 unsigned int meram_size; /* MERAM Buffer Size to use */ 35 }; 36 37 struct sh_mobile_meram_cfg { 38 struct sh_mobile_meram_icb_cfg icb[2]; 39 }; 40 41 struct module; 42 struct sh_mobile_meram_ops { 43 struct module *module; 44 /* register usage of meram */ 45 void *(*meram_register)(struct sh_mobile_meram_info *meram_dev, 46 const struct sh_mobile_meram_cfg *cfg, 47 unsigned int xres, unsigned int yres, 48 unsigned int pixelformat, 49 unsigned int *pitch); 50 51 /* unregister usage of meram */ 52 void (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, 53 void *data); 54 55 /* update meram settings */ 56 void (*meram_update)(struct sh_mobile_meram_info *meram_dev, void *data, 57 unsigned long base_addr_y, 58 unsigned long base_addr_c, 59 unsigned long *icb_addr_y, 60 unsigned long *icb_addr_c); 61 }; 62 63 #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */ 64