diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/cdv_intel_lvds.c')
-rw-r--r-- | drivers/gpu/drm/gma500/cdv_intel_lvds.c | 71 |
1 files changed, 33 insertions, 38 deletions
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c index d81dbc3368f0..20e08e65d46c 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c +++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c | |||
@@ -356,8 +356,7 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder, | |||
356 | { | 356 | { |
357 | struct drm_device *dev = encoder->dev; | 357 | struct drm_device *dev = encoder->dev; |
358 | struct drm_psb_private *dev_priv = dev->dev_private; | 358 | struct drm_psb_private *dev_priv = dev->dev_private; |
359 | struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc( | 359 | struct gma_crtc *gma_crtc = to_gma_crtc(encoder->crtc); |
360 | encoder->crtc); | ||
361 | u32 pfit_control; | 360 | u32 pfit_control; |
362 | 361 | ||
363 | /* | 362 | /* |
@@ -379,7 +378,7 @@ static void cdv_intel_lvds_mode_set(struct drm_encoder *encoder, | |||
379 | else | 378 | else |
380 | pfit_control = 0; | 379 | pfit_control = 0; |
381 | 380 | ||
382 | pfit_control |= psb_intel_crtc->pipe << PFIT_PIPE_SHIFT; | 381 | pfit_control |= gma_crtc->pipe << PFIT_PIPE_SHIFT; |
383 | 382 | ||
384 | if (dev_priv->lvds_dither) | 383 | if (dev_priv->lvds_dither) |
385 | pfit_control |= PANEL_8TO6_DITHER_ENABLE; | 384 | pfit_control |= PANEL_8TO6_DITHER_ENABLE; |
@@ -407,12 +406,11 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector) | |||
407 | { | 406 | { |
408 | struct drm_device *dev = connector->dev; | 407 | struct drm_device *dev = connector->dev; |
409 | struct drm_psb_private *dev_priv = dev->dev_private; | 408 | struct drm_psb_private *dev_priv = dev->dev_private; |
410 | struct psb_intel_encoder *psb_intel_encoder = | 409 | struct gma_encoder *gma_encoder = gma_attached_encoder(connector); |
411 | psb_intel_attached_encoder(connector); | ||
412 | struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; | 410 | struct psb_intel_mode_device *mode_dev = &dev_priv->mode_dev; |
413 | int ret; | 411 | int ret; |
414 | 412 | ||
415 | ret = psb_intel_ddc_get_modes(connector, &psb_intel_encoder->i2c_bus->adapter); | 413 | ret = psb_intel_ddc_get_modes(connector, &gma_encoder->i2c_bus->adapter); |
416 | 414 | ||
417 | if (ret) | 415 | if (ret) |
418 | return ret; | 416 | return ret; |
@@ -444,11 +442,10 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector) | |||
444 | */ | 442 | */ |
445 | static void cdv_intel_lvds_destroy(struct drm_connector *connector) | 443 | static void cdv_intel_lvds_destroy(struct drm_connector *connector) |
446 | { | 444 | { |
447 | struct psb_intel_encoder *psb_intel_encoder = | 445 | struct gma_encoder *gma_encoder = gma_attached_encoder(connector); |
448 | psb_intel_attached_encoder(connector); | ||
449 | 446 | ||
450 | if (psb_intel_encoder->i2c_bus) | 447 | if (gma_encoder->i2c_bus) |
451 | psb_intel_i2c_destroy(psb_intel_encoder->i2c_bus); | 448 | psb_intel_i2c_destroy(gma_encoder->i2c_bus); |
452 | drm_sysfs_connector_remove(connector); | 449 | drm_sysfs_connector_remove(connector); |
453 | drm_connector_cleanup(connector); | 450 | drm_connector_cleanup(connector); |
454 | kfree(connector); | 451 | kfree(connector); |
@@ -461,8 +458,7 @@ static int cdv_intel_lvds_set_property(struct drm_connector *connector, | |||
461 | struct drm_encoder *encoder = connector->encoder; | 458 | struct drm_encoder *encoder = connector->encoder; |
462 | 459 | ||
463 | if (!strcmp(property->name, "scaling mode") && encoder) { | 460 | if (!strcmp(property->name, "scaling mode") && encoder) { |
464 | struct psb_intel_crtc *crtc = | 461 | struct gma_crtc *crtc = to_gma_crtc(encoder->crtc); |
465 | to_psb_intel_crtc(encoder->crtc); | ||
466 | uint64_t curValue; | 462 | uint64_t curValue; |
467 | 463 | ||
468 | if (!crtc) | 464 | if (!crtc) |
@@ -529,7 +525,7 @@ static const struct drm_connector_helper_funcs | |||
529 | cdv_intel_lvds_connector_helper_funcs = { | 525 | cdv_intel_lvds_connector_helper_funcs = { |
530 | .get_modes = cdv_intel_lvds_get_modes, | 526 | .get_modes = cdv_intel_lvds_get_modes, |
531 | .mode_valid = cdv_intel_lvds_mode_valid, | 527 | .mode_valid = cdv_intel_lvds_mode_valid, |
532 | .best_encoder = psb_intel_best_encoder, | 528 | .best_encoder = gma_best_encoder, |
533 | }; | 529 | }; |
534 | 530 | ||
535 | static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = { | 531 | static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = { |
@@ -612,8 +608,8 @@ static bool lvds_is_present_in_vbt(struct drm_device *dev, | |||
612 | void cdv_intel_lvds_init(struct drm_device *dev, | 608 | void cdv_intel_lvds_init(struct drm_device *dev, |
613 | struct psb_intel_mode_device *mode_dev) | 609 | struct psb_intel_mode_device *mode_dev) |
614 | { | 610 | { |
615 | struct psb_intel_encoder *psb_intel_encoder; | 611 | struct gma_encoder *gma_encoder; |
616 | struct psb_intel_connector *psb_intel_connector; | 612 | struct gma_connector *gma_connector; |
617 | struct cdv_intel_lvds_priv *lvds_priv; | 613 | struct cdv_intel_lvds_priv *lvds_priv; |
618 | struct drm_connector *connector; | 614 | struct drm_connector *connector; |
619 | struct drm_encoder *encoder; | 615 | struct drm_encoder *encoder; |
@@ -630,24 +626,24 @@ void cdv_intel_lvds_init(struct drm_device *dev, | |||
630 | return; | 626 | return; |
631 | } | 627 | } |
632 | 628 | ||
633 | psb_intel_encoder = kzalloc(sizeof(struct psb_intel_encoder), | 629 | gma_encoder = kzalloc(sizeof(struct gma_encoder), |
634 | GFP_KERNEL); | 630 | GFP_KERNEL); |
635 | if (!psb_intel_encoder) | 631 | if (!gma_encoder) |
636 | return; | 632 | return; |
637 | 633 | ||
638 | psb_intel_connector = kzalloc(sizeof(struct psb_intel_connector), | 634 | gma_connector = kzalloc(sizeof(struct gma_connector), |
639 | GFP_KERNEL); | 635 | GFP_KERNEL); |
640 | if (!psb_intel_connector) | 636 | if (!gma_connector) |
641 | goto failed_connector; | 637 | goto failed_connector; |
642 | 638 | ||
643 | lvds_priv = kzalloc(sizeof(struct cdv_intel_lvds_priv), GFP_KERNEL); | 639 | lvds_priv = kzalloc(sizeof(struct cdv_intel_lvds_priv), GFP_KERNEL); |
644 | if (!lvds_priv) | 640 | if (!lvds_priv) |
645 | goto failed_lvds_priv; | 641 | goto failed_lvds_priv; |
646 | 642 | ||
647 | psb_intel_encoder->dev_priv = lvds_priv; | 643 | gma_encoder->dev_priv = lvds_priv; |
648 | 644 | ||
649 | connector = &psb_intel_connector->base; | 645 | connector = &gma_connector->base; |
650 | encoder = &psb_intel_encoder->base; | 646 | encoder = &gma_encoder->base; |
651 | 647 | ||
652 | 648 | ||
653 | drm_connector_init(dev, connector, | 649 | drm_connector_init(dev, connector, |
@@ -659,9 +655,8 @@ void cdv_intel_lvds_init(struct drm_device *dev, | |||
659 | DRM_MODE_ENCODER_LVDS); | 655 | DRM_MODE_ENCODER_LVDS); |
660 | 656 | ||
661 | 657 | ||
662 | psb_intel_connector_attach_encoder(psb_intel_connector, | 658 | gma_connector_attach_encoder(gma_connector, gma_encoder); |
663 | psb_intel_encoder); | 659 | gma_encoder->type = INTEL_OUTPUT_LVDS; |
664 | psb_intel_encoder->type = INTEL_OUTPUT_LVDS; | ||
665 | 660 | ||
666 | drm_encoder_helper_add(encoder, &cdv_intel_lvds_helper_funcs); | 661 | drm_encoder_helper_add(encoder, &cdv_intel_lvds_helper_funcs); |
667 | drm_connector_helper_add(connector, | 662 | drm_connector_helper_add(connector, |
@@ -682,16 +677,16 @@ void cdv_intel_lvds_init(struct drm_device *dev, | |||
682 | * Set up I2C bus | 677 | * Set up I2C bus |
683 | * FIXME: distroy i2c_bus when exit | 678 | * FIXME: distroy i2c_bus when exit |
684 | */ | 679 | */ |
685 | psb_intel_encoder->i2c_bus = psb_intel_i2c_create(dev, | 680 | gma_encoder->i2c_bus = psb_intel_i2c_create(dev, |
686 | GPIOB, | 681 | GPIOB, |
687 | "LVDSBLC_B"); | 682 | "LVDSBLC_B"); |
688 | if (!psb_intel_encoder->i2c_bus) { | 683 | if (!gma_encoder->i2c_bus) { |
689 | dev_printk(KERN_ERR, | 684 | dev_printk(KERN_ERR, |
690 | &dev->pdev->dev, "I2C bus registration failed.\n"); | 685 | &dev->pdev->dev, "I2C bus registration failed.\n"); |
691 | goto failed_blc_i2c; | 686 | goto failed_blc_i2c; |
692 | } | 687 | } |
693 | psb_intel_encoder->i2c_bus->slave_addr = 0x2C; | 688 | gma_encoder->i2c_bus->slave_addr = 0x2C; |
694 | dev_priv->lvds_i2c_bus = psb_intel_encoder->i2c_bus; | 689 | dev_priv->lvds_i2c_bus = gma_encoder->i2c_bus; |
695 | 690 | ||
696 | /* | 691 | /* |
697 | * LVDS discovery: | 692 | * LVDS discovery: |
@@ -704,10 +699,10 @@ void cdv_intel_lvds_init(struct drm_device *dev, | |||
704 | */ | 699 | */ |
705 | 700 | ||
706 | /* Set up the DDC bus. */ | 701 | /* Set up the DDC bus. */ |
707 | psb_intel_encoder->ddc_bus = psb_intel_i2c_create(dev, | 702 | gma_encoder->ddc_bus = psb_intel_i2c_create(dev, |
708 | GPIOC, | 703 | GPIOC, |
709 | "LVDSDDC_C"); | 704 | "LVDSDDC_C"); |
710 | if (!psb_intel_encoder->ddc_bus) { | 705 | if (!gma_encoder->ddc_bus) { |
711 | dev_printk(KERN_ERR, &dev->pdev->dev, | 706 | dev_printk(KERN_ERR, &dev->pdev->dev, |
712 | "DDC bus registration " "failed.\n"); | 707 | "DDC bus registration " "failed.\n"); |
713 | goto failed_ddc; | 708 | goto failed_ddc; |
@@ -718,7 +713,7 @@ void cdv_intel_lvds_init(struct drm_device *dev, | |||
718 | * preferred mode is the right one. | 713 | * preferred mode is the right one. |
719 | */ | 714 | */ |
720 | psb_intel_ddc_get_modes(connector, | 715 | psb_intel_ddc_get_modes(connector, |
721 | &psb_intel_encoder->ddc_bus->adapter); | 716 | &gma_encoder->ddc_bus->adapter); |
722 | list_for_each_entry(scan, &connector->probed_modes, head) { | 717 | list_for_each_entry(scan, &connector->probed_modes, head) { |
723 | if (scan->type & DRM_MODE_TYPE_PREFERRED) { | 718 | if (scan->type & DRM_MODE_TYPE_PREFERRED) { |
724 | mode_dev->panel_fixed_mode = | 719 | mode_dev->panel_fixed_mode = |
@@ -782,19 +777,19 @@ out: | |||
782 | 777 | ||
783 | failed_find: | 778 | failed_find: |
784 | printk(KERN_ERR "Failed find\n"); | 779 | printk(KERN_ERR "Failed find\n"); |
785 | if (psb_intel_encoder->ddc_bus) | 780 | if (gma_encoder->ddc_bus) |
786 | psb_intel_i2c_destroy(psb_intel_encoder->ddc_bus); | 781 | psb_intel_i2c_destroy(gma_encoder->ddc_bus); |
787 | failed_ddc: | 782 | failed_ddc: |
788 | printk(KERN_ERR "Failed DDC\n"); | 783 | printk(KERN_ERR "Failed DDC\n"); |
789 | if (psb_intel_encoder->i2c_bus) | 784 | if (gma_encoder->i2c_bus) |
790 | psb_intel_i2c_destroy(psb_intel_encoder->i2c_bus); | 785 | psb_intel_i2c_destroy(gma_encoder->i2c_bus); |
791 | failed_blc_i2c: | 786 | failed_blc_i2c: |
792 | printk(KERN_ERR "Failed BLC\n"); | 787 | printk(KERN_ERR "Failed BLC\n"); |
793 | drm_encoder_cleanup(encoder); | 788 | drm_encoder_cleanup(encoder); |
794 | drm_connector_cleanup(connector); | 789 | drm_connector_cleanup(connector); |
795 | kfree(lvds_priv); | 790 | kfree(lvds_priv); |
796 | failed_lvds_priv: | 791 | failed_lvds_priv: |
797 | kfree(psb_intel_connector); | 792 | kfree(gma_connector); |
798 | failed_connector: | 793 | failed_connector: |
799 | kfree(psb_intel_encoder); | 794 | kfree(gma_encoder); |
800 | } | 795 | } |