aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drm_crtc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/drm/drm_crtc.h')
-rw-r--r--include/drm/drm_crtc.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 7300fb866767..b69347b8904f 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -259,6 +259,8 @@ struct drm_framebuffer {
259 void *fbdev; 259 void *fbdev;
260 u32 pseudo_palette[17]; 260 u32 pseudo_palette[17];
261 struct list_head filp_head; 261 struct list_head filp_head;
262 /* if you are using the helper */
263 void *helper_private;
262}; 264};
263 265
264struct drm_property_blob { 266struct drm_property_blob {
@@ -385,6 +387,7 @@ struct drm_crtc {
385 * @get_modes: get mode list for this connector 387 * @get_modes: get mode list for this connector
386 * @set_property: property for this connector may need update 388 * @set_property: property for this connector may need update
387 * @destroy: make object go away 389 * @destroy: make object go away
390 * @force: notify the driver the connector is forced on
388 * 391 *
389 * Each CRTC may have one or more connectors attached to it. The functions 392 * Each CRTC may have one or more connectors attached to it. The functions
390 * below allow the core DRM code to control connectors, enumerate available modes, 393 * below allow the core DRM code to control connectors, enumerate available modes,
@@ -399,6 +402,7 @@ struct drm_connector_funcs {
399 int (*set_property)(struct drm_connector *connector, struct drm_property *property, 402 int (*set_property)(struct drm_connector *connector, struct drm_property *property,
400 uint64_t val); 403 uint64_t val);
401 void (*destroy)(struct drm_connector *connector); 404 void (*destroy)(struct drm_connector *connector);
405 void (*force)(struct drm_connector *connector);
402}; 406};
403 407
404struct drm_encoder_funcs { 408struct drm_encoder_funcs {
@@ -427,6 +431,13 @@ struct drm_encoder {
427 void *helper_private; 431 void *helper_private;
428}; 432};
429 433
434enum drm_connector_force {
435 DRM_FORCE_UNSPECIFIED,
436 DRM_FORCE_OFF,
437 DRM_FORCE_ON, /* force on analog part normally */
438 DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
439};
440
430/** 441/**
431 * drm_connector - central DRM connector control structure 442 * drm_connector - central DRM connector control structure
432 * @crtc: CRTC this connector is currently connected to, NULL if none 443 * @crtc: CRTC this connector is currently connected to, NULL if none
@@ -476,9 +487,12 @@ struct drm_connector {
476 487
477 void *helper_private; 488 void *helper_private;
478 489
490 /* forced on connector */
491 enum drm_connector_force force;
479 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER]; 492 uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER];
480 uint32_t force_encoder_id; 493 uint32_t force_encoder_id;
481 struct drm_encoder *encoder; /* currently active encoder */ 494 struct drm_encoder *encoder; /* currently active encoder */
495 void *fb_helper_private;
482}; 496};
483 497
484/** 498/**
@@ -572,6 +586,12 @@ struct drm_mode_config {
572 struct drm_property *tv_right_margin_property; 586 struct drm_property *tv_right_margin_property;
573 struct drm_property *tv_top_margin_property; 587 struct drm_property *tv_top_margin_property;
574 struct drm_property *tv_bottom_margin_property; 588 struct drm_property *tv_bottom_margin_property;
589 struct drm_property *tv_brightness_property;
590 struct drm_property *tv_contrast_property;
591 struct drm_property *tv_flicker_reduction_property;
592 struct drm_property *tv_overscan_property;
593 struct drm_property *tv_saturation_property;
594 struct drm_property *tv_hue_property;
575 595
576 /* Optional properties */ 596 /* Optional properties */
577 struct drm_property *scaling_mode_property; 597 struct drm_property *scaling_mode_property;
@@ -736,4 +756,12 @@ extern int drm_mode_gamma_get_ioctl(struct drm_device *dev,
736extern int drm_mode_gamma_set_ioctl(struct drm_device *dev, 756extern int drm_mode_gamma_set_ioctl(struct drm_device *dev,
737 void *data, struct drm_file *file_priv); 757 void *data, struct drm_file *file_priv);
738extern bool drm_detect_hdmi_monitor(struct edid *edid); 758extern bool drm_detect_hdmi_monitor(struct edid *edid);
759extern struct drm_display_mode *drm_cvt_mode(struct drm_device *dev,
760 int hdisplay, int vdisplay, int vrefresh,
761 bool reduced, bool interlaced, bool margins);
762extern struct drm_display_mode *drm_gtf_mode(struct drm_device *dev,
763 int hdisplay, int vdisplay, int vrefresh,
764 bool interlaced, int margins);
765extern int drm_add_modes_noedid(struct drm_connector *connector,
766 int hdisplay, int vdisplay);
739#endif /* __DRM_CRTC_H__ */ 767#endif /* __DRM_CRTC_H__ */