summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/gma500/oaktrail_hdmi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/gma500/oaktrail_hdmi.c')
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_hdmi.c43
1 files changed, 18 insertions, 25 deletions
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
index f036f1fc161e..38153143ed8c 100644
--- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
+++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
@@ -155,12 +155,6 @@ static void oaktrail_hdmi_audio_disable(struct drm_device *dev)
155 HDMI_READ(HDMI_HCR); 155 HDMI_READ(HDMI_HCR);
156} 156}
157 157
158static void wait_for_vblank(struct drm_device *dev)
159{
160 /* Wait for 20ms, i.e. one cycle at 50hz. */
161 mdelay(20);
162}
163
164static unsigned int htotal_calculate(struct drm_display_mode *mode) 158static unsigned int htotal_calculate(struct drm_display_mode *mode)
165{ 159{
166 u32 htotal, new_crtc_htotal; 160 u32 htotal, new_crtc_htotal;
@@ -372,10 +366,10 @@ int oaktrail_crtc_hdmi_mode_set(struct drm_crtc *crtc,
372 366
373 REG_WRITE(PCH_PIPEBCONF, pipeconf); 367 REG_WRITE(PCH_PIPEBCONF, pipeconf);
374 REG_READ(PCH_PIPEBCONF); 368 REG_READ(PCH_PIPEBCONF);
375 wait_for_vblank(dev); 369 gma_wait_for_vblank(dev);
376 370
377 REG_WRITE(dspcntr_reg, dspcntr); 371 REG_WRITE(dspcntr_reg, dspcntr);
378 wait_for_vblank(dev); 372 gma_wait_for_vblank(dev);
379 373
380 gma_power_end(dev); 374 gma_power_end(dev);
381 375
@@ -459,7 +453,7 @@ void oaktrail_crtc_hdmi_dpms(struct drm_crtc *crtc, int mode)
459 REG_READ(PCH_PIPEBCONF); 453 REG_READ(PCH_PIPEBCONF);
460 } 454 }
461 455
462 wait_for_vblank(dev); 456 gma_wait_for_vblank(dev);
463 457
464 /* Enable plane */ 458 /* Enable plane */
465 temp = REG_READ(DSPBCNTR); 459 temp = REG_READ(DSPBCNTR);
@@ -470,7 +464,7 @@ void oaktrail_crtc_hdmi_dpms(struct drm_crtc *crtc, int mode)
470 REG_READ(DSPBSURF); 464 REG_READ(DSPBSURF);
471 } 465 }
472 466
473 psb_intel_crtc_load_lut(crtc); 467 gma_crtc_load_lut(crtc);
474 } 468 }
475 469
476 /* DSPARB */ 470 /* DSPARB */
@@ -615,16 +609,16 @@ static void oaktrail_hdmi_destroy(struct drm_connector *connector)
615static const struct drm_encoder_helper_funcs oaktrail_hdmi_helper_funcs = { 609static const struct drm_encoder_helper_funcs oaktrail_hdmi_helper_funcs = {
616 .dpms = oaktrail_hdmi_dpms, 610 .dpms = oaktrail_hdmi_dpms,
617 .mode_fixup = oaktrail_hdmi_mode_fixup, 611 .mode_fixup = oaktrail_hdmi_mode_fixup,
618 .prepare = psb_intel_encoder_prepare, 612 .prepare = gma_encoder_prepare,
619 .mode_set = oaktrail_hdmi_mode_set, 613 .mode_set = oaktrail_hdmi_mode_set,
620 .commit = psb_intel_encoder_commit, 614 .commit = gma_encoder_commit,
621}; 615};
622 616
623static const struct drm_connector_helper_funcs 617static const struct drm_connector_helper_funcs
624 oaktrail_hdmi_connector_helper_funcs = { 618 oaktrail_hdmi_connector_helper_funcs = {
625 .get_modes = oaktrail_hdmi_get_modes, 619 .get_modes = oaktrail_hdmi_get_modes,
626 .mode_valid = oaktrail_hdmi_mode_valid, 620 .mode_valid = oaktrail_hdmi_mode_valid,
627 .best_encoder = psb_intel_best_encoder, 621 .best_encoder = gma_best_encoder,
628}; 622};
629 623
630static const struct drm_connector_funcs oaktrail_hdmi_connector_funcs = { 624static const struct drm_connector_funcs oaktrail_hdmi_connector_funcs = {
@@ -646,21 +640,21 @@ static const struct drm_encoder_funcs oaktrail_hdmi_enc_funcs = {
646void oaktrail_hdmi_init(struct drm_device *dev, 640void oaktrail_hdmi_init(struct drm_device *dev,
647 struct psb_intel_mode_device *mode_dev) 641 struct psb_intel_mode_device *mode_dev)
648{ 642{
649 struct psb_intel_encoder *psb_intel_encoder; 643 struct gma_encoder *gma_encoder;
650 struct psb_intel_connector *psb_intel_connector; 644 struct gma_connector *gma_connector;
651 struct drm_connector *connector; 645 struct drm_connector *connector;
652 struct drm_encoder *encoder; 646 struct drm_encoder *encoder;
653 647
654 psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), GFP_KERNEL); 648 gma_encoder = kzalloc(sizeof(struct gma_encoder), GFP_KERNEL);
655 if (!psb_intel_encoder) 649 if (!gma_encoder)
656 return; 650 return;
657 651
658 psb_intel_connector = kzalloc(sizeof(struct psb_intel_connector), GFP_KERNEL); 652 gma_connector = kzalloc(sizeof(struct gma_connector), GFP_KERNEL);
659 if (!psb_intel_connector) 653 if (!gma_connector)
660 goto failed_connector; 654 goto failed_connector;
661 655
662 connector = &psb_intel_connector->base; 656 connector = &gma_connector->base;
663 encoder = &psb_intel_encoder->base; 657 encoder = &gma_encoder->base;
664 drm_connector_init(dev, connector, 658 drm_connector_init(dev, connector,
665 &oaktrail_hdmi_connector_funcs, 659 &oaktrail_hdmi_connector_funcs,
666 DRM_MODE_CONNECTOR_DVID); 660 DRM_MODE_CONNECTOR_DVID);
@@ -669,10 +663,9 @@ void oaktrail_hdmi_init(struct drm_device *dev,
669 &oaktrail_hdmi_enc_funcs, 663 &oaktrail_hdmi_enc_funcs,
670 DRM_MODE_ENCODER_TMDS); 664 DRM_MODE_ENCODER_TMDS);
671 665
672 psb_intel_connector_attach_encoder(psb_intel_connector, 666 gma_connector_attach_encoder(gma_connector, gma_encoder);
673 psb_intel_encoder);
674 667
675 psb_intel_encoder->type = INTEL_OUTPUT_HDMI; 668 gma_encoder->type = INTEL_OUTPUT_HDMI;
676 drm_encoder_helper_add(encoder, &oaktrail_hdmi_helper_funcs); 669 drm_encoder_helper_add(encoder, &oaktrail_hdmi_helper_funcs);
677 drm_connector_helper_add(connector, &oaktrail_hdmi_connector_helper_funcs); 670 drm_connector_helper_add(connector, &oaktrail_hdmi_connector_helper_funcs);
678 671
@@ -685,7 +678,7 @@ void oaktrail_hdmi_init(struct drm_device *dev,
685 return; 678 return;
686 679
687failed_connector: 680failed_connector:
688 kfree(psb_intel_encoder); 681 kfree(gma_encoder);
689} 682}
690 683
691static DEFINE_PCI_DEVICE_TABLE(hdmi_ids) = { 684static DEFINE_PCI_DEVICE_TABLE(hdmi_ids) = {