diff options
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 156 |
1 files changed, 58 insertions, 98 deletions
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index f5b4c98de608..21ee6477bf98 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
@@ -461,8 +461,7 @@ static inline u32 scale_hw_to_user(struct intel_connector *connector, | |||
461 | static u32 intel_panel_compute_brightness(struct intel_connector *connector, | 461 | static u32 intel_panel_compute_brightness(struct intel_connector *connector, |
462 | u32 val) | 462 | u32 val) |
463 | { | 463 | { |
464 | struct drm_device *dev = connector->base.dev; | 464 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
465 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
466 | struct intel_panel *panel = &connector->panel; | 465 | struct intel_panel *panel = &connector->panel; |
467 | 466 | ||
468 | WARN_ON(panel->backlight.max == 0); | 467 | WARN_ON(panel->backlight.max == 0); |
@@ -480,45 +479,40 @@ static u32 intel_panel_compute_brightness(struct intel_connector *connector, | |||
480 | 479 | ||
481 | static u32 lpt_get_backlight(struct intel_connector *connector) | 480 | static u32 lpt_get_backlight(struct intel_connector *connector) |
482 | { | 481 | { |
483 | struct drm_device *dev = connector->base.dev; | 482 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
484 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
485 | 483 | ||
486 | return I915_READ(BLC_PWM_PCH_CTL2) & BACKLIGHT_DUTY_CYCLE_MASK; | 484 | return I915_READ(BLC_PWM_PCH_CTL2) & BACKLIGHT_DUTY_CYCLE_MASK; |
487 | } | 485 | } |
488 | 486 | ||
489 | static u32 pch_get_backlight(struct intel_connector *connector) | 487 | static u32 pch_get_backlight(struct intel_connector *connector) |
490 | { | 488 | { |
491 | struct drm_device *dev = connector->base.dev; | 489 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
492 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
493 | 490 | ||
494 | return I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; | 491 | return I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
495 | } | 492 | } |
496 | 493 | ||
497 | static u32 i9xx_get_backlight(struct intel_connector *connector) | 494 | static u32 i9xx_get_backlight(struct intel_connector *connector) |
498 | { | 495 | { |
499 | struct drm_device *dev = connector->base.dev; | 496 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
500 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
501 | struct intel_panel *panel = &connector->panel; | 497 | struct intel_panel *panel = &connector->panel; |
502 | u32 val; | 498 | u32 val; |
503 | 499 | ||
504 | val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; | 500 | val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; |
505 | if (INTEL_INFO(dev)->gen < 4) | 501 | if (INTEL_INFO(dev_priv)->gen < 4) |
506 | val >>= 1; | 502 | val >>= 1; |
507 | 503 | ||
508 | if (panel->backlight.combination_mode) { | 504 | if (panel->backlight.combination_mode) { |
509 | u8 lbpc; | 505 | u8 lbpc; |
510 | 506 | ||
511 | pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc); | 507 | pci_read_config_byte(dev_priv->dev->pdev, PCI_LBPC, &lbpc); |
512 | val *= lbpc; | 508 | val *= lbpc; |
513 | } | 509 | } |
514 | 510 | ||
515 | return val; | 511 | return val; |
516 | } | 512 | } |
517 | 513 | ||
518 | static u32 _vlv_get_backlight(struct drm_device *dev, enum pipe pipe) | 514 | static u32 _vlv_get_backlight(struct drm_i915_private *dev_priv, enum pipe pipe) |
519 | { | 515 | { |
520 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
521 | |||
522 | if (WARN_ON(pipe != PIPE_A && pipe != PIPE_B)) | 516 | if (WARN_ON(pipe != PIPE_A && pipe != PIPE_B)) |
523 | return 0; | 517 | return 0; |
524 | 518 | ||
@@ -527,17 +521,16 @@ static u32 _vlv_get_backlight(struct drm_device *dev, enum pipe pipe) | |||
527 | 521 | ||
528 | static u32 vlv_get_backlight(struct intel_connector *connector) | 522 | static u32 vlv_get_backlight(struct intel_connector *connector) |
529 | { | 523 | { |
530 | struct drm_device *dev = connector->base.dev; | 524 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
531 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 525 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
532 | 526 | ||
533 | return _vlv_get_backlight(dev, pipe); | 527 | return _vlv_get_backlight(dev_priv, pipe); |
534 | } | 528 | } |
535 | 529 | ||
536 | static u32 bxt_get_backlight(struct intel_connector *connector) | 530 | static u32 bxt_get_backlight(struct intel_connector *connector) |
537 | { | 531 | { |
538 | struct drm_device *dev = connector->base.dev; | 532 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
539 | struct intel_panel *panel = &connector->panel; | 533 | struct intel_panel *panel = &connector->panel; |
540 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
541 | 534 | ||
542 | return I915_READ(BXT_BLC_PWM_DUTY(panel->backlight.controller)); | 535 | return I915_READ(BXT_BLC_PWM_DUTY(panel->backlight.controller)); |
543 | } | 536 | } |
@@ -553,8 +546,7 @@ static u32 pwm_get_backlight(struct intel_connector *connector) | |||
553 | 546 | ||
554 | static u32 intel_panel_get_backlight(struct intel_connector *connector) | 547 | static u32 intel_panel_get_backlight(struct intel_connector *connector) |
555 | { | 548 | { |
556 | struct drm_device *dev = connector->base.dev; | 549 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
557 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
558 | struct intel_panel *panel = &connector->panel; | 550 | struct intel_panel *panel = &connector->panel; |
559 | u32 val = 0; | 551 | u32 val = 0; |
560 | 552 | ||
@@ -573,16 +565,14 @@ static u32 intel_panel_get_backlight(struct intel_connector *connector) | |||
573 | 565 | ||
574 | static void lpt_set_backlight(struct intel_connector *connector, u32 level) | 566 | static void lpt_set_backlight(struct intel_connector *connector, u32 level) |
575 | { | 567 | { |
576 | struct drm_device *dev = connector->base.dev; | 568 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
577 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
578 | u32 val = I915_READ(BLC_PWM_PCH_CTL2) & ~BACKLIGHT_DUTY_CYCLE_MASK; | 569 | u32 val = I915_READ(BLC_PWM_PCH_CTL2) & ~BACKLIGHT_DUTY_CYCLE_MASK; |
579 | I915_WRITE(BLC_PWM_PCH_CTL2, val | level); | 570 | I915_WRITE(BLC_PWM_PCH_CTL2, val | level); |
580 | } | 571 | } |
581 | 572 | ||
582 | static void pch_set_backlight(struct intel_connector *connector, u32 level) | 573 | static void pch_set_backlight(struct intel_connector *connector, u32 level) |
583 | { | 574 | { |
584 | struct drm_device *dev = connector->base.dev; | 575 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
585 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
586 | u32 tmp; | 576 | u32 tmp; |
587 | 577 | ||
588 | tmp = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; | 578 | tmp = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; |
@@ -591,8 +581,7 @@ static void pch_set_backlight(struct intel_connector *connector, u32 level) | |||
591 | 581 | ||
592 | static void i9xx_set_backlight(struct intel_connector *connector, u32 level) | 582 | static void i9xx_set_backlight(struct intel_connector *connector, u32 level) |
593 | { | 583 | { |
594 | struct drm_device *dev = connector->base.dev; | 584 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
595 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
596 | struct intel_panel *panel = &connector->panel; | 585 | struct intel_panel *panel = &connector->panel; |
597 | u32 tmp, mask; | 586 | u32 tmp, mask; |
598 | 587 | ||
@@ -603,10 +592,10 @@ static void i9xx_set_backlight(struct intel_connector *connector, u32 level) | |||
603 | 592 | ||
604 | lbpc = level * 0xfe / panel->backlight.max + 1; | 593 | lbpc = level * 0xfe / panel->backlight.max + 1; |
605 | level /= lbpc; | 594 | level /= lbpc; |
606 | pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc); | 595 | pci_write_config_byte(dev_priv->dev->pdev, PCI_LBPC, lbpc); |
607 | } | 596 | } |
608 | 597 | ||
609 | if (IS_GEN4(dev)) { | 598 | if (IS_GEN4(dev_priv)) { |
610 | mask = BACKLIGHT_DUTY_CYCLE_MASK; | 599 | mask = BACKLIGHT_DUTY_CYCLE_MASK; |
611 | } else { | 600 | } else { |
612 | level <<= 1; | 601 | level <<= 1; |
@@ -619,8 +608,7 @@ static void i9xx_set_backlight(struct intel_connector *connector, u32 level) | |||
619 | 608 | ||
620 | static void vlv_set_backlight(struct intel_connector *connector, u32 level) | 609 | static void vlv_set_backlight(struct intel_connector *connector, u32 level) |
621 | { | 610 | { |
622 | struct drm_device *dev = connector->base.dev; | 611 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
623 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
624 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 612 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
625 | u32 tmp; | 613 | u32 tmp; |
626 | 614 | ||
@@ -633,8 +621,7 @@ static void vlv_set_backlight(struct intel_connector *connector, u32 level) | |||
633 | 621 | ||
634 | static void bxt_set_backlight(struct intel_connector *connector, u32 level) | 622 | static void bxt_set_backlight(struct intel_connector *connector, u32 level) |
635 | { | 623 | { |
636 | struct drm_device *dev = connector->base.dev; | 624 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
637 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
638 | struct intel_panel *panel = &connector->panel; | 625 | struct intel_panel *panel = &connector->panel; |
639 | 626 | ||
640 | I915_WRITE(BXT_BLC_PWM_DUTY(panel->backlight.controller), level); | 627 | I915_WRITE(BXT_BLC_PWM_DUTY(panel->backlight.controller), level); |
@@ -663,8 +650,7 @@ intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level) | |||
663 | static void intel_panel_set_backlight(struct intel_connector *connector, | 650 | static void intel_panel_set_backlight(struct intel_connector *connector, |
664 | u32 user_level, u32 user_max) | 651 | u32 user_level, u32 user_max) |
665 | { | 652 | { |
666 | struct drm_device *dev = connector->base.dev; | 653 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
667 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
668 | struct intel_panel *panel = &connector->panel; | 654 | struct intel_panel *panel = &connector->panel; |
669 | u32 hw_level; | 655 | u32 hw_level; |
670 | 656 | ||
@@ -690,8 +676,7 @@ static void intel_panel_set_backlight(struct intel_connector *connector, | |||
690 | void intel_panel_set_backlight_acpi(struct intel_connector *connector, | 676 | void intel_panel_set_backlight_acpi(struct intel_connector *connector, |
691 | u32 user_level, u32 user_max) | 677 | u32 user_level, u32 user_max) |
692 | { | 678 | { |
693 | struct drm_device *dev = connector->base.dev; | 679 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
694 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
695 | struct intel_panel *panel = &connector->panel; | 680 | struct intel_panel *panel = &connector->panel; |
696 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 681 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
697 | u32 hw_level; | 682 | u32 hw_level; |
@@ -726,8 +711,7 @@ void intel_panel_set_backlight_acpi(struct intel_connector *connector, | |||
726 | 711 | ||
727 | static void lpt_disable_backlight(struct intel_connector *connector) | 712 | static void lpt_disable_backlight(struct intel_connector *connector) |
728 | { | 713 | { |
729 | struct drm_device *dev = connector->base.dev; | 714 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
730 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
731 | u32 tmp; | 715 | u32 tmp; |
732 | 716 | ||
733 | intel_panel_actually_set_backlight(connector, 0); | 717 | intel_panel_actually_set_backlight(connector, 0); |
@@ -752,8 +736,7 @@ static void lpt_disable_backlight(struct intel_connector *connector) | |||
752 | 736 | ||
753 | static void pch_disable_backlight(struct intel_connector *connector) | 737 | static void pch_disable_backlight(struct intel_connector *connector) |
754 | { | 738 | { |
755 | struct drm_device *dev = connector->base.dev; | 739 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
756 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
757 | u32 tmp; | 740 | u32 tmp; |
758 | 741 | ||
759 | intel_panel_actually_set_backlight(connector, 0); | 742 | intel_panel_actually_set_backlight(connector, 0); |
@@ -772,8 +755,7 @@ static void i9xx_disable_backlight(struct intel_connector *connector) | |||
772 | 755 | ||
773 | static void i965_disable_backlight(struct intel_connector *connector) | 756 | static void i965_disable_backlight(struct intel_connector *connector) |
774 | { | 757 | { |
775 | struct drm_device *dev = connector->base.dev; | 758 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
776 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
777 | u32 tmp; | 759 | u32 tmp; |
778 | 760 | ||
779 | intel_panel_actually_set_backlight(connector, 0); | 761 | intel_panel_actually_set_backlight(connector, 0); |
@@ -784,8 +766,7 @@ static void i965_disable_backlight(struct intel_connector *connector) | |||
784 | 766 | ||
785 | static void vlv_disable_backlight(struct intel_connector *connector) | 767 | static void vlv_disable_backlight(struct intel_connector *connector) |
786 | { | 768 | { |
787 | struct drm_device *dev = connector->base.dev; | 769 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
788 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
789 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 770 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
790 | u32 tmp; | 771 | u32 tmp; |
791 | 772 | ||
@@ -800,8 +781,7 @@ static void vlv_disable_backlight(struct intel_connector *connector) | |||
800 | 781 | ||
801 | static void bxt_disable_backlight(struct intel_connector *connector) | 782 | static void bxt_disable_backlight(struct intel_connector *connector) |
802 | { | 783 | { |
803 | struct drm_device *dev = connector->base.dev; | 784 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
804 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
805 | struct intel_panel *panel = &connector->panel; | 785 | struct intel_panel *panel = &connector->panel; |
806 | u32 tmp, val; | 786 | u32 tmp, val; |
807 | 787 | ||
@@ -830,8 +810,7 @@ static void pwm_disable_backlight(struct intel_connector *connector) | |||
830 | 810 | ||
831 | void intel_panel_disable_backlight(struct intel_connector *connector) | 811 | void intel_panel_disable_backlight(struct intel_connector *connector) |
832 | { | 812 | { |
833 | struct drm_device *dev = connector->base.dev; | 813 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
834 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
835 | struct intel_panel *panel = &connector->panel; | 814 | struct intel_panel *panel = &connector->panel; |
836 | 815 | ||
837 | if (!panel->backlight.present) | 816 | if (!panel->backlight.present) |
@@ -843,7 +822,7 @@ void intel_panel_disable_backlight(struct intel_connector *connector) | |||
843 | * backlight. This will leave the backlight on unnecessarily when | 822 | * backlight. This will leave the backlight on unnecessarily when |
844 | * another client is not activated. | 823 | * another client is not activated. |
845 | */ | 824 | */ |
846 | if (dev->switch_power_state == DRM_SWITCH_POWER_CHANGING) { | 825 | if (dev_priv->dev->switch_power_state == DRM_SWITCH_POWER_CHANGING) { |
847 | DRM_DEBUG_DRIVER("Skipping backlight disable on vga switch\n"); | 826 | DRM_DEBUG_DRIVER("Skipping backlight disable on vga switch\n"); |
848 | return; | 827 | return; |
849 | } | 828 | } |
@@ -860,8 +839,7 @@ void intel_panel_disable_backlight(struct intel_connector *connector) | |||
860 | 839 | ||
861 | static void lpt_enable_backlight(struct intel_connector *connector) | 840 | static void lpt_enable_backlight(struct intel_connector *connector) |
862 | { | 841 | { |
863 | struct drm_device *dev = connector->base.dev; | 842 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
864 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
865 | struct intel_panel *panel = &connector->panel; | 843 | struct intel_panel *panel = &connector->panel; |
866 | u32 pch_ctl1, pch_ctl2; | 844 | u32 pch_ctl1, pch_ctl2; |
867 | 845 | ||
@@ -893,8 +871,7 @@ static void lpt_enable_backlight(struct intel_connector *connector) | |||
893 | 871 | ||
894 | static void pch_enable_backlight(struct intel_connector *connector) | 872 | static void pch_enable_backlight(struct intel_connector *connector) |
895 | { | 873 | { |
896 | struct drm_device *dev = connector->base.dev; | 874 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
897 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
898 | struct intel_panel *panel = &connector->panel; | 875 | struct intel_panel *panel = &connector->panel; |
899 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 876 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
900 | enum transcoder cpu_transcoder = | 877 | enum transcoder cpu_transcoder = |
@@ -940,8 +917,7 @@ static void pch_enable_backlight(struct intel_connector *connector) | |||
940 | 917 | ||
941 | static void i9xx_enable_backlight(struct intel_connector *connector) | 918 | static void i9xx_enable_backlight(struct intel_connector *connector) |
942 | { | 919 | { |
943 | struct drm_device *dev = connector->base.dev; | 920 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
944 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
945 | struct intel_panel *panel = &connector->panel; | 921 | struct intel_panel *panel = &connector->panel; |
946 | u32 ctl, freq; | 922 | u32 ctl, freq; |
947 | 923 | ||
@@ -958,7 +934,7 @@ static void i9xx_enable_backlight(struct intel_connector *connector) | |||
958 | ctl = freq << 17; | 934 | ctl = freq << 17; |
959 | if (panel->backlight.combination_mode) | 935 | if (panel->backlight.combination_mode) |
960 | ctl |= BLM_LEGACY_MODE; | 936 | ctl |= BLM_LEGACY_MODE; |
961 | if (IS_PINEVIEW(dev) && panel->backlight.active_low_pwm) | 937 | if (IS_PINEVIEW(dev_priv) && panel->backlight.active_low_pwm) |
962 | ctl |= BLM_POLARITY_PNV; | 938 | ctl |= BLM_POLARITY_PNV; |
963 | 939 | ||
964 | I915_WRITE(BLC_PWM_CTL, ctl); | 940 | I915_WRITE(BLC_PWM_CTL, ctl); |
@@ -972,14 +948,13 @@ static void i9xx_enable_backlight(struct intel_connector *connector) | |||
972 | * 855gm only, but checking for gen2 is safe, as 855gm is the only gen2 | 948 | * 855gm only, but checking for gen2 is safe, as 855gm is the only gen2 |
973 | * that has backlight. | 949 | * that has backlight. |
974 | */ | 950 | */ |
975 | if (IS_GEN2(dev)) | 951 | if (IS_GEN2(dev_priv)) |
976 | I915_WRITE(BLC_HIST_CTL, BLM_HISTOGRAM_ENABLE); | 952 | I915_WRITE(BLC_HIST_CTL, BLM_HISTOGRAM_ENABLE); |
977 | } | 953 | } |
978 | 954 | ||
979 | static void i965_enable_backlight(struct intel_connector *connector) | 955 | static void i965_enable_backlight(struct intel_connector *connector) |
980 | { | 956 | { |
981 | struct drm_device *dev = connector->base.dev; | 957 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
982 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
983 | struct intel_panel *panel = &connector->panel; | 958 | struct intel_panel *panel = &connector->panel; |
984 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 959 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
985 | u32 ctl, ctl2, freq; | 960 | u32 ctl, ctl2, freq; |
@@ -1012,8 +987,7 @@ static void i965_enable_backlight(struct intel_connector *connector) | |||
1012 | 987 | ||
1013 | static void vlv_enable_backlight(struct intel_connector *connector) | 988 | static void vlv_enable_backlight(struct intel_connector *connector) |
1014 | { | 989 | { |
1015 | struct drm_device *dev = connector->base.dev; | 990 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1016 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1017 | struct intel_panel *panel = &connector->panel; | 991 | struct intel_panel *panel = &connector->panel; |
1018 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 992 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
1019 | u32 ctl, ctl2; | 993 | u32 ctl, ctl2; |
@@ -1044,8 +1018,7 @@ static void vlv_enable_backlight(struct intel_connector *connector) | |||
1044 | 1018 | ||
1045 | static void bxt_enable_backlight(struct intel_connector *connector) | 1019 | static void bxt_enable_backlight(struct intel_connector *connector) |
1046 | { | 1020 | { |
1047 | struct drm_device *dev = connector->base.dev; | 1021 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1048 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1049 | struct intel_panel *panel = &connector->panel; | 1022 | struct intel_panel *panel = &connector->panel; |
1050 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 1023 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
1051 | u32 pwm_ctl, val; | 1024 | u32 pwm_ctl, val; |
@@ -1102,8 +1075,7 @@ static void pwm_enable_backlight(struct intel_connector *connector) | |||
1102 | 1075 | ||
1103 | void intel_panel_enable_backlight(struct intel_connector *connector) | 1076 | void intel_panel_enable_backlight(struct intel_connector *connector) |
1104 | { | 1077 | { |
1105 | struct drm_device *dev = connector->base.dev; | 1078 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1106 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1107 | struct intel_panel *panel = &connector->panel; | 1079 | struct intel_panel *panel = &connector->panel; |
1108 | enum pipe pipe = intel_get_pipe_from_connector(connector); | 1080 | enum pipe pipe = intel_get_pipe_from_connector(connector); |
1109 | 1081 | ||
@@ -1278,8 +1250,7 @@ static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) | |||
1278 | */ | 1250 | */ |
1279 | static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) | 1251 | static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) |
1280 | { | 1252 | { |
1281 | struct drm_device *dev = connector->base.dev; | 1253 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1282 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1283 | u32 mul, clock; | 1254 | u32 mul, clock; |
1284 | 1255 | ||
1285 | if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY) | 1256 | if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY) |
@@ -1299,8 +1270,7 @@ static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) | |||
1299 | */ | 1270 | */ |
1300 | static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) | 1271 | static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) |
1301 | { | 1272 | { |
1302 | struct drm_device *dev = connector->base.dev; | 1273 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1303 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1304 | u32 mul, clock; | 1274 | u32 mul, clock; |
1305 | 1275 | ||
1306 | if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY) | 1276 | if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY) |
@@ -1393,8 +1363,7 @@ static u32 vlv_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) | |||
1393 | 1363 | ||
1394 | static u32 get_backlight_max_vbt(struct intel_connector *connector) | 1364 | static u32 get_backlight_max_vbt(struct intel_connector *connector) |
1395 | { | 1365 | { |
1396 | struct drm_device *dev = connector->base.dev; | 1366 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1397 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1398 | struct intel_panel *panel = &connector->panel; | 1367 | struct intel_panel *panel = &connector->panel; |
1399 | u16 pwm_freq_hz = dev_priv->vbt.backlight.pwm_freq_hz; | 1368 | u16 pwm_freq_hz = dev_priv->vbt.backlight.pwm_freq_hz; |
1400 | u32 pwm; | 1369 | u32 pwm; |
@@ -1427,8 +1396,7 @@ static u32 get_backlight_max_vbt(struct intel_connector *connector) | |||
1427 | */ | 1396 | */ |
1428 | static u32 get_backlight_min_vbt(struct intel_connector *connector) | 1397 | static u32 get_backlight_min_vbt(struct intel_connector *connector) |
1429 | { | 1398 | { |
1430 | struct drm_device *dev = connector->base.dev; | 1399 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1431 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1432 | struct intel_panel *panel = &connector->panel; | 1400 | struct intel_panel *panel = &connector->panel; |
1433 | int min; | 1401 | int min; |
1434 | 1402 | ||
@@ -1453,8 +1421,7 @@ static u32 get_backlight_min_vbt(struct intel_connector *connector) | |||
1453 | 1421 | ||
1454 | static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused) | 1422 | static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused) |
1455 | { | 1423 | { |
1456 | struct drm_device *dev = connector->base.dev; | 1424 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1457 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1458 | struct intel_panel *panel = &connector->panel; | 1425 | struct intel_panel *panel = &connector->panel; |
1459 | u32 pch_ctl1, pch_ctl2, val; | 1426 | u32 pch_ctl1, pch_ctl2, val; |
1460 | 1427 | ||
@@ -1483,8 +1450,7 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus | |||
1483 | 1450 | ||
1484 | static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused) | 1451 | static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused) |
1485 | { | 1452 | { |
1486 | struct drm_device *dev = connector->base.dev; | 1453 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1487 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1488 | struct intel_panel *panel = &connector->panel; | 1454 | struct intel_panel *panel = &connector->panel; |
1489 | u32 cpu_ctl2, pch_ctl1, pch_ctl2, val; | 1455 | u32 cpu_ctl2, pch_ctl1, pch_ctl2, val; |
1490 | 1456 | ||
@@ -1514,17 +1480,16 @@ static int pch_setup_backlight(struct intel_connector *connector, enum pipe unus | |||
1514 | 1480 | ||
1515 | static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused) | 1481 | static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused) |
1516 | { | 1482 | { |
1517 | struct drm_device *dev = connector->base.dev; | 1483 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1518 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1519 | struct intel_panel *panel = &connector->panel; | 1484 | struct intel_panel *panel = &connector->panel; |
1520 | u32 ctl, val; | 1485 | u32 ctl, val; |
1521 | 1486 | ||
1522 | ctl = I915_READ(BLC_PWM_CTL); | 1487 | ctl = I915_READ(BLC_PWM_CTL); |
1523 | 1488 | ||
1524 | if (IS_GEN2(dev) || IS_I915GM(dev) || IS_I945GM(dev)) | 1489 | if (IS_GEN2(dev_priv) || IS_I915GM(dev_priv) || IS_I945GM(dev_priv)) |
1525 | panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE; | 1490 | panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE; |
1526 | 1491 | ||
1527 | if (IS_PINEVIEW(dev)) | 1492 | if (IS_PINEVIEW(dev_priv)) |
1528 | panel->backlight.active_low_pwm = ctl & BLM_POLARITY_PNV; | 1493 | panel->backlight.active_low_pwm = ctl & BLM_POLARITY_PNV; |
1529 | 1494 | ||
1530 | panel->backlight.max = ctl >> 17; | 1495 | panel->backlight.max = ctl >> 17; |
@@ -1552,8 +1517,7 @@ static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unu | |||
1552 | 1517 | ||
1553 | static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused) | 1518 | static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused) |
1554 | { | 1519 | { |
1555 | struct drm_device *dev = connector->base.dev; | 1520 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1556 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1557 | struct intel_panel *panel = &connector->panel; | 1521 | struct intel_panel *panel = &connector->panel; |
1558 | u32 ctl, ctl2, val; | 1522 | u32 ctl, ctl2, val; |
1559 | 1523 | ||
@@ -1586,8 +1550,7 @@ static int i965_setup_backlight(struct intel_connector *connector, enum pipe unu | |||
1586 | 1550 | ||
1587 | static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe) | 1551 | static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe) |
1588 | { | 1552 | { |
1589 | struct drm_device *dev = connector->base.dev; | 1553 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1590 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1591 | struct intel_panel *panel = &connector->panel; | 1554 | struct intel_panel *panel = &connector->panel; |
1592 | u32 ctl, ctl2, val; | 1555 | u32 ctl, ctl2, val; |
1593 | 1556 | ||
@@ -1608,7 +1571,7 @@ static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe | |||
1608 | 1571 | ||
1609 | panel->backlight.min = get_backlight_min_vbt(connector); | 1572 | panel->backlight.min = get_backlight_min_vbt(connector); |
1610 | 1573 | ||
1611 | val = _vlv_get_backlight(dev, pipe); | 1574 | val = _vlv_get_backlight(dev_priv, pipe); |
1612 | panel->backlight.level = intel_panel_compute_brightness(connector, val); | 1575 | panel->backlight.level = intel_panel_compute_brightness(connector, val); |
1613 | 1576 | ||
1614 | panel->backlight.enabled = (ctl2 & BLM_PWM_ENABLE) && | 1577 | panel->backlight.enabled = (ctl2 & BLM_PWM_ENABLE) && |
@@ -1620,8 +1583,7 @@ static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe | |||
1620 | static int | 1583 | static int |
1621 | bxt_setup_backlight(struct intel_connector *connector, enum pipe unused) | 1584 | bxt_setup_backlight(struct intel_connector *connector, enum pipe unused) |
1622 | { | 1585 | { |
1623 | struct drm_device *dev = connector->base.dev; | 1586 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1624 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1625 | struct intel_panel *panel = &connector->panel; | 1587 | struct intel_panel *panel = &connector->panel; |
1626 | u32 pwm_ctl, val; | 1588 | u32 pwm_ctl, val; |
1627 | 1589 | ||
@@ -1699,8 +1661,7 @@ static int pwm_setup_backlight(struct intel_connector *connector, | |||
1699 | 1661 | ||
1700 | int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe) | 1662 | int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe) |
1701 | { | 1663 | { |
1702 | struct drm_device *dev = connector->dev; | 1664 | struct drm_i915_private *dev_priv = to_i915(connector->dev); |
1703 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1704 | struct intel_connector *intel_connector = to_intel_connector(connector); | 1665 | struct intel_connector *intel_connector = to_intel_connector(connector); |
1705 | struct intel_panel *panel = &intel_connector->panel; | 1666 | struct intel_panel *panel = &intel_connector->panel; |
1706 | int ret; | 1667 | int ret; |
@@ -1755,36 +1716,35 @@ void intel_panel_destroy_backlight(struct drm_connector *connector) | |||
1755 | static void | 1716 | static void |
1756 | intel_panel_init_backlight_funcs(struct intel_panel *panel) | 1717 | intel_panel_init_backlight_funcs(struct intel_panel *panel) |
1757 | { | 1718 | { |
1758 | struct intel_connector *intel_connector = | 1719 | struct intel_connector *connector = |
1759 | container_of(panel, struct intel_connector, panel); | 1720 | container_of(panel, struct intel_connector, panel); |
1760 | struct drm_device *dev = intel_connector->base.dev; | 1721 | struct drm_i915_private *dev_priv = to_i915(connector->base.dev); |
1761 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
1762 | 1722 | ||
1763 | if (IS_BROXTON(dev)) { | 1723 | if (IS_BROXTON(dev_priv)) { |
1764 | panel->backlight.setup = bxt_setup_backlight; | 1724 | panel->backlight.setup = bxt_setup_backlight; |
1765 | panel->backlight.enable = bxt_enable_backlight; | 1725 | panel->backlight.enable = bxt_enable_backlight; |
1766 | panel->backlight.disable = bxt_disable_backlight; | 1726 | panel->backlight.disable = bxt_disable_backlight; |
1767 | panel->backlight.set = bxt_set_backlight; | 1727 | panel->backlight.set = bxt_set_backlight; |
1768 | panel->backlight.get = bxt_get_backlight; | 1728 | panel->backlight.get = bxt_get_backlight; |
1769 | panel->backlight.hz_to_pwm = bxt_hz_to_pwm; | 1729 | panel->backlight.hz_to_pwm = bxt_hz_to_pwm; |
1770 | } else if (HAS_PCH_LPT(dev) || HAS_PCH_SPT(dev)) { | 1730 | } else if (HAS_PCH_LPT(dev_priv) || HAS_PCH_SPT(dev_priv)) { |
1771 | panel->backlight.setup = lpt_setup_backlight; | 1731 | panel->backlight.setup = lpt_setup_backlight; |
1772 | panel->backlight.enable = lpt_enable_backlight; | 1732 | panel->backlight.enable = lpt_enable_backlight; |
1773 | panel->backlight.disable = lpt_disable_backlight; | 1733 | panel->backlight.disable = lpt_disable_backlight; |
1774 | panel->backlight.set = lpt_set_backlight; | 1734 | panel->backlight.set = lpt_set_backlight; |
1775 | panel->backlight.get = lpt_get_backlight; | 1735 | panel->backlight.get = lpt_get_backlight; |
1776 | if (HAS_PCH_LPT(dev)) | 1736 | if (HAS_PCH_LPT(dev_priv)) |
1777 | panel->backlight.hz_to_pwm = lpt_hz_to_pwm; | 1737 | panel->backlight.hz_to_pwm = lpt_hz_to_pwm; |
1778 | else | 1738 | else |
1779 | panel->backlight.hz_to_pwm = spt_hz_to_pwm; | 1739 | panel->backlight.hz_to_pwm = spt_hz_to_pwm; |
1780 | } else if (HAS_PCH_SPLIT(dev)) { | 1740 | } else if (HAS_PCH_SPLIT(dev_priv)) { |
1781 | panel->backlight.setup = pch_setup_backlight; | 1741 | panel->backlight.setup = pch_setup_backlight; |
1782 | panel->backlight.enable = pch_enable_backlight; | 1742 | panel->backlight.enable = pch_enable_backlight; |
1783 | panel->backlight.disable = pch_disable_backlight; | 1743 | panel->backlight.disable = pch_disable_backlight; |
1784 | panel->backlight.set = pch_set_backlight; | 1744 | panel->backlight.set = pch_set_backlight; |
1785 | panel->backlight.get = pch_get_backlight; | 1745 | panel->backlight.get = pch_get_backlight; |
1786 | panel->backlight.hz_to_pwm = pch_hz_to_pwm; | 1746 | panel->backlight.hz_to_pwm = pch_hz_to_pwm; |
1787 | } else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { | 1747 | } else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { |
1788 | if (dev_priv->vbt.has_mipi) { | 1748 | if (dev_priv->vbt.has_mipi) { |
1789 | panel->backlight.setup = pwm_setup_backlight; | 1749 | panel->backlight.setup = pwm_setup_backlight; |
1790 | panel->backlight.enable = pwm_enable_backlight; | 1750 | panel->backlight.enable = pwm_enable_backlight; |
@@ -1799,7 +1759,7 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel) | |||
1799 | panel->backlight.get = vlv_get_backlight; | 1759 | panel->backlight.get = vlv_get_backlight; |
1800 | panel->backlight.hz_to_pwm = vlv_hz_to_pwm; | 1760 | panel->backlight.hz_to_pwm = vlv_hz_to_pwm; |
1801 | } | 1761 | } |
1802 | } else if (IS_GEN4(dev)) { | 1762 | } else if (IS_GEN4(dev_priv)) { |
1803 | panel->backlight.setup = i965_setup_backlight; | 1763 | panel->backlight.setup = i965_setup_backlight; |
1804 | panel->backlight.enable = i965_enable_backlight; | 1764 | panel->backlight.enable = i965_enable_backlight; |
1805 | panel->backlight.disable = i965_disable_backlight; | 1765 | panel->backlight.disable = i965_disable_backlight; |