nouveau_display.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #ifndef __NOUVEAU_DISPLAY_H__
  2. #define __NOUVEAU_DISPLAY_H__
  3. #include <subdev/vm.h>
  4. #include "nouveau_drm.h"
  5. struct nouveau_framebuffer {
  6. struct drm_framebuffer base;
  7. struct nouveau_bo *nvbo;
  8. struct nouveau_vma vma;
  9. u32 r_dma;
  10. u32 r_format;
  11. u32 r_pitch;
  12. };
  13. static inline struct nouveau_framebuffer *
  14. nouveau_framebuffer(struct drm_framebuffer *fb)
  15. {
  16. return container_of(fb, struct nouveau_framebuffer, base);
  17. }
  18. int nouveau_framebuffer_init(struct drm_device *, struct nouveau_framebuffer *,
  19. struct drm_mode_fb_cmd2 *, struct nouveau_bo *);
  20. struct nouveau_page_flip_state {
  21. struct list_head head;
  22. struct drm_pending_vblank_event *event;
  23. int crtc, bpp, pitch, x, y;
  24. u64 offset;
  25. };
  26. struct nouveau_display {
  27. void *priv;
  28. void (*dtor)(struct drm_device *);
  29. int (*init)(struct drm_device *);
  30. void (*fini)(struct drm_device *);
  31. struct drm_property *dithering_mode;
  32. struct drm_property *dithering_depth;
  33. struct drm_property *underscan_property;
  34. struct drm_property *underscan_hborder_property;
  35. struct drm_property *underscan_vborder_property;
  36. /* not really hue and saturation: */
  37. struct drm_property *vibrant_hue_property;
  38. struct drm_property *color_vibrance_property;
  39. };
  40. static inline struct nouveau_display *
  41. nouveau_display(struct drm_device *dev)
  42. {
  43. return nouveau_drm(dev)->display;
  44. }
  45. int nouveau_display_create(struct drm_device *dev);
  46. void nouveau_display_destroy(struct drm_device *dev);
  47. int nouveau_display_init(struct drm_device *dev);
  48. void nouveau_display_fini(struct drm_device *dev);
  49. int nouveau_display_suspend(struct drm_device *dev);
  50. void nouveau_display_resume(struct drm_device *dev);
  51. int nouveau_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb,
  52. struct drm_pending_vblank_event *event);
  53. int nouveau_finish_page_flip(struct nouveau_channel *,
  54. struct nouveau_page_flip_state *);
  55. int nouveau_display_dumb_create(struct drm_file *, struct drm_device *,
  56. struct drm_mode_create_dumb *args);
  57. int nouveau_display_dumb_map_offset(struct drm_file *, struct drm_device *,
  58. u32 handle, u64 *offset);
  59. int nouveau_display_dumb_destroy(struct drm_file *, struct drm_device *,
  60. u32 handle);
  61. void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *);
  62. #ifdef CONFIG_DRM_NOUVEAU_BACKLIGHT
  63. extern int nouveau_backlight_init(struct drm_device *);
  64. extern void nouveau_backlight_exit(struct drm_device *);
  65. #else
  66. static inline int
  67. nouveau_backlight_init(struct drm_device *dev)
  68. {
  69. return 0;
  70. }
  71. static inline void
  72. nouveau_backlight_exit(struct drm_device *dev) {
  73. }
  74. #endif
  75. #endif