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 struct sh_mobile_meram_info { 21 int addr_mode; 22 struct sh_mobile_meram_ops *ops; 23 struct sh_mobile_meram_priv *priv; 24 struct platform_device *pdev; 25 }; 26 27 /* icb config */ 28 struct sh_mobile_meram_icb { 29 int marker_icb; /* ICB # for Marker ICB */ 30 int cache_icb; /* ICB # for Cache ICB */ 31 int meram_offset; /* MERAM Buffer Offset to use */ 32 int meram_size; /* MERAM Buffer Size to use */ 33 34 int cache_unit; /* bytes to cache per ICB */ 35 }; 36 37 struct sh_mobile_meram_cfg { 38 struct sh_mobile_meram_icb icb[2]; 39 int pixelformat; 40 int current_reg; 41 }; 42 43 struct module; 44 struct sh_mobile_meram_ops { 45 struct module *module; 46 /* register usage of meram */ 47 int (*meram_register)(struct sh_mobile_meram_info *meram_dev, 48 struct sh_mobile_meram_cfg *cfg, 49 int xres, int yres, int pixelformat, 50 unsigned long base_addr_y, 51 unsigned long base_addr_c, 52 unsigned long *icb_addr_y, 53 unsigned long *icb_addr_c, int *pitch); 54 55 /* unregister usage of meram */ 56 int (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, 57 struct sh_mobile_meram_cfg *cfg); 58 59 /* update meram settings */ 60 int (*meram_update)(struct sh_mobile_meram_info *meram_dev, 61 struct sh_mobile_meram_cfg *cfg, 62 unsigned long base_addr_y, 63 unsigned long base_addr_c, 64 unsigned long *icb_addr_y, 65 unsigned long *icb_addr_c); 66 }; 67 68 #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */ 69