summaryrefslogtreecommitdiff
path: root/shared-core
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2008-06-02 12:58:10 +1000
committerDave Airlie <airlied@redhat.com>2008-06-02 12:58:10 +1000
commiteba6cdc936cb33d929997ccb9bade6f75bb40670 (patch)
tree8fc95131e711155fe4e5613e5c0029cf71054e5e /shared-core
parentefb48c6cf7bbb57e7b2ea6ce7671905e84384963 (diff)
parent7fec6c0e2a2457925b88ed3bd70d9defde77b81b (diff)
Merge branch 'modesetting-101-encoders' into modesetting-101
Diffstat (limited to 'shared-core')
-rw-r--r--shared-core/drm.h66
-rw-r--r--shared-core/i915_irq.c46
2 files changed, 62 insertions, 50 deletions
diff --git a/shared-core/drm.h b/shared-core/drm.h
index eb2033c7..7e94fb82 100644
--- a/shared-core/drm.h
+++ b/shared-core/drm.h
@@ -558,7 +558,7 @@ union drm_wait_vblank {
/* Handle monitor hotplug.
*
* May want to extend this later to pass reply information which
- * details the outputs which generated the hotplug event.
+ * details the connectors which generated the hotplug event.
* Some chipsets can't determine that though, and we'd need to leave
* it to the higher levels to determine exactly what changed.
*/
@@ -998,7 +998,7 @@ struct drm_mm_info_arg {
* Drm mode setting
*/
#define DRM_DISPLAY_INFO_LEN 32
-#define DRM_OUTPUT_NAME_LEN 32
+#define DRM_CONNECTOR_NAME_LEN 32
#define DRM_DISPLAY_MODE_LEN 32
#define DRM_PROP_NAME_LEN 32
@@ -1025,58 +1025,69 @@ struct drm_mode_modeinfo {
struct drm_mode_card_res {
uint64_t fb_id_ptr;
uint64_t crtc_id_ptr;
- uint64_t output_id_ptr;
+ uint64_t connector_id_ptr;
+ uint64_t encoder_id_ptr;
int count_fbs;
int count_crtcs;
- int count_outputs;
+ int count_connectors;
+ int count_encoders;
int min_width, max_width;
int min_height, max_height;
};
struct drm_mode_crtc {
- uint64_t set_outputs_ptr;
+ uint64_t set_connectors_ptr;
unsigned int crtc_id; /**< Id */
unsigned int fb_id; /**< Id of framebuffer */
int x, y; /**< Position on the frameuffer */
- int count_outputs;
- unsigned int outputs; /**< Outputs that are connected */
+ int count_connectors;
+ unsigned int connectors; /**< Connectors that are connected */
int count_possibles;
- unsigned int possibles; /**< Outputs that can be connected */
+ unsigned int possibles; /**< Connectors that can be connected */
int gamma_size;
int mode_valid;
struct drm_mode_modeinfo mode;
};
-#define DRM_MODE_OUTPUT_NONE 0
-#define DRM_MODE_OUTPUT_DAC 1
-#define DRM_MODE_OUTPUT_TMDS 2
-#define DRM_MODE_OUTPUT_LVDS 3
-#define DRM_MODE_OUTPUT_TVDAC 4
+struct drm_mode_get_encoder {
-struct drm_mode_get_output {
+ uint32_t encoder_type;
+ uint32_t encoder_id;
+ unsigned int crtc; /**< Id of crtc */
+ uint32_t crtcs;
+ uint32_t clones;
+};
+
+#define DRM_MODE_ENCODER_NONE 0
+#define DRM_MODE_ENCODER_DAC 1
+#define DRM_MODE_ENCODER_TMDS 2
+#define DRM_MODE_ENCODER_LVDS 3
+#define DRM_MODE_ENCODER_TVDAC 4
+
+struct drm_mode_get_connector {
+
+ uint64_t encoders_ptr;
uint64_t modes_ptr;
uint64_t props_ptr;
uint64_t prop_values_ptr;
int count_modes;
int count_props;
- unsigned int output; /**< Id */
- unsigned int crtc; /**< Id of crtc */
- unsigned int output_type;
- unsigned int output_type_id;
+ int count_encoders;
+
+ unsigned int encoder; /**< Current Encoder */
+ unsigned int connector; /**< Id */
+ unsigned int connector_type;
+ unsigned int connector_type_id;
unsigned int connection;
unsigned int mm_width, mm_height; /**< HxW in millimeters */
unsigned int subpixel;
- int count_crtcs;
- int count_clones;
- unsigned int crtcs; /**< possible crtc to connect to */
- unsigned int clones; /**< list of clones */
};
#define DRM_MODE_PROP_PENDING (1<<0)
@@ -1102,10 +1113,10 @@ struct drm_mode_get_property {
int count_enum_blobs;
};
-struct drm_mode_output_set_property {
+struct drm_mode_connector_set_property {
uint64_t value;
unsigned int prop_id;
- unsigned int output_id;
+ unsigned int connector_id;
};
struct drm_mode_get_blob {
@@ -1124,7 +1135,7 @@ struct drm_mode_fb_cmd {
};
struct drm_mode_mode_cmd {
- unsigned int output_id;
+ unsigned int connector_id;
struct drm_mode_modeinfo mode;
};
@@ -1260,13 +1271,13 @@ struct drm_mode_hotplug {
#define DRM_IOCTL_MODE_GETRESOURCES DRM_IOWR(0xA0, struct drm_mode_card_res)
#define DRM_IOCTL_MODE_GETCRTC DRM_IOWR(0xA1, struct drm_mode_crtc)
-#define DRM_IOCTL_MODE_GETOUTPUT DRM_IOWR(0xA2, struct drm_mode_get_output)
+#define DRM_IOCTL_MODE_GETCONNECTOR DRM_IOWR(0xA2, struct drm_mode_get_connector)
#define DRM_IOCTL_MODE_SETCRTC DRM_IOWR(0xA3, struct drm_mode_crtc)
#define DRM_IOCTL_MODE_ADDFB DRM_IOWR(0xA4, struct drm_mode_fb_cmd)
#define DRM_IOCTL_MODE_RMFB DRM_IOWR(0xA5, unsigned int)
#define DRM_IOCTL_MODE_GETFB DRM_IOWR(0xA6, struct drm_mode_fb_cmd)
-#define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xA7, struct drm_mode_output_set_property)
+#define DRM_IOCTL_MODE_SETPROPERTY DRM_IOWR(0xA7, struct drm_mode_connector_set_property)
#define DRM_IOCTL_MODE_GETPROPBLOB DRM_IOWR(0xA8, struct drm_mode_get_blob)
#define DRM_IOCTL_MODE_ATTACHMODE DRM_IOWR(0xA9, struct drm_mode_mode_cmd)
#define DRM_IOCTL_MODE_DETACHMODE DRM_IOWR(0xAA, struct drm_mode_mode_cmd)
@@ -1277,6 +1288,7 @@ struct drm_mode_hotplug {
#define DRM_IOCTL_WAIT_HOTPLUG DRM_IOWR(0xAE, union drm_wait_hotplug)
#define DRM_IOCTL_MODE_REPLACEFB DRM_IOWR(0xAF, struct drm_mode_fb_cmd)
+#define DRM_IOCTL_MODE_GETENCODER DRM_IOWR(0xB0, struct drm_mode_get_encoder)
/*@}*/
/**
diff --git a/shared-core/i915_irq.c b/shared-core/i915_irq.c
index abf916ed..4c147a08 100644
--- a/shared-core/i915_irq.c
+++ b/shared-core/i915_irq.c
@@ -453,15 +453,15 @@ static spinlock_t hotplug_lock = SPIN_LOCK_UNLOCKED;
static void i915_hotplug_tv(struct drm_device *dev)
{
- struct drm_output *output;
+ struct drm_connector *connector;
struct intel_output *iout;
- enum drm_output_status status;
+ enum drm_connector_status status;
mutex_lock(&dev->mode_config.mutex);
/* find the crt output */
- list_for_each_entry(output, &dev->mode_config.output_list, head) {
- iout = to_intel_output(output);
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ iout = to_intel_output(connector);
if (iout->type == INTEL_OUTPUT_TVOUT)
break;
else
@@ -471,9 +471,9 @@ static void i915_hotplug_tv(struct drm_device *dev)
if (iout == 0)
goto unlock;
- status = output->funcs->detect(output);
- drm_helper_hotplug_stage_two(dev, output,
- status == output_status_connected ? 1 : 0);
+ status = connector->funcs->detect(connector);
+ drm_helper_hotplug_stage_two(dev, connector,
+ status == connector_status_connected ? 1 : 0);
unlock:
mutex_unlock(&dev->mode_config.mutex);
@@ -481,14 +481,14 @@ unlock:
static void i915_hotplug_crt(struct drm_device *dev, bool isconnected)
{
- struct drm_output *output;
+ struct drm_connector *connector;
struct intel_output *iout;
mutex_lock(&dev->mode_config.mutex);
/* find the crt output */
- list_for_each_entry(output, &dev->mode_config.output_list, head) {
- iout = to_intel_output(output);
+ list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+ iout = to_intel_output(connector);
if (iout->type == INTEL_OUTPUT_ANALOG)
break;
else
@@ -498,7 +498,7 @@ static void i915_hotplug_crt(struct drm_device *dev, bool isconnected)
if (iout == 0)
goto unlock;
- drm_helper_hotplug_stage_two(dev, output, isconnected);
+ drm_helper_hotplug_stage_two(dev, connector, isconnected);
unlock:
mutex_unlock(&dev->mode_config.mutex);
@@ -506,24 +506,24 @@ unlock:
static void i915_hotplug_sdvo(struct drm_device *dev, int sdvoB)
{
- struct drm_output *output = 0;
- enum drm_output_status status;
+ struct drm_connector *connector = 0;
+ enum drm_connector_status status;
mutex_lock(&dev->mode_config.mutex);
- output = intel_sdvo_find(dev, sdvoB);
+ connector = intel_sdvo_find(dev, sdvoB);
- if (!output)
+ if (!connector)
goto unlock;
- status = output->funcs->detect(output);
+ status = connector->funcs->detect(connector);
- if (status != output_status_connected)
- drm_helper_hotplug_stage_two(dev, output, false);
+ if (status != connector_status_connected)
+ drm_helper_hotplug_stage_two(dev, connector, false);
else
- drm_helper_hotplug_stage_two(dev, output, true);
+ drm_helper_hotplug_stage_two(dev, connector, true);
- intel_sdvo_set_hotplug(output, 1);
+ intel_sdvo_set_hotplug(connector, 1);
unlock:
mutex_unlock(&dev->mode_config.mutex);
@@ -961,15 +961,15 @@ void i915_disable_vblank(struct drm_device *dev, int plane)
void i915_enable_interrupt (struct drm_device *dev)
{
struct drm_i915_private *dev_priv = (struct drm_i915_private *) dev->dev_private;
- struct drm_output *o;
+ struct drm_connector *o;
dev_priv->irq_enable_reg |= I915_USER_INTERRUPT;
if (IS_I9XX(dev) && !IS_I915G(dev) && !IS_I915GM(dev)) {
- if (dev->mode_config.num_output)
+ if (dev->mode_config.num_connector)
dev_priv->irq_enable_reg |= I915_DISPLAY_PORT_INTERRUPT;
} else {
- if (dev->mode_config.num_output)
+ if (dev->mode_config.num_connector)
dev_priv->irq_enable_reg |= I915_DISPLAY_PIPE_A_EVENT_INTERRUPT;
/* Enable global interrupts for hotplug - not a pipeA event */