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