sh_mobile_meram.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. struct sh_mobile_meram_info {
  16. int addr_mode;
  17. struct sh_mobile_meram_ops *ops;
  18. struct sh_mobile_meram_priv *priv;
  19. struct platform_device *pdev;
  20. };
  21. /* icb config */
  22. struct sh_mobile_meram_icb_cfg {
  23. unsigned int marker_icb; /* ICB # for Marker ICB */
  24. unsigned int cache_icb; /* ICB # for Cache ICB */
  25. unsigned int meram_size; /* MERAM Buffer Size to use */
  26. };
  27. struct sh_mobile_meram_cfg {
  28. struct sh_mobile_meram_icb_cfg icb[2];
  29. };
  30. struct module;
  31. struct sh_mobile_meram_ops {
  32. struct module *module;
  33. /* register usage of meram */
  34. int (*meram_register)(struct sh_mobile_meram_info *meram_dev,
  35. const struct sh_mobile_meram_cfg *cfg,
  36. unsigned int xres, unsigned int yres,
  37. unsigned int pixelformat,
  38. unsigned long base_addr_y,
  39. unsigned long base_addr_c,
  40. unsigned long *icb_addr_y,
  41. unsigned long *icb_addr_c,
  42. unsigned int *pitch);
  43. /* unregister usage of meram */
  44. int (*meram_unregister)(struct sh_mobile_meram_info *meram_dev,
  45. const struct sh_mobile_meram_cfg *cfg);
  46. /* update meram settings */
  47. int (*meram_update)(struct sh_mobile_meram_info *meram_dev,
  48. const struct sh_mobile_meram_cfg *cfg,
  49. unsigned long base_addr_y,
  50. unsigned long base_addr_c,
  51. unsigned long *icb_addr_y,
  52. unsigned long *icb_addr_c);
  53. };
  54. #endif /* __VIDEO_SH_MOBILE_MERAM_H__ */