Commit 1730f89b authored by Patrik Jakobsson's avatar Patrik Jakobsson Committed by Dave Airlie
Browse files

gma500: Fix encoder type checking for connectors



Fix cases where we need to know what encoder type is behind a given connector.
Signed-off-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 352b16a0
...@@ -747,13 +747,13 @@ static void psb_setup_outputs(struct drm_device *dev) ...@@ -747,13 +747,13 @@ static void psb_setup_outputs(struct drm_device *dev)
list_for_each_entry(connector, &dev->mode_config.connector_list, list_for_each_entry(connector, &dev->mode_config.connector_list,
head) { head) {
struct psb_intel_output *psb_intel_output = struct psb_intel_encoder *psb_intel_encoder =
to_psb_intel_output(connector); psb_intel_attached_encoder(connector);
struct drm_encoder *encoder = &psb_intel_output->enc; struct drm_encoder *encoder = &psb_intel_encoder->base;
int crtc_mask = 0, clone_mask = 0; int crtc_mask = 0, clone_mask = 0;
/* valid crtcs */ /* valid crtcs */
switch (psb_intel_output->type) { switch (psb_intel_encoder->type) {
case INTEL_OUTPUT_ANALOG: case INTEL_OUTPUT_ANALOG:
crtc_mask = (1 << 0); crtc_mask = (1 << 0);
clone_mask = (1 << INTEL_OUTPUT_ANALOG); clone_mask = (1 << INTEL_OUTPUT_ANALOG);
......
...@@ -276,7 +276,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) ...@@ -276,7 +276,7 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
int ret = -ENOMEM; int ret = -ENOMEM;
uint32_t tt_pages; uint32_t tt_pages;
struct drm_connector *connector; struct drm_connector *connector;
struct psb_intel_output *psb_intel_output; struct psb_intel_encoder *psb_intel_encoder;
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
if (dev_priv == NULL) if (dev_priv == NULL)
...@@ -390,9 +390,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset) ...@@ -390,9 +390,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
/* Only add backlight support if we have LVDS output */ /* Only add backlight support if we have LVDS output */
list_for_each_entry(connector, &dev->mode_config.connector_list, list_for_each_entry(connector, &dev->mode_config.connector_list,
head) { head) {
psb_intel_output = to_psb_intel_output(connector); psb_intel_encoder = psb_intel_attached_encoder(connector);
switch (psb_intel_output->type) { switch (psb_intel_encoder->type) {
case INTEL_OUTPUT_LVDS: case INTEL_OUTPUT_LVDS:
case INTEL_OUTPUT_MIPI: case INTEL_OUTPUT_MIPI:
ret = gma_backlight_init(dev); ret = gma_backlight_init(dev);
......
...@@ -214,9 +214,9 @@ bool psb_intel_pipe_has_type(struct drm_crtc *crtc, int type) ...@@ -214,9 +214,9 @@ bool psb_intel_pipe_has_type(struct drm_crtc *crtc, int type)
list_for_each_entry(l_entry, &mode_config->connector_list, head) { list_for_each_entry(l_entry, &mode_config->connector_list, head) {
if (l_entry->encoder && l_entry->encoder->crtc == crtc) { if (l_entry->encoder && l_entry->encoder->crtc == crtc) {
struct psb_intel_output *psb_intel_output = struct psb_intel_encoder *psb_intel_encoder =
to_psb_intel_output(l_entry); psb_intel_attached_encoder(l_entry);
if (psb_intel_output->type == type) if (psb_intel_encoder->type == type)
return true; return true;
} }
} }
...@@ -615,14 +615,14 @@ static int psb_intel_crtc_mode_set(struct drm_crtc *crtc, ...@@ -615,14 +615,14 @@ static int psb_intel_crtc_mode_set(struct drm_crtc *crtc,
} }
list_for_each_entry(connector, &mode_config->connector_list, head) { list_for_each_entry(connector, &mode_config->connector_list, head) {
struct psb_intel_output *psb_intel_output = struct psb_intel_encoder *psb_intel_encoder =
to_psb_intel_output(connector); psb_intel_attached_encoder(connector);
if (!connector->encoder if (!connector->encoder
|| connector->encoder->crtc != crtc) || connector->encoder->crtc != crtc)
continue; continue;
switch (psb_intel_output->type) { switch (psb_intel_encoder->type) {
case INTEL_OUTPUT_LVDS: case INTEL_OUTPUT_LVDS:
is_lvds = true; is_lvds = true;
break; break;
...@@ -1402,9 +1402,9 @@ int psb_intel_connector_clones(struct drm_device *dev, int type_mask) ...@@ -1402,9 +1402,9 @@ int psb_intel_connector_clones(struct drm_device *dev, int type_mask)
list_for_each_entry(connector, &dev->mode_config.connector_list, list_for_each_entry(connector, &dev->mode_config.connector_list,
head) { head) {
struct psb_intel_output *psb_intel_output = struct psb_intel_encoder *psb_intel_encoder =
to_psb_intel_output(connector); psb_intel_attached_encoder(connector);
if (type_mask & (1 << psb_intel_output->type)) if (type_mask & (1 << psb_intel_encoder->type))
index_mask |= (1 << entry); index_mask |= (1 << entry);
entry++; entry++;
} }
...@@ -1423,10 +1423,10 @@ void psb_intel_modeset_cleanup(struct drm_device *dev) ...@@ -1423,10 +1423,10 @@ void psb_intel_modeset_cleanup(struct drm_device *dev)
*/ */
struct drm_encoder *psb_intel_best_encoder(struct drm_connector *connector) struct drm_encoder *psb_intel_best_encoder(struct drm_connector *connector)
{ {
struct psb_intel_output *psb_intel_output = struct psb_intel_encoder *psb_intel_encoder =
to_psb_intel_output(connector); psb_intel_attached_encoder(connector);
return &psb_intel_output->enc; return &psb_intel_encoder->base;
} }
void psb_intel_connector_attach_encoder(struct psb_intel_connector *connector, void psb_intel_connector_attach_encoder(struct psb_intel_connector *connector,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment