Subversion Repositories Kolibri OS

Rev

Rev 6283 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6283 Rev 6937
Line 459... Line 459...
459
}
459
}
Line 460... Line 460...
460
 
460
 
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
{
-
 
464
	struct drm_device *dev = connector->base.dev;
463
{
465
	struct drm_i915_private *dev_priv = dev->dev_private;
464
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 466... Line 465...
466
	struct intel_panel *panel = &connector->panel;
465
	struct intel_panel *panel = &connector->panel;
Line 467... Line 466...
467
 
466
 
Line 478... Line 477...
478
	return val;
477
	return val;
479
}
478
}
Line 480... Line 479...
480
 
479
 
481
static u32 lpt_get_backlight(struct intel_connector *connector)
480
static u32 lpt_get_backlight(struct intel_connector *connector)
482
{
-
 
483
	struct drm_device *dev = connector->base.dev;
481
{
Line 484... Line 482...
484
	struct drm_i915_private *dev_priv = dev->dev_private;
482
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
485
 
483
 
Line 486... Line 484...
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
 
-
 
489
static u32 pch_get_backlight(struct intel_connector *connector)
486
 
Line 490... Line 487...
490
{
487
static u32 pch_get_backlight(struct intel_connector *connector)
491
	struct drm_device *dev = connector->base.dev;
488
{
Line 492... Line 489...
492
	struct drm_i915_private *dev_priv = dev->dev_private;
489
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
493
 
490
 
494
	return I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK;
-
 
495
}
491
	return I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK;
496
 
492
}
497
static u32 i9xx_get_backlight(struct intel_connector *connector)
493
 
Line 498... Line 494...
498
{
494
static u32 i9xx_get_backlight(struct intel_connector *connector)
499
	struct drm_device *dev = connector->base.dev;
495
{
500
	struct drm_i915_private *dev_priv = dev->dev_private;
496
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 501... Line 497...
501
	struct intel_panel *panel = &connector->panel;
497
	struct intel_panel *panel = &connector->panel;
502
	u32 val;
498
	u32 val;
Line 503... Line 499...
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)
Line 506... Line 502...
506
		val >>= 1;
502
		val >>= 1;
507
 
503
 
Line 508... Line 504...
508
	if (panel->backlight.combination_mode) {
504
	if (panel->backlight.combination_mode) {
509
		u8 lbpc;
505
		u8 lbpc;
510
 
-
 
511
		pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc);
-
 
512
		val *= lbpc;
506
 
513
	}
507
		pci_read_config_byte(dev_priv->dev->pdev, PCI_LBPC, &lbpc);
Line 514... Line 508...
514
 
508
		val *= lbpc;
515
	return val;
509
	}
Line 516... Line 510...
516
}
510
 
517
 
511
	return val;
518
static u32 _vlv_get_backlight(struct drm_device *dev, enum pipe pipe)
512
}
519
{
513
 
Line 520... Line 514...
520
	struct drm_i915_private *dev_priv = dev->dev_private;
514
static u32 _vlv_get_backlight(struct drm_i915_private *dev_priv, enum pipe pipe)
521
 
515
{
Line 522... Line 516...
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
 
525
	return I915_READ(VLV_BLC_PWM_CTL(pipe)) & BACKLIGHT_DUTY_CYCLE_MASK;
519
	return I915_READ(VLV_BLC_PWM_CTL(pipe)) & BACKLIGHT_DUTY_CYCLE_MASK;
526
}
-
 
Line 527... Line 520...
527
 
520
}
528
static u32 vlv_get_backlight(struct intel_connector *connector)
521
 
Line 529... Line 522...
529
{
522
static u32 vlv_get_backlight(struct intel_connector *connector)
Line 551... Line 544...
551
	return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
544
	return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
552
}
545
}
Line 553... Line 546...
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
{
-
 
556
	struct drm_device *dev = connector->base.dev;
548
{
557
	struct drm_i915_private *dev_priv = dev->dev_private;
549
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
558
	struct intel_panel *panel = &connector->panel;
550
	struct intel_panel *panel = &connector->panel;
Line 559... Line 551...
559
	u32 val = 0;
551
	u32 val = 0;
Line 571... Line 563...
571
	return val;
563
	return val;
572
}
564
}
Line 573... Line 565...
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
{
-
 
576
	struct drm_device *dev = connector->base.dev;
567
{
577
	struct drm_i915_private *dev_priv = dev->dev_private;
568
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
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);
Line 580... Line 571...
580
}
571
}
581
 
572
 
582
static void pch_set_backlight(struct intel_connector *connector, u32 level)
-
 
583
{
573
static void pch_set_backlight(struct intel_connector *connector, u32 level)
584
	struct drm_device *dev = connector->base.dev;
574
{
Line 585... Line 575...
585
	struct drm_i915_private *dev_priv = dev->dev_private;
575
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
586
	u32 tmp;
576
	u32 tmp;
587
 
577
 
Line 588... Line 578...
588
	tmp = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK;
578
	tmp = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK;
589
	I915_WRITE(BLC_PWM_CPU_CTL, tmp | level);
579
	I915_WRITE(BLC_PWM_CPU_CTL, tmp | level);
590
}
-
 
591
 
580
}
592
static void i9xx_set_backlight(struct intel_connector *connector, u32 level)
581
 
593
{
582
static void i9xx_set_backlight(struct intel_connector *connector, u32 level)
Line 594... Line 583...
594
	struct drm_device *dev = connector->base.dev;
583
{
Line 595... Line 584...
595
	struct drm_i915_private *dev_priv = dev->dev_private;
584
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
596
	struct intel_panel *panel = &connector->panel;
585
	struct intel_panel *panel = &connector->panel;
Line 597... Line 586...
597
	u32 tmp, mask;
586
	u32 tmp, mask;
598
 
587
 
599
	WARN_ON(panel->backlight.max == 0);
588
	WARN_ON(panel->backlight.max == 0);
600
 
589
 
Line 601... Line 590...
601
	if (panel->backlight.combination_mode) {
590
	if (panel->backlight.combination_mode) {
602
		u8 lbpc;
591
		u8 lbpc;
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);
Line 617... Line 606...
617
	I915_WRITE(BLC_PWM_CTL, tmp | level);
606
	I915_WRITE(BLC_PWM_CTL, tmp | level);
618
}
607
}
Line 619... Line 608...
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
{
-
 
622
	struct drm_device *dev = connector->base.dev;
610
{
623
	struct drm_i915_private *dev_priv = dev->dev_private;
611
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
624
	enum pipe pipe = intel_get_pipe_from_connector(connector);
612
	enum pipe pipe = intel_get_pipe_from_connector(connector);
Line 625... Line 613...
625
	u32 tmp;
613
	u32 tmp;
626
 
614
 
Line 631... Line 619...
631
	I915_WRITE(VLV_BLC_PWM_CTL(pipe), tmp | level);
619
	I915_WRITE(VLV_BLC_PWM_CTL(pipe), tmp | level);
632
}
620
}
Line 633... Line 621...
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
{
-
 
636
	struct drm_device *dev = connector->base.dev;
623
{
637
	struct drm_i915_private *dev_priv = dev->dev_private;
624
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 638... Line 625...
638
	struct intel_panel *panel = &connector->panel;
625
	struct intel_panel *panel = &connector->panel;
639
 
626
 
Line 661... Line 648...
661
 
648
 
662
/* set backlight brightness to level in range [0..max], scaling wrt hw min */
649
/* set backlight brightness to level in range [0..max], scaling wrt hw min */
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
{
-
 
666
	struct drm_device *dev = connector->base.dev;
652
{
667
	struct drm_i915_private *dev_priv = dev->dev_private;
653
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
668
	struct intel_panel *panel = &connector->panel;
654
	struct intel_panel *panel = &connector->panel;
Line 669... Line 655...
669
	u32 hw_level;
655
	u32 hw_level;
670
 
656
 
Line 688... Line 674...
688
 * respected.
674
 * respected.
689
 */
675
 */
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;
-
 
694
	struct drm_i915_private *dev_priv = dev->dev_private;
679
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
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;
Line 698... Line 683...
698
 
683
 
Line 719... Line 704...
719
	mutex_unlock(&dev_priv->backlight_lock);
704
	mutex_unlock(&dev_priv->backlight_lock);
720
}
705
}
Line 721... Line 706...
721
 
706
 
722
static void lpt_disable_backlight(struct intel_connector *connector)
707
static void lpt_disable_backlight(struct intel_connector *connector)
723
{
-
 
724
	struct drm_device *dev = connector->base.dev;
708
{
725
	struct drm_i915_private *dev_priv = dev->dev_private;
709
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 726... Line 710...
726
	u32 tmp;
710
	u32 tmp;
Line 727... Line 711...
727
 
711
 
Line 745... Line 729...
745
	I915_WRITE(BLC_PWM_PCH_CTL1, tmp & ~BLM_PCH_PWM_ENABLE);
729
	I915_WRITE(BLC_PWM_PCH_CTL1, tmp & ~BLM_PCH_PWM_ENABLE);
746
}
730
}
Line 747... Line 731...
747
 
731
 
748
static void pch_disable_backlight(struct intel_connector *connector)
732
static void pch_disable_backlight(struct intel_connector *connector)
749
{
-
 
750
	struct drm_device *dev = connector->base.dev;
733
{
751
	struct drm_i915_private *dev_priv = dev->dev_private;
734
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 752... Line 735...
752
	u32 tmp;
735
	u32 tmp;
Line 753... Line 736...
753
 
736
 
Line 765... Line 748...
765
	intel_panel_actually_set_backlight(connector, 0);
748
	intel_panel_actually_set_backlight(connector, 0);
766
}
749
}
Line 767... Line 750...
767
 
750
 
768
static void i965_disable_backlight(struct intel_connector *connector)
751
static void i965_disable_backlight(struct intel_connector *connector)
769
{
-
 
770
	struct drm_device *dev = connector->base.dev;
752
{
771
	struct drm_i915_private *dev_priv = dev->dev_private;
753
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 772... Line 754...
772
	u32 tmp;
754
	u32 tmp;
Line 773... Line 755...
773
 
755
 
774
	intel_panel_actually_set_backlight(connector, 0);
756
	intel_panel_actually_set_backlight(connector, 0);
775
 
757
 
Line 776... Line 758...
776
	tmp = I915_READ(BLC_PWM_CTL2);
758
	tmp = I915_READ(BLC_PWM_CTL2);
777
	I915_WRITE(BLC_PWM_CTL2, tmp & ~BLM_PWM_ENABLE);
759
	I915_WRITE(BLC_PWM_CTL2, tmp & ~BLM_PWM_ENABLE);
778
}
-
 
779
 
760
}
780
static void vlv_disable_backlight(struct intel_connector *connector)
761
 
781
{
762
static void vlv_disable_backlight(struct intel_connector *connector)
Line 782... Line 763...
782
	struct drm_device *dev = connector->base.dev;
763
{
783
	struct drm_i915_private *dev_priv = dev->dev_private;
764
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 793... Line 774...
793
	I915_WRITE(VLV_BLC_PWM_CTL2(pipe), tmp & ~BLM_PWM_ENABLE);
774
	I915_WRITE(VLV_BLC_PWM_CTL2(pipe), tmp & ~BLM_PWM_ENABLE);
794
}
775
}
Line 795... Line 776...
795
 
776
 
796
static void bxt_disable_backlight(struct intel_connector *connector)
777
static void bxt_disable_backlight(struct intel_connector *connector)
797
{
-
 
798
	struct drm_device *dev = connector->base.dev;
778
{
799
	struct drm_i915_private *dev_priv = dev->dev_private;
779
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
800
	struct intel_panel *panel = &connector->panel;
780
	struct intel_panel *panel = &connector->panel;
Line 801... Line 781...
801
	u32 tmp, val;
781
	u32 tmp, val;
Line 823... Line 803...
823
	pwm_disable(panel->backlight.pwm);
803
	pwm_disable(panel->backlight.pwm);
824
}
804
}
Line 825... Line 805...
825
 
805
 
826
void intel_panel_disable_backlight(struct intel_connector *connector)
806
void intel_panel_disable_backlight(struct intel_connector *connector)
827
{
-
 
828
	struct drm_device *dev = connector->base.dev;
807
{
829
	struct drm_i915_private *dev_priv = dev->dev_private;
808
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 830... Line 809...
830
	struct intel_panel *panel = &connector->panel;
809
	struct intel_panel *panel = &connector->panel;
831
 
810
 
Line 836... Line 815...
836
	 * Do not disable backlight on the vga_switcheroo path. When switching
815
	 * Do not disable backlight on the vga_switcheroo path. When switching
837
	 * away from i915, the other client may depend on i915 to handle the
816
	 * away from i915, the other client may depend on i915 to handle the
838
	 * backlight. This will leave the backlight on unnecessarily when
817
	 * backlight. This will leave the backlight on unnecessarily when
839
	 * another client is not activated.
818
	 * another client is not activated.
840
	 */
819
	 */
841
	if (dev->switch_power_state == DRM_SWITCH_POWER_CHANGING) {
820
	if (dev_priv->dev->switch_power_state == DRM_SWITCH_POWER_CHANGING) {
842
		DRM_DEBUG_DRIVER("Skipping backlight disable on vga switch\n");
821
		DRM_DEBUG_DRIVER("Skipping backlight disable on vga switch\n");
843
		return;
822
		return;
844
	}
823
	}
Line 845... Line 824...
845
 
824
 
Line 851... Line 830...
851
	mutex_unlock(&dev_priv->backlight_lock);
830
	mutex_unlock(&dev_priv->backlight_lock);
852
}
831
}
Line 853... Line 832...
853
 
832
 
854
static void lpt_enable_backlight(struct intel_connector *connector)
833
static void lpt_enable_backlight(struct intel_connector *connector)
855
{
-
 
856
	struct drm_device *dev = connector->base.dev;
834
{
857
	struct drm_i915_private *dev_priv = dev->dev_private;
835
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
858
	struct intel_panel *panel = &connector->panel;
836
	struct intel_panel *panel = &connector->panel;
Line 859... Line 837...
859
	u32 pch_ctl1, pch_ctl2;
837
	u32 pch_ctl1, pch_ctl2;
860
 
838
 
Line 884... Line 862...
884
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
862
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
885
}
863
}
Line 886... Line 864...
886
 
864
 
887
static void pch_enable_backlight(struct intel_connector *connector)
865
static void pch_enable_backlight(struct intel_connector *connector)
888
{
-
 
889
	struct drm_device *dev = connector->base.dev;
866
{
890
	struct drm_i915_private *dev_priv = dev->dev_private;
867
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
891
	struct intel_panel *panel = &connector->panel;
868
	struct intel_panel *panel = &connector->panel;
892
	enum pipe pipe = intel_get_pipe_from_connector(connector);
869
	enum pipe pipe = intel_get_pipe_from_connector(connector);
893
	enum transcoder cpu_transcoder =
870
	enum transcoder cpu_transcoder =
894
		intel_pipe_to_cpu_transcoder(dev_priv, pipe);
871
		intel_pipe_to_cpu_transcoder(dev_priv, pipe);
Line 931... Line 908...
931
	I915_WRITE(BLC_PWM_PCH_CTL1, pch_ctl1 | BLM_PCH_PWM_ENABLE);
908
	I915_WRITE(BLC_PWM_PCH_CTL1, pch_ctl1 | BLM_PCH_PWM_ENABLE);
932
}
909
}
Line 933... Line 910...
933
 
910
 
934
static void i9xx_enable_backlight(struct intel_connector *connector)
911
static void i9xx_enable_backlight(struct intel_connector *connector)
935
{
-
 
936
	struct drm_device *dev = connector->base.dev;
912
{
937
	struct drm_i915_private *dev_priv = dev->dev_private;
913
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
938
	struct intel_panel *panel = &connector->panel;
914
	struct intel_panel *panel = &connector->panel;
Line 939... Line 915...
939
	u32 ctl, freq;
915
	u32 ctl, freq;
940
 
916
 
Line 949... Line 925...
949
		freq /= 0xff;
925
		freq /= 0xff;
Line 950... Line 926...
950
 
926
 
951
	ctl = freq << 17;
927
	ctl = freq << 17;
952
	if (panel->backlight.combination_mode)
928
	if (panel->backlight.combination_mode)
953
		ctl |= BLM_LEGACY_MODE;
929
		ctl |= BLM_LEGACY_MODE;
954
	if (IS_PINEVIEW(dev) && panel->backlight.active_low_pwm)
930
	if (IS_PINEVIEW(dev_priv) && panel->backlight.active_low_pwm)
Line 955... Line 931...
955
		ctl |= BLM_POLARITY_PNV;
931
		ctl |= BLM_POLARITY_PNV;
956
 
932
 
Line 963... Line 939...
963
	/*
939
	/*
964
	 * Needed to enable backlight on some 855gm models. BLC_HIST_CTL is
940
	 * Needed to enable backlight on some 855gm models. BLC_HIST_CTL is
965
	 * 855gm only, but checking for gen2 is safe, as 855gm is the only gen2
941
	 * 855gm only, but checking for gen2 is safe, as 855gm is the only gen2
966
	 * that has backlight.
942
	 * that has backlight.
967
	 */
943
	 */
968
	if (IS_GEN2(dev))
944
	if (IS_GEN2(dev_priv))
969
		I915_WRITE(BLC_HIST_CTL, BLM_HISTOGRAM_ENABLE);
945
		I915_WRITE(BLC_HIST_CTL, BLM_HISTOGRAM_ENABLE);
970
}
946
}
Line 971... Line 947...
971
 
947
 
972
static void i965_enable_backlight(struct intel_connector *connector)
948
static void i965_enable_backlight(struct intel_connector *connector)
973
{
-
 
974
	struct drm_device *dev = connector->base.dev;
949
{
975
	struct drm_i915_private *dev_priv = dev->dev_private;
950
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
976
	struct intel_panel *panel = &connector->panel;
951
	struct intel_panel *panel = &connector->panel;
977
	enum pipe pipe = intel_get_pipe_from_connector(connector);
952
	enum pipe pipe = intel_get_pipe_from_connector(connector);
Line 978... Line 953...
978
	u32 ctl, ctl2, freq;
953
	u32 ctl, ctl2, freq;
Line 1003... Line 978...
1003
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
978
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
1004
}
979
}
Line 1005... Line 980...
1005
 
980
 
1006
static void vlv_enable_backlight(struct intel_connector *connector)
981
static void vlv_enable_backlight(struct intel_connector *connector)
1007
{
-
 
1008
	struct drm_device *dev = connector->base.dev;
982
{
1009
	struct drm_i915_private *dev_priv = dev->dev_private;
983
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1010
	struct intel_panel *panel = &connector->panel;
984
	struct intel_panel *panel = &connector->panel;
1011
	enum pipe pipe = intel_get_pipe_from_connector(connector);
985
	enum pipe pipe = intel_get_pipe_from_connector(connector);
Line 1012... Line 986...
1012
	u32 ctl, ctl2;
986
	u32 ctl, ctl2;
Line 1035... Line 1009...
1035
	I915_WRITE(VLV_BLC_PWM_CTL2(pipe), ctl2 | BLM_PWM_ENABLE);
1009
	I915_WRITE(VLV_BLC_PWM_CTL2(pipe), ctl2 | BLM_PWM_ENABLE);
1036
}
1010
}
Line 1037... Line 1011...
1037
 
1011
 
1038
static void bxt_enable_backlight(struct intel_connector *connector)
1012
static void bxt_enable_backlight(struct intel_connector *connector)
1039
{
-
 
1040
	struct drm_device *dev = connector->base.dev;
1013
{
1041
	struct drm_i915_private *dev_priv = dev->dev_private;
1014
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1042
	struct intel_panel *panel = &connector->panel;
1015
	struct intel_panel *panel = &connector->panel;
1043
	enum pipe pipe = intel_get_pipe_from_connector(connector);
1016
	enum pipe pipe = intel_get_pipe_from_connector(connector);
Line 1044... Line 1017...
1044
	u32 pwm_ctl, val;
1017
	u32 pwm_ctl, val;
Line 1093... Line 1066...
1093
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
1066
	intel_panel_actually_set_backlight(connector, panel->backlight.level);
1094
}
1067
}
Line 1095... Line 1068...
1095
 
1068
 
1096
void intel_panel_enable_backlight(struct intel_connector *connector)
1069
void intel_panel_enable_backlight(struct intel_connector *connector)
1097
{
-
 
1098
	struct drm_device *dev = connector->base.dev;
1070
{
1099
	struct drm_i915_private *dev_priv = dev->dev_private;
1071
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1100
	struct intel_panel *panel = &connector->panel;
1072
	struct intel_panel *panel = &connector->panel;
Line 1101... Line 1073...
1101
	enum pipe pipe = intel_get_pipe_from_connector(connector);
1073
	enum pipe pipe = intel_get_pipe_from_connector(connector);
1102
 
1074
 
Line 1248... Line 1220...
1248
{
1220
{
1249
}
1221
}
1250
#endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */
1222
#endif /* CONFIG_BACKLIGHT_CLASS_DEVICE */
Line 1251... Line 1223...
1251
 
1223
 
-
 
1224
/*
-
 
1225
 * BXT: PWM clock frequency = 19.2 MHz.
-
 
1226
 */
-
 
1227
static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
-
 
1228
{
-
 
1229
	return KHz(19200) / pwm_freq_hz;
-
 
1230
}
-
 
1231
 
1252
/*
1232
/*
1253
 * SPT: This value represents the period of the PWM stream in clock periods
1233
 * SPT: This value represents the period of the PWM stream in clock periods
1254
 * multiplied by 16 (default increment) or 128 (alternate increment selected in
1234
 * multiplied by 16 (default increment) or 128 (alternate increment selected in
1255
 * SCHICKEN_1 bit 0). PWM clock is 24 MHz.
1235
 * SCHICKEN_1 bit 0). PWM clock is 24 MHz.
1256
 */
1236
 */
1257
static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
1237
static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
1258
{
-
 
1259
	struct drm_device *dev = connector->base.dev;
1238
{
1260
	struct drm_i915_private *dev_priv = dev->dev_private;
1239
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
Line 1261... Line 1240...
1261
	u32 mul, clock;
1240
	u32 mul, clock;
1262
 
1241
 
1263
	if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY)
1242
	if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY)
Line 1275... Line 1254...
1275
 * multiplied by 128 (default increment) or 16 (alternate increment, selected in
1254
 * multiplied by 128 (default increment) or 16 (alternate increment, selected in
1276
 * LPT SOUTH_CHICKEN2 register bit 5).
1255
 * LPT SOUTH_CHICKEN2 register bit 5).
1277
 */
1256
 */
1278
static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
1257
static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
1279
{
1258
{
1280
	struct drm_device *dev = connector->base.dev;
-
 
1281
	struct drm_i915_private *dev_priv = dev->dev_private;
1259
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1282
	u32 mul, clock;
1260
	u32 mul, clock;
Line 1283... Line 1261...
1283
 
1261
 
1284
	if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY)
1262
	if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY)
1285
		mul = 16;
1263
		mul = 16;
1286
	else
1264
	else
Line 1287... Line 1265...
1287
		mul = 128;
1265
		mul = 128;
1288
 
1266
 
1289
	if (dev_priv->pch_id == INTEL_PCH_LPT_DEVICE_ID_TYPE)
1267
	if (HAS_PCH_LPT_H(dev_priv))
1290
		clock = MHz(135); /* LPT:H */
1268
		clock = MHz(135); /* LPT:H */
Line 1291... Line 1269...
1291
	else
1269
	else
Line 1319... Line 1297...
1319
	struct drm_device *dev = connector->base.dev;
1297
	struct drm_device *dev = connector->base.dev;
1320
	struct drm_i915_private *dev_priv = dev->dev_private;
1298
	struct drm_i915_private *dev_priv = dev->dev_private;
1321
	int clock;
1299
	int clock;
Line 1322... Line 1300...
1322
 
1300
 
1323
	if (IS_PINEVIEW(dev))
1301
	if (IS_PINEVIEW(dev))
1324
		clock = intel_hrawclk(dev);
1302
		clock = MHz(intel_hrawclk(dev));
1325
	else
1303
	else
Line 1326... Line 1304...
1326
		clock = 1000 * dev_priv->display.get_display_clock_speed(dev);
1304
		clock = 1000 * dev_priv->cdclk_freq;
1327
 
1305
 
Line 1328... Line 1306...
1328
	return clock / (pwm_freq_hz * 32);
1306
	return clock / (pwm_freq_hz * 32);
1329
}
1307
}
1330
 
1308
 
-
 
1309
/*
1331
/*
1310
 * Gen4: This value represents the period of the PWM stream in display core
1332
 * Gen4: This value represents the period of the PWM stream in display core
1311
 * clocks ([DevCTG] HRAW clocks) multiplied by 128.
1333
 * clocks multiplied by 128.
1312
 *
1334
 */
1313
 */
1335
static u32 i965_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
1314
static u32 i965_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
-
 
1315
{
-
 
1316
	struct drm_device *dev = connector->base.dev;
-
 
1317
	struct drm_i915_private *dev_priv = dev->dev_private;
-
 
1318
	int clock;
-
 
1319
 
1336
{
1320
	if (IS_G4X(dev_priv))
Line 1337... Line 1321...
1337
	struct drm_device *dev = connector->base.dev;
1321
		clock = MHz(intel_hrawclk(dev));
1338
	struct drm_i915_private *dev_priv = dev->dev_private;
1322
	else
Line 1339... Line 1323...
1339
	int clock = 1000 * dev_priv->display.get_display_clock_speed(dev);
1323
		clock = 1000 * dev_priv->cdclk_freq;
Line 1363... Line 1347...
1363
	}
1347
	}
1364
}
1348
}
Line 1365... Line 1349...
1365
 
1349
 
1366
static u32 get_backlight_max_vbt(struct intel_connector *connector)
1350
static u32 get_backlight_max_vbt(struct intel_connector *connector)
1367
{
-
 
1368
	struct drm_device *dev = connector->base.dev;
1351
{
1369
	struct drm_i915_private *dev_priv = dev->dev_private;
1352
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1370
	struct intel_panel *panel = &connector->panel;
1353
	struct intel_panel *panel = &connector->panel;
1371
	u16 pwm_freq_hz = dev_priv->vbt.backlight.pwm_freq_hz;
1354
	u16 pwm_freq_hz = dev_priv->vbt.backlight.pwm_freq_hz;
Line 1372... Line 1355...
1372
	u32 pwm;
1355
	u32 pwm;
1373
 
1356
 
1374
	if (!pwm_freq_hz) {
1357
	if (!panel->backlight.hz_to_pwm) {
1375
		DRM_DEBUG_KMS("backlight frequency not specified in VBT\n");
1358
		DRM_DEBUG_KMS("backlight frequency conversion not supported\n");
Line 1376... Line 1359...
1376
		return 0;
1359
		return 0;
1377
	}
1360
	}
-
 
1361
 
1378
 
1362
	if (pwm_freq_hz) {
-
 
1363
		DRM_DEBUG_KMS("VBT defined backlight frequency %u Hz\n",
-
 
1364
			      pwm_freq_hz);
-
 
1365
	} else {
1379
	if (!panel->backlight.hz_to_pwm) {
1366
		pwm_freq_hz = 200;
Line 1380... Line 1367...
1380
		DRM_DEBUG_KMS("backlight frequency setting from VBT currently not supported on this platform\n");
1367
		DRM_DEBUG_KMS("default backlight frequency %u Hz\n",
1381
		return 0;
1368
			      pwm_freq_hz);
1382
	}
1369
	}
1383
 
1370
 
1384
	pwm = panel->backlight.hz_to_pwm(connector, pwm_freq_hz);
1371
	pwm = panel->backlight.hz_to_pwm(connector, pwm_freq_hz);
Line 1385... Line -...
1385
	if (!pwm) {
-
 
1386
		DRM_DEBUG_KMS("backlight frequency conversion failed\n");
-
 
1387
		return 0;
1372
	if (!pwm) {
1388
	}
1373
		DRM_DEBUG_KMS("backlight frequency conversion failed\n");
Line 1389... Line 1374...
1389
 
1374
		return 0;
1390
	DRM_DEBUG_KMS("backlight frequency %u Hz from VBT\n", pwm_freq_hz);
1375
	}
1391
 
1376
 
1392
	return pwm;
1377
	return pwm;
1393
}
1378
}
1394
 
-
 
1395
/*
1379
 
1396
 * Note: The setup hooks can't assume pipe is set!
1380
/*
1397
 */
1381
 * Note: The setup hooks can't assume pipe is set!
Line 1398... Line 1382...
1398
static u32 get_backlight_min_vbt(struct intel_connector *connector)
1382
 */
Line 1421... Line 1405...
1421
	return scale(min, 0, 255, 0, panel->backlight.max);
1405
	return scale(min, 0, 255, 0, panel->backlight.max);
1422
}
1406
}
Line 1423... Line 1407...
1423
 
1407
 
1424
static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused)
1408
static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unused)
1425
{
-
 
1426
	struct drm_device *dev = connector->base.dev;
1409
{
1427
	struct drm_i915_private *dev_priv = dev->dev_private;
1410
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1428
	struct intel_panel *panel = &connector->panel;
1411
	struct intel_panel *panel = &connector->panel;
Line 1429... Line 1412...
1429
	u32 pch_ctl1, pch_ctl2, val;
1412
	u32 pch_ctl1, pch_ctl2, val;
1430
 
1413
 
Line 1451... Line 1434...
1451
	return 0;
1434
	return 0;
1452
}
1435
}
Line 1453... Line 1436...
1453
 
1436
 
1454
static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused)
1437
static int pch_setup_backlight(struct intel_connector *connector, enum pipe unused)
1455
{
-
 
1456
	struct drm_device *dev = connector->base.dev;
1438
{
1457
	struct drm_i915_private *dev_priv = dev->dev_private;
1439
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1458
	struct intel_panel *panel = &connector->panel;
1440
	struct intel_panel *panel = &connector->panel;
Line 1459... Line 1441...
1459
	u32 cpu_ctl2, pch_ctl1, pch_ctl2, val;
1441
	u32 cpu_ctl2, pch_ctl1, pch_ctl2, val;
1460
 
1442
 
Line 1482... Line 1464...
1482
	return 0;
1464
	return 0;
1483
}
1465
}
Line 1484... Line 1466...
1484
 
1466
 
1485
static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused)
1467
static int i9xx_setup_backlight(struct intel_connector *connector, enum pipe unused)
1486
{
-
 
1487
	struct drm_device *dev = connector->base.dev;
1468
{
1488
	struct drm_i915_private *dev_priv = dev->dev_private;
1469
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1489
	struct intel_panel *panel = &connector->panel;
1470
	struct intel_panel *panel = &connector->panel;
Line 1490... Line 1471...
1490
	u32 ctl, val;
1471
	u32 ctl, val;
Line 1491... Line 1472...
1491
 
1472
 
1492
	ctl = I915_READ(BLC_PWM_CTL);
1473
	ctl = I915_READ(BLC_PWM_CTL);
Line 1493... Line 1474...
1493
 
1474
 
1494
	if (IS_GEN2(dev) || IS_I915GM(dev) || IS_I945GM(dev))
1475
	if (IS_GEN2(dev_priv) || IS_I915GM(dev_priv) || IS_I945GM(dev_priv))
Line 1495... Line 1476...
1495
		panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE;
1476
		panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE;
Line 1496... Line 1477...
1496
 
1477
 
Line 1520... Line 1501...
1520
	return 0;
1501
	return 0;
1521
}
1502
}
Line 1522... Line 1503...
1522
 
1503
 
1523
static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused)
1504
static int i965_setup_backlight(struct intel_connector *connector, enum pipe unused)
1524
{
-
 
1525
	struct drm_device *dev = connector->base.dev;
1505
{
1526
	struct drm_i915_private *dev_priv = dev->dev_private;
1506
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1527
	struct intel_panel *panel = &connector->panel;
1507
	struct intel_panel *panel = &connector->panel;
Line 1528... Line 1508...
1528
	u32 ctl, ctl2, val;
1508
	u32 ctl, ctl2, val;
1529
 
1509
 
Line 1554... Line 1534...
1554
	return 0;
1534
	return 0;
1555
}
1535
}
Line 1556... Line 1536...
1556
 
1536
 
1557
static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe)
1537
static int vlv_setup_backlight(struct intel_connector *connector, enum pipe pipe)
1558
{
-
 
1559
	struct drm_device *dev = connector->base.dev;
1538
{
1560
	struct drm_i915_private *dev_priv = dev->dev_private;
1539
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1561
	struct intel_panel *panel = &connector->panel;
1540
	struct intel_panel *panel = &connector->panel;
Line 1562... Line 1541...
1562
	u32 ctl, ctl2, val;
1541
	u32 ctl, ctl2, val;
1563
 
1542
 
Line 1576... Line 1555...
1576
	if (!panel->backlight.max)
1555
	if (!panel->backlight.max)
1577
		return -ENODEV;
1556
		return -ENODEV;
Line 1578... Line 1557...
1578
 
1557
 
Line 1579... Line 1558...
1579
	panel->backlight.min = get_backlight_min_vbt(connector);
1558
	panel->backlight.min = get_backlight_min_vbt(connector);
1580
 
1559
 
Line 1581... Line 1560...
1581
	val = _vlv_get_backlight(dev, pipe);
1560
	val = _vlv_get_backlight(dev_priv, pipe);
1582
	panel->backlight.level = intel_panel_compute_brightness(connector, val);
1561
	panel->backlight.level = intel_panel_compute_brightness(connector, val);
Line 1588... Line 1567...
1588
}
1567
}
Line 1589... Line 1568...
1589
 
1568
 
1590
static int
1569
static int
1591
bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
1570
bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
1592
{
-
 
1593
	struct drm_device *dev = connector->base.dev;
1571
{
1594
	struct drm_i915_private *dev_priv = dev->dev_private;
1572
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1595
	struct intel_panel *panel = &connector->panel;
1573
	struct intel_panel *panel = &connector->panel;
Line 1596... Line 1574...
1596
	u32 pwm_ctl, val;
1574
	u32 pwm_ctl, val;
1597
 
1575
 
Line 1667... Line 1645...
1667
	return 0;
1645
	return 0;
1668
}
1646
}
Line 1669... Line 1647...
1669
 
1647
 
1670
int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe)
1648
int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe)
1671
{
-
 
1672
	struct drm_device *dev = connector->dev;
1649
{
1673
	struct drm_i915_private *dev_priv = dev->dev_private;
1650
	struct drm_i915_private *dev_priv = to_i915(connector->dev);
1674
	struct intel_connector *intel_connector = to_intel_connector(connector);
1651
	struct intel_connector *intel_connector = to_intel_connector(connector);
1675
	struct intel_panel *panel = &intel_connector->panel;
1652
	struct intel_panel *panel = &intel_connector->panel;
Line 1676... Line 1653...
1676
	int ret;
1653
	int ret;
Line 1723... Line 1700...
1723
 
1700
 
1724
/* Set up chip specific backlight functions */
1701
/* Set up chip specific backlight functions */
1725
static void
1702
static void
1726
intel_panel_init_backlight_funcs(struct intel_panel *panel)
1703
intel_panel_init_backlight_funcs(struct intel_panel *panel)
1727
{
1704
{
1728
	struct intel_connector *intel_connector =
1705
	struct intel_connector *connector =
1729
		container_of(panel, struct intel_connector, panel);
-
 
1730
	struct drm_device *dev = intel_connector->base.dev;
1706
		container_of(panel, struct intel_connector, panel);
Line 1731... Line 1707...
1731
	struct drm_i915_private *dev_priv = dev->dev_private;
1707
	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
1732
 
1708
 
1733
	if (IS_BROXTON(dev)) {
1709
	if (IS_BROXTON(dev_priv)) {
1734
		panel->backlight.setup = bxt_setup_backlight;
1710
		panel->backlight.setup = bxt_setup_backlight;
1735
		panel->backlight.enable = bxt_enable_backlight;
1711
		panel->backlight.enable = bxt_enable_backlight;
1736
		panel->backlight.disable = bxt_disable_backlight;
1712
		panel->backlight.disable = bxt_disable_backlight;
-
 
1713
		panel->backlight.set = bxt_set_backlight;
1737
		panel->backlight.set = bxt_set_backlight;
1714
		panel->backlight.get = bxt_get_backlight;
1738
		panel->backlight.get = bxt_get_backlight;
1715
		panel->backlight.hz_to_pwm = bxt_hz_to_pwm;
1739
	} else if (HAS_PCH_LPT(dev) || HAS_PCH_SPT(dev)) {
1716
	} else if (HAS_PCH_LPT(dev_priv) || HAS_PCH_SPT(dev_priv)) {
1740
		panel->backlight.setup = lpt_setup_backlight;
1717
		panel->backlight.setup = lpt_setup_backlight;
1741
		panel->backlight.enable = lpt_enable_backlight;
1718
		panel->backlight.enable = lpt_enable_backlight;
1742
		panel->backlight.disable = lpt_disable_backlight;
1719
		panel->backlight.disable = lpt_disable_backlight;
1743
		panel->backlight.set = lpt_set_backlight;
1720
		panel->backlight.set = lpt_set_backlight;
1744
		panel->backlight.get = lpt_get_backlight;
1721
		panel->backlight.get = lpt_get_backlight;
1745
		if (HAS_PCH_LPT(dev))
1722
		if (HAS_PCH_LPT(dev_priv))
1746
			panel->backlight.hz_to_pwm = lpt_hz_to_pwm;
1723
			panel->backlight.hz_to_pwm = lpt_hz_to_pwm;
1747
		else
1724
		else
1748
			panel->backlight.hz_to_pwm = spt_hz_to_pwm;
1725
			panel->backlight.hz_to_pwm = spt_hz_to_pwm;
1749
	} else if (HAS_PCH_SPLIT(dev)) {
1726
	} else if (HAS_PCH_SPLIT(dev_priv)) {
1750
		panel->backlight.setup = pch_setup_backlight;
1727
		panel->backlight.setup = pch_setup_backlight;
1751
		panel->backlight.enable = pch_enable_backlight;
1728
		panel->backlight.enable = pch_enable_backlight;
1752
		panel->backlight.disable = pch_disable_backlight;
1729
		panel->backlight.disable = pch_disable_backlight;
1753
		panel->backlight.set = pch_set_backlight;
1730
		panel->backlight.set = pch_set_backlight;
1754
		panel->backlight.get = pch_get_backlight;
1731
		panel->backlight.get = pch_get_backlight;
1755
		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
1732
		panel->backlight.hz_to_pwm = pch_hz_to_pwm;
1756
	} else if (IS_VALLEYVIEW(dev)) {
1733
	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
1757
		if (dev_priv->vbt.has_mipi) {
1734
		if (dev_priv->vbt.has_mipi) {
1758
			panel->backlight.setup = pwm_setup_backlight;
1735
			panel->backlight.setup = pwm_setup_backlight;
1759
			panel->backlight.enable = pwm_enable_backlight;
1736
			panel->backlight.enable = pwm_enable_backlight;
Line 1766... Line 1743...
1766
			panel->backlight.disable = vlv_disable_backlight;
1743
			panel->backlight.disable = vlv_disable_backlight;
1767
			panel->backlight.set = vlv_set_backlight;
1744
			panel->backlight.set = vlv_set_backlight;
1768
			panel->backlight.get = vlv_get_backlight;
1745
			panel->backlight.get = vlv_get_backlight;
1769
			panel->backlight.hz_to_pwm = vlv_hz_to_pwm;
1746
			panel->backlight.hz_to_pwm = vlv_hz_to_pwm;
1770
		}
1747
		}
1771
	} else if (IS_GEN4(dev)) {
1748
	} else if (IS_GEN4(dev_priv)) {
1772
		panel->backlight.setup = i965_setup_backlight;
1749
		panel->backlight.setup = i965_setup_backlight;
1773
		panel->backlight.enable = i965_enable_backlight;
1750
		panel->backlight.enable = i965_enable_backlight;
1774
		panel->backlight.disable = i965_disable_backlight;
1751
		panel->backlight.disable = i965_disable_backlight;
1775
		panel->backlight.set = i9xx_set_backlight;
1752
		panel->backlight.set = i9xx_set_backlight;
1776
		panel->backlight.get = i9xx_get_backlight;
1753
		panel->backlight.get = i9xx_get_backlight;
Line 1812... Line 1789...
1812
 
1789
 
1813
void intel_backlight_register(struct drm_device *dev)
1790
void intel_backlight_register(struct drm_device *dev)
1814
{
1791
{
Line 1815... Line 1792...
1815
	struct intel_connector *connector;
1792
	struct intel_connector *connector;
1816
 
1793
 
1817
	list_for_each_entry(connector, &dev->mode_config.connector_list, base.head)
1794
	for_each_intel_connector(dev, connector)
Line 1818... Line 1795...
1818
		intel_backlight_device_register(connector);
1795
		intel_backlight_device_register(connector);
1819
}
1796
}
1820
 
1797
 
Line 1821... Line 1798...
1821
void intel_backlight_unregister(struct drm_device *dev)
1798
void intel_backlight_unregister(struct drm_device *dev)
1822
{
1799
{
1823
	struct intel_connector *connector;
1800
	struct intel_connector *connector;