1
2#ifndef __VIDEO_SH_MOBILE_MERAM_H__
3#define __VIDEO_SH_MOBILE_MERAM_H__
4
5
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
22
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
32struct sh_mobile_meram_icb_cfg {
33 unsigned int meram_size;
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
96