aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915')
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c156
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,
461static u32 intel_panel_compute_brightness(struct intel_connector *connector, 461static 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
481static u32 lpt_get_backlight(struct intel_connector *connector) 480static 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
489static u32 pch_get_backlight(struct intel_connector *connector) 487static 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
497static u32 i9xx_get_backlight(struct intel_connector *connector) 494static 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
518static u32 _vlv_get_backlight(struct drm_device *dev, enum pipe pipe) 514static 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
528static u32 vlv_get_backlight(struct intel_connector *connector) 522static 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
536static u32 bxt_get_backlight(struct intel_connector *connector) 530static 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
554static u32 intel_panel_get_backlight(struct intel_connector *connector) 547static 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
574static void lpt_set_backlight(struct intel_connector *connector, u32 level) 566static 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
582static void pch_set_backlight(struct intel_connector *connector, u32 level) 573static 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
592static void i9xx_set_backlight(struct intel_connector *connector, u32 level) 582static 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
620static void vlv_set_backlight(struct intel_connector *connector, u32 level) 609static 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
634static void bxt_set_backlight(struct intel_connector *connector, u32 level) 622static 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)
663static void intel_panel_set_backlight(struct intel_connector *connector, 650static 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,
690void intel_panel_set_backlight_acpi(struct intel_connector *connector, 676void 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
727static void lpt_disable_backlight(struct intel_connector *connector) 712static 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
753static void pch_disable_backlight(struct intel_connector *connector) 737static 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
773static void i965_disable_backlight(struct intel_connector *connector) 756static 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
785static void vlv_disable_backlight(struct intel_connector *connector) 767static 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
801static void bxt_disable_backlight(struct intel_connector *connector) 782static 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
831void intel_panel_disable_backlight(struct intel_connector *connector) 811void 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
861static void lpt_enable_backlight(struct intel_connector *connector) 840static 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
894static void pch_enable_backlight(struct intel_connector *connector) 872static 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
941static void i9xx_enable_backlight(struct intel_connector *connector) 918static 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
979static void i965_enable_backlight(struct intel_connector *connector) 955static 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
1013static void vlv_enable_backlight(struct intel_connector *connector) 988static 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
1045static void bxt_enable_backlight(struct intel_connector *connector) 1019static 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
1103void intel_panel_enable_backlight(struct intel_connector *connector) 1076void 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 */
1279static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) 1251static 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 */
1300static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) 1271static 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
1394static u32 get_backlight_max_vbt(struct intel_connector *connector) 1364static 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 */
1428static u32 get_backlight_min_vbt(struct intel_connector *connector) 1397static 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
1454static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused) 1422static 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
1484static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused) 1451static 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
1515static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused) 1481static 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
1553static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused) 1518static 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
1587static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe) 1551static 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
1620static int 1583static int
1621bxt_setup_backlight(struct intel_connector *connector, enum pipe unused) 1584bxt_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
1700int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe) 1662int 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)
1755static void 1716static void
1756intel_panel_init_backlight_funcs(struct intel_panel *panel) 1717intel_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;