]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/drm/drm_crtc.h
Merge git://git.infradead.org/users/dwmw2/mtd-2.6.32
[karo-tx-linux.git] / include / drm / drm_crtc.h
index 7300fb86676730cf39173c844178f7ecdbbfe0db..b69347b8904ff29f465a5d2adb29b1385b939e02 100644 (file)
@@ -259,6 +259,8 @@ struct drm_framebuffer {
        void *fbdev;
        u32 pseudo_palette[17];
        struct list_head filp_head;
+       /* if you are using the helper */
+       void *helper_private;
 };
 
 struct drm_property_blob {
@@ -385,6 +387,7 @@ struct drm_crtc {
  * @get_modes: get mode list for this connector
  * @set_property: property for this connector may need update
  * @destroy: make object go away
+ * @force: notify the driver the connector is forced on
  *
  * Each CRTC may have one or more connectors attached to it.  The functions
  * below allow the core DRM code to control connectors, enumerate available modes,
@@ -399,6 +402,7 @@ struct drm_connector_funcs {
        int (*set_property)(struct drm_connector *connector, struct drm_property *property,
                             uint64_t val);
        void (*destroy)(struct drm_connector *connector);
+       void (*force)(struct drm_connector *connector);
 };
 
 struct drm_encoder_funcs {
@@ -427,6 +431,13 @@ struct drm_encoder {
        void *helper_private;
 };
 
+enum drm_connector_force {
+       DRM_FORCE_UNSPECIFIED,
+       DRM_FORCE_OFF,
+       DRM_FORCE_ON,         /* force on analog part normally */
+       DRM_FORCE_ON_DIGITAL, /* for DVI-I use digital connector */
+};
+
 /**
  * drm_connector - central DRM connector control structure
  * @crtc: CRTC this connector is currently connected to, NULL if none
@@ -476,9 +487,12 @@ struct drm_connector {
 
        void *helper_private;
 
+       /* forced on connector */
+       enum drm_connector_force force;
        uint32_t encoder_ids[DRM_CONNECTOR_MAX_ENCODER];
        uint32_t force_encoder_id;
        struct drm_encoder *encoder; /* currently active encoder */
+       void *fb_helper_private;
 };
 
 /**
@@ -572,6 +586,12 @@ struct drm_mode_config {
        struct drm_property *tv_right_margin_property;
        struct drm_property *tv_top_margin_property;
        struct drm_property *tv_bottom_margin_property;
+       struct drm_property *tv_brightness_property;
+       struct drm_property *tv_contrast_property;
+       struct drm_property *tv_flicker_reduction_property;
+       struct drm_property *tv_overscan_property;
+       struct drm_property *tv_saturation_property;
+       struct drm_property *tv_hue_property;
 
        /* Optional properties */
        struct drm_property *scaling_mode_property;
@@ -736,4 +756,12 @@ extern int drm_mode_gamma_get_ioctl(struct drm_device *dev,
 extern int drm_mode_gamma_set_ioctl(struct drm_device *dev,
                                    void *data, struct drm_file *file_priv);
 extern bool drm_detect_hdmi_monitor(struct edid *edid);
+extern struct drm_display_mode *drm_cvt_mode(struct drm_device *dev,
+                               int hdisplay, int vdisplay, int vrefresh,
+                               bool reduced, bool interlaced, bool margins);
+extern struct drm_display_mode *drm_gtf_mode(struct drm_device *dev,
+                               int hdisplay, int vdisplay, int vrefresh,
+                               bool interlaced, int margins);
+extern int drm_add_modes_noedid(struct drm_connector *connector,
+                               int hdisplay, int vdisplay);
 #endif /* __DRM_CRTC_H__ */