sh_mobile_meram.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef __VIDEO_SH_MOBILE_MERAM_H__
  2. #define __VIDEO_SH_MOBILE_MERAM_H__
  3. /* For sh_mobile_meram_info.addr_mode */
  4. enum {
  5. SH_MOBILE_MERAM_MODE0 = 0,
  6. SH_MOBILE_MERAM_MODE1
  7. };
  8. enum {
  9. SH_MOBILE_MERAM_PF_NV = 0,
  10. SH_MOBILE_MERAM_PF_RGB,
  11. SH_MOBILE_MERAM_PF_NV24
  12. };
  13. struct sh_mobile_meram_priv;
  14. struct sh_mobile_meram_ops;
  15. /*
  16. * struct sh_mobile_meram_info - MERAM platform data
  17. * @reserved_icbs: Bitmask of reserved ICBs (for instance used through UIO)
  18. */
  19. struct sh_mobile_meram_info {
  20. int addr_mode;
  21. u32 reserved_icbs;
  22. struct sh_mobile_meram_ops *ops;
  23. struct sh_mobile_meram_priv *priv;
  24. struct platform_device *pdev;
  25. };
  26. /* icb config */
  27. struct sh_mobile_meram_icb_cfg {
  28. unsigned int marker_icb; /* ICB # for Marker ICB */
  29. unsigned int cache_icb; /* ICB # for Cache ICB */
  30. unsigned int meram_size; /* MERAM Buffer Size to use */
  31. };
  32. struct sh_mobile_meram_cfg {
  33. struct sh_mobile_meram_icb_cfg icb[2];
  34. };
  35. struct module;
  36. struct sh_mobile_meram_ops {
  37. struct module *module;
  38. /* register usage of meram */
  39. void *(*meram_register)(struct sh_mobile_meram_info *meram_dev,
  40. const struct sh_mobile_meram_cfg *cfg,
  41. unsigned int xres, unsigned int yres,
  42. unsigned int pixelformat,
  43. unsigned long base_addr_y,
  44. unsigned long base_addr_c,
  45. unsigned long *icb_addr_y,
  46. unsigned long *icb_addr_c,
  47. unsigned int *pitch);
  48. /* unregister usage of meram */
  49. int (*meram_unregister)(struct sh_mobile_meram_info *meram_dev,
  50. void *data);
  51. /* update meram settings */
  52. int (*meram_update)(struct sh_mobile_meram_info *meram_dev,
  53. void *data,
  54. unsigned long base_addr_y,
  55. unsigned long base_addr_c,
  56. unsigned long *icb_addr_y,
  57. unsigned long *icb_addr_c);
  58. };
  59. #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */