Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Patrik Jakobsson and committed by
Dave Airlie
1730f89b 352b16a0

+19 -19
+4 -4
drivers/gpu/drm/gma500/framebuffer.c
··· 747 747 748 748 list_for_each_entry(connector, &dev->mode_config.connector_list, 749 749 head) { 750 - struct psb_intel_output *psb_intel_output = 751 - to_psb_intel_output(connector); 752 - struct drm_encoder *encoder = &psb_intel_output->enc; 750 + struct psb_intel_encoder *psb_intel_encoder = 751 + psb_intel_attached_encoder(connector); 752 + struct drm_encoder *encoder = &psb_intel_encoder->base; 753 753 int crtc_mask = 0, clone_mask = 0; 754 754 755 755 /* valid crtcs */ 756 - switch (psb_intel_output->type) { 756 + switch (psb_intel_encoder->type) { 757 757 case INTEL_OUTPUT_ANALOG: 758 758 crtc_mask = (1 << 0); 759 759 clone_mask = (1 << INTEL_OUTPUT_ANALOG);
+3 -3
drivers/gpu/drm/gma500/psb_drv.c
··· 276 276 int ret = -ENOMEM; 277 277 uint32_t tt_pages; 278 278 struct drm_connector *connector; 279 - struct psb_intel_output *psb_intel_output; 279 + struct psb_intel_encoder *psb_intel_encoder; 280 280 281 281 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); 282 282 if (dev_priv == NULL) ··· 390 390 /* Only add backlight support if we have LVDS output */ 391 391 list_for_each_entry(connector, &dev->mode_config.connector_list, 392 392 head) { 393 - psb_intel_output = to_psb_intel_output(connector); 393 + psb_intel_encoder = psb_intel_attached_encoder(connector); 394 394 395 - switch (psb_intel_output->type) { 395 + switch (psb_intel_encoder->type) { 396 396 case INTEL_OUTPUT_LVDS: 397 397 case INTEL_OUTPUT_MIPI: 398 398 ret = gma_backlight_init(dev);
+12 -12
drivers/gpu/drm/gma500/psb_intel_display.c
··· 214 214 215 215 list_for_each_entry(l_entry, &mode_config->connector_list, head) { 216 216 if (l_entry->encoder && l_entry->encoder->crtc == crtc) { 217 - struct psb_intel_output *psb_intel_output = 218 - to_psb_intel_output(l_entry); 219 - if (psb_intel_output->type == type) 217 + struct psb_intel_encoder *psb_intel_encoder = 218 + psb_intel_attached_encoder(l_entry); 219 + if (psb_intel_encoder->type == type) 220 220 return true; 221 221 } 222 222 } ··· 615 615 } 616 616 617 617 list_for_each_entry(connector, &mode_config->connector_list, head) { 618 - struct psb_intel_output *psb_intel_output = 619 - to_psb_intel_output(connector); 618 + struct psb_intel_encoder *psb_intel_encoder = 619 + psb_intel_attached_encoder(connector); 620 620 621 621 if (!connector->encoder 622 622 || connector->encoder->crtc != crtc) 623 623 continue; 624 624 625 - switch (psb_intel_output->type) { 625 + switch (psb_intel_encoder->type) { 626 626 case INTEL_OUTPUT_LVDS: 627 627 is_lvds = true; 628 628 break; ··· 1402 1402 1403 1403 list_for_each_entry(connector, &dev->mode_config.connector_list, 1404 1404 head) { 1405 - struct psb_intel_output *psb_intel_output = 1406 - to_psb_intel_output(connector); 1407 - if (type_mask & (1 << psb_intel_output->type)) 1405 + struct psb_intel_encoder *psb_intel_encoder = 1406 + psb_intel_attached_encoder(connector); 1407 + if (type_mask & (1 << psb_intel_encoder->type)) 1408 1408 index_mask |= (1 << entry); 1409 1409 entry++; 1410 1410 } ··· 1423 1423 */ 1424 1424 struct drm_encoder *psb_intel_best_encoder(struct drm_connector *connector) 1425 1425 { 1426 - struct psb_intel_output *psb_intel_output = 1427 - to_psb_intel_output(connector); 1426 + struct psb_intel_encoder *psb_intel_encoder = 1427 + psb_intel_attached_encoder(connector); 1428 1428 1429 - return &psb_intel_output->enc; 1429 + return &psb_intel_encoder->base; 1430 1430 } 1431 1431 1432 1432 void psb_intel_connector_attach_encoder(struct psb_intel_connector *connector,