linux/include/video/sh_mobile_meram.h
<<
>>
Prefs
   1#ifndef __VIDEO_SH_MOBILE_MERAM_H__
   2#define __VIDEO_SH_MOBILE_MERAM_H__
   3
   4/* For sh_mobile_meram_info.addr_mode */
   5enum {
   6        SH_MOBILE_MERAM_MODE0 = 0,
   7        SH_MOBILE_MERAM_MODE1
   8};
   9
  10enum {
  11        SH_MOBILE_MERAM_PF_NV = 0,
  12        SH_MOBILE_MERAM_PF_RGB,
  13        SH_MOBILE_MERAM_PF_NV24
  14};
  15
  16
  17struct sh_mobile_meram_priv;
  18
  19/*
  20 * struct sh_mobile_meram_info - MERAM platform data
  21 * @reserved_icbs: Bitmask of reserved ICBs (for instance used through UIO)
  22 */
  23struct sh_mobile_meram_info {
  24        int                             addr_mode;
  25        u32                             reserved_icbs;
  26        struct sh_mobile_meram_priv     *priv;
  27        struct platform_device          *pdev;
  28};
  29
  30/* icb config */
  31struct sh_mobile_meram_icb_cfg {
  32        unsigned int meram_size;        /* MERAM Buffer Size to use */
  33};
  34
  35struct sh_mobile_meram_cfg {
  36        struct sh_mobile_meram_icb_cfg icb[2];
  37};
  38
  39#if defined(CONFIG_FB_SH_MOBILE_MERAM) || \
  40    defined(CONFIG_FB_SH_MOBILE_MERAM_MODULE)
  41unsigned long sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev,
  42                                    size_t size);
  43void sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev,
  44                          unsigned long mem, size_t size);
  45void *sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev,
  46                                  const struct sh_mobile_meram_cfg *cfg,
  47                                  unsigned int xres, unsigned int yres,
  48                                  unsigned int pixelformat,
  49                                  unsigned int *pitch);
  50void sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data);
  51void sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data,
  52                                  unsigned long base_addr_y,
  53                                  unsigned long base_addr_c,
  54                                  unsigned long *icb_addr_y,
  55                                  unsigned long *icb_addr_c);
  56#else
  57static inline unsigned long
  58sh_mobile_meram_alloc(struct sh_mobile_meram_info *meram_dev, size_t size)
  59{
  60        return 0;
  61}
  62
  63static inline void
  64sh_mobile_meram_free(struct sh_mobile_meram_info *meram_dev,
  65                     unsigned long mem, size_t size)
  66{
  67}
  68
  69static inline void *
  70sh_mobile_meram_cache_alloc(struct sh_mobile_meram_info *dev,
  71                            const struct sh_mobile_meram_cfg *cfg,
  72                            unsigned int xres, unsigned int yres,
  73                            unsigned int pixelformat,
  74                            unsigned int *pitch)
  75{
  76        return ERR_PTR(-ENODEV);
  77}
  78
  79static inline void
  80sh_mobile_meram_cache_free(struct sh_mobile_meram_info *dev, void *data)
  81{
  82}
  83
  84static inline void
  85sh_mobile_meram_cache_update(struct sh_mobile_meram_info *dev, void *data,
  86                             unsigned long base_addr_y,
  87                             unsigned long base_addr_c,
  88                             unsigned long *icb_addr_y,
  89                             unsigned long *icb_addr_c)
  90{
  91}
  92#endif
  93
  94#endif /* __VIDEO_SH_MOBILE_MERAM_H__  */
  95