#ifndef __sh_mobile_meram_h__ #define __sh_mobile_meram_h__ #include <linux/mutex.h> #include <video/sh_mobile_meram.h> /* * MERAM private */ #define MERAM_ICB_Y 0x1 #define MERAM_ICB_C 0x2 /* MERAM cache size */ #define SH_MOBILE_MERAM_ICB_NUM 32 #define SH_MOBILE_MERAM_CACHE_OFFSET(p) ((p) >> 16) #define SH_MOBILE_MERAM_CACHE_SIZE(p) ((p) & 0xffff) struct sh_mobile_meram_priv { void __iomem *base; struct mutex lock; unsigned long used_icb; int used_meram_cache_regions; unsigned long used_meram_cache[SH_MOBILE_MERAM_ICB_NUM]; }; int sh_mobile_meram_alloc_icb(const struct sh_mobile_meram_cfg *cfg, int xres, int yres, unsigned int base_addr, int yuv_mode, int *marker_icb, int *out_pitch); void sh_mobile_meram_free_icb(int marker_icb); #define SH_MOBILE_MERAM_START(ind, ab) \ (0xC0000000 | ((ab & 0x1) << 23) | ((ind & 0x1F) << 24)) #endif /* !__sh_mobile_meram_h__ */