diff options
Diffstat (limited to 'include/video/sh_mobile_meram.h')
| -rw-r--r-- | include/video/sh_mobile_meram.h | 94 |
1 files changed, 60 insertions, 34 deletions
diff --git a/include/video/sh_mobile_meram.h b/include/video/sh_mobile_meram.h index af602d602b2..062e6e7f955 100644 --- a/include/video/sh_mobile_meram.h +++ b/include/video/sh_mobile_meram.h @@ -15,54 +15,80 @@ enum { struct sh_mobile_meram_priv; -struct sh_mobile_meram_ops; +/* + * struct sh_mobile_meram_info - MERAM platform data + * @reserved_icbs: Bitmask of reserved ICBs (for instance used through UIO) + */ struct sh_mobile_meram_info { int addr_mode; - struct sh_mobile_meram_ops *ops; + u32 reserved_icbs; 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_icb_cfg { + unsigned int meram_size; /* MERAM Buffer Size to use */ }; struct sh_mobile_meram_cfg { - struct sh_mobile_meram_icb icb[2]; - int pixelformat; - int current_reg; + struct sh_mobile_meram_icb_cfg icb[2]; }; -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); +#if defined(CONFIG_FB_SH_MOBILE_MERAM) || \ + defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE) +unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, + size_t size); +void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, + unsigned long mem, size_t size); +void *sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, + const struct sh_mobile_meram_cfg *cfg, + unsigned int xres, unsigned int yres, + unsigned int pixelformat, + unsigned int *pitch); +void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data); +void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data, + unsigned long base_addr_y, + unsigned long base_addr_c, + unsigned long *icb_addr_y, + unsigned long *icb_addr_c); +#else +static inline unsigned long +sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size) +{ + return 0; +} - /* unregister usage of meram */ - int (*meram_unregister)(struct sh_mobile_meram_info *meram_dev, - struct sh_mobile_meram_cfg *cfg); +static inline void +sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev, + unsigned long mem, size_t size) +{ +} - /* 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); -}; +static inline void * +sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev, + const struct sh_mobile_meram_cfg *cfg, + unsigned int xres, unsigned int yres, + unsigned int pixelformat, + unsigned int *pitch) +{ + return ERR_PTR(-ENODEV); +} + +static inline void +sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data) +{ +} + +static inline void +sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data, + unsigned long base_addr_y, + unsigned long base_addr_c, + unsigned long *icb_addr_y, + unsigned long *icb_addr_c) +{ +} +#endif #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */ |
