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: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
352b16a0e1
commit
1730f89bfc
3 changed files with 19 additions and 19 deletions
|
@ -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)
|
||||||
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)
|
||||||
/* 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)
|
||||||
|
|
||||||
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,
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
*/
|
*/
|
||||||
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,
|
||||||
|
|
Loading…
Reference in a new issue