Subversion Repositories Kolibri OS

Rev

Rev 6935 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6935 Rev 6937
Line 71... Line 71...
71
#define EDID_QUIRK_FORCE_REDUCED_BLANKING	(1 << 7)
71
#define EDID_QUIRK_FORCE_REDUCED_BLANKING	(1 << 7)
72
/* Force 8bpc */
72
/* Force 8bpc */
73
#define EDID_QUIRK_FORCE_8BPC			(1 << 8)
73
#define EDID_QUIRK_FORCE_8BPC			(1 << 8)
74
/* Force 12bpc */
74
/* Force 12bpc */
75
#define EDID_QUIRK_FORCE_12BPC			(1 << 9)
75
#define EDID_QUIRK_FORCE_12BPC			(1 << 9)
76
/* Force 6bpc */
-
 
77
#define EDID_QUIRK_FORCE_6BPC			(1 << 10)
-
 
78
/* Force 10bpc */
-
 
79
#define EDID_QUIRK_FORCE_10BPC			(1 << 11)
-
 
Line 80... Line 76...
80
 
76
 
81
struct detailed_mode_closure {
77
struct detailed_mode_closure {
82
	struct drm_connector *connector;
78
	struct drm_connector *connector;
83
	struct edid *edid;
79
	struct edid *edid;
Line 101... Line 97...
101
	/* Acer F51 */
97
	/* Acer F51 */
102
	{ "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 },
98
	{ "API", 0x7602, EDID_QUIRK_PREFER_LARGE_60 },
103
	/* Unknown Acer */
99
	/* Unknown Acer */
104
	{ "ACR", 2423, EDID_QUIRK_FIRST_DETAILED_PREFERRED },
100
	{ "ACR", 2423, EDID_QUIRK_FIRST_DETAILED_PREFERRED },
Line 105... Line -...
105
 
-
 
106
	/* AEO model 0 reports 8 bpc, but is a 6 bpc panel */
-
 
107
	{ "AEO", 0, EDID_QUIRK_FORCE_6BPC },
-
 
108
 
101
 
109
	/* Belinea 10 15 55 */
102
	/* Belinea 10 15 55 */
110
	{ "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 },
103
	{ "MAX", 1516, EDID_QUIRK_PREFER_LARGE_60 },
Line 111... Line 104...
111
	{ "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
104
	{ "MAX", 0x77e, EDID_QUIRK_PREFER_LARGE_60 },
Line 117... Line 110...
117
 
110
 
118
	/* Funai Electronics PM36B */
111
	/* Funai Electronics PM36B */
119
	{ "FCM", 13600, EDID_QUIRK_PREFER_LARGE_75 |
112
	{ "FCM", 13600, EDID_QUIRK_PREFER_LARGE_75 |
Line 120... Line -...
120
	  EDID_QUIRK_DETAILED_IN_CM },
-
 
121
 
-
 
122
	/* LGD panel of HP zBook 17 G2, eDP 10 bpc, but reports unknown bpc */
-
 
123
	{ "LGD", 764, EDID_QUIRK_FORCE_10BPC },
113
	  EDID_QUIRK_DETAILED_IN_CM },
124
 
114
 
125
	/* LG Philips LCD LP154W01-A5 */
115
	/* LG Philips LCD LP154W01-A5 */
Line 126... Line 116...
126
	{ "LPL", 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
116
	{ "LPL", 0, EDID_QUIRK_DETAILED_USE_MAXIMUM_SIZE },
Line 147... Line 137...
147
	/* Medion MD 30217 PG */
137
	/* Medion MD 30217 PG */
148
	{ "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
138
	{ "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
Line 149... Line 139...
149
 
139
 
150
	/* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
140
	/* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
151
	{ "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
-
 
152
 
-
 
153
	/* Rotel RSX-1058 forwards sink's EDID but only does HDMI 1.1*/
-
 
154
	{ "ETR", 13896, EDID_QUIRK_FORCE_8BPC },
141
	{ "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
Line 155... Line 142...
155
};
142
};
156
 
143
 
157
/*
144
/*
Line 648... Line 635...
648
};
635
};
Line 649... Line 636...
649
 
636
 
650
/*
637
/*
651
 * Probably taken from CEA-861 spec.
638
 * Probably taken from CEA-861 spec.
-
 
639
 * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c.
-
 
640
 *
652
 * This table is converted from xorg's hw/xfree86/modes/xf86EdidModes.c.
641
 * Index using the VIC.
653
 */
642
 */
-
 
643
static const struct drm_display_mode edid_cea_modes[] = {
-
 
644
	/* 0 - dummy, VICs start at 1 */
654
static const struct drm_display_mode edid_cea_modes[] = {
645
	{ },
655
	/* 1 - 640x480@60Hz */
646
	/* 1 - 640x480@60Hz */
656
	{ DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
647
	{ DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 25175, 640, 656,
657
		   752, 800, 0, 480, 490, 492, 525, 0,
648
		   752, 800, 0, 480, 490, 492, 525, 0,
658
		   DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
649
		   DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
Line 998... Line 989...
998
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
989
		   DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC),
999
	 .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
990
	 .vrefresh = 100, .picture_aspect_ratio = HDMI_PICTURE_ASPECT_16_9, },
1000
};
991
};
Line 1001... Line 992...
1001
 
992
 
1002
/*
993
/*
1003
 * HDMI 1.4 4k modes.
994
 * HDMI 1.4 4k modes. Index using the VIC.
1004
 */
995
 */
-
 
996
static const struct drm_display_mode edid_4k_modes[] = {
-
 
997
	/* 0 - dummy, VICs start at 1 */
1005
static const struct drm_display_mode edid_4k_modes[] = {
998
	{ },
1006
	/* 1 - 3840x2160@30Hz */
999
	/* 1 - 3840x2160@30Hz */
1007
	{ DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000,
1000
	{ DRM_MODE("3840x2160", DRM_MODE_TYPE_DRIVER, 297000,
1008
		   3840, 4016, 4104, 4400, 0,
1001
		   3840, 4016, 4104, 4400, 0,
1009
		   2160, 2168, 2178, 2250, 0,
1002
		   2160, 2168, 2178, 2250, 0,
Line 2556... Line 2549...
2556
		clock = DIV_ROUND_CLOSEST(clock * 1000, 1001);
2549
		clock = DIV_ROUND_CLOSEST(clock * 1000, 1001);
Line 2557... Line 2550...
2557
 
2550
 
2558
	return clock;
2551
	return clock;
Line -... Line 2552...
-
 
2552
}
-
 
2553
 
-
 
2554
static u8 drm_match_cea_mode_clock_tolerance(const struct drm_display_mode *to_match,
-
 
2555
					     unsigned int clock_tolerance)
-
 
2556
{
-
 
2557
	u8 vic;
-
 
2558
 
-
 
2559
	if (!to_match->clock)
-
 
2560
		return 0;
-
 
2561
 
-
 
2562
	for (vic = 1; vic < ARRAY_SIZE(edid_cea_modes); vic++) {
-
 
2563
		const struct drm_display_mode *cea_mode = &edid_cea_modes[vic];
-
 
2564
		unsigned int clock1, clock2;
-
 
2565
 
-
 
2566
		/* Check both 60Hz and 59.94Hz */
-
 
2567
		clock1 = cea_mode->clock;
-
 
2568
		clock2 = cea_mode_alternate_clock(cea_mode);
-
 
2569
 
-
 
2570
		if (abs(to_match->clock - clock1) > clock_tolerance &&
-
 
2571
		    abs(to_match->clock - clock2) > clock_tolerance)
-
 
2572
			continue;
-
 
2573
 
-
 
2574
		if (drm_mode_equal_no_clocks(to_match, cea_mode))
-
 
2575
			return vic;
-
 
2576
	}
-
 
2577
 
-
 
2578
	return 0;
2559
}
2579
}
2560
 
2580
 
2561
/**
2581
/**
2562
 * drm_match_cea_mode - look for a CEA mode matching given mode
2582
 * drm_match_cea_mode - look for a CEA mode matching given mode
2563
 * @to_match: display mode
2583
 * @to_match: display mode
2564
 *
2584
 *
2565
 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
2585
 * Return: The CEA Video ID (VIC) of the mode or 0 if it isn't a CEA-861
2566
 * mode.
2586
 * mode.
2567
 */
2587
 */
2568
u8 drm_match_cea_mode(const struct drm_display_mode *to_match)
2588
u8 drm_match_cea_mode(const struct drm_display_mode *to_match)
Line 2569... Line 2589...
2569
{
2589
{
2570
	u8 mode;
2590
	u8 vic;
Line 2571... Line 2591...
2571
 
2591
 
2572
	if (!to_match->clock)
2592
	if (!to_match->clock)
2573
		return 0;
2593
		return 0;
Line 2574... Line 2594...
2574
 
2594
 
2575
	for (mode = 0; mode < ARRAY_SIZE(edid_cea_modes); mode++) {
2595
	for (vic = 1; vic < ARRAY_SIZE(edid_cea_modes); vic++) {
2576
		const struct drm_display_mode *cea_mode = &edid_cea_modes[mode];
2596
		const struct drm_display_mode *cea_mode = &edid_cea_modes[vic];
Line 2577... Line 2597...
2577
		unsigned int clock1, clock2;
2597
		unsigned int clock1, clock2;
2578
 
2598
 
2579
		/* Check both 60Hz and 59.94Hz */
2599
		/* Check both 60Hz and 59.94Hz */
2580
		clock1 = cea_mode->clock;
2600
		clock1 = cea_mode->clock;
2581
		clock2 = cea_mode_alternate_clock(cea_mode);
2601
		clock2 = cea_mode_alternate_clock(cea_mode);
2582
 
2602
 
2583
		if ((KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock1) ||
2603
		if ((KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock1) ||
2584
		     KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock2)) &&
2604
		     KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock2)) &&
Line -... Line 2605...
-
 
2605
		    drm_mode_equal_no_clocks_no_stereo(to_match, cea_mode))
-
 
2606
			return vic;
-
 
2607
	}
-
 
2608
	return 0;
-
 
2609
}
2585
		    drm_mode_equal_no_clocks_no_stereo(to_match, cea_mode))
2610
EXPORT_SYMBOL(drm_match_cea_mode);
2586
			return mode + 1;
2611
 
2587
	}
2612
static bool drm_valid_cea_vic(u8 vic)
2588
	return 0;
2613
{
2589
}
2614
	return vic > 0 && vic < ARRAY_SIZE(edid_cea_modes);
2590
EXPORT_SYMBOL(drm_match_cea_mode);
2615
}
2591
 
2616
 
2592
/**
2617
/**
2593
 * drm_get_cea_aspect_ratio - get the picture aspect ratio corresponding to
2618
 * drm_get_cea_aspect_ratio - get the picture aspect ratio corresponding to
2594
 * the input VIC from the CEA mode list
-
 
2595
 * @video_code: ID given to each of the CEA modes
-
 
2596
 *
-
 
2597
 * Returns picture aspect ratio
2619
 * the input VIC from the CEA mode list
2598
 */
2620
 * @video_code: ID given to each of the CEA modes
2599
enum hdmi_picture_aspect drm_get_cea_aspect_ratio(const u8 video_code)
2621
 *
Line 2600... Line 2622...
2600
{
2622
 * Returns picture aspect ratio
2601
	/* return picture aspect ratio for video_code - 1 to access the
2623
 */
Line 2620... Line 2642...
2620
		return hdmi_mode->clock;
2642
		return hdmi_mode->clock;
Line 2621... Line 2643...
2621
 
2643
 
2622
	return cea_mode_alternate_clock(hdmi_mode);
2644
	return cea_mode_alternate_clock(hdmi_mode);
Line -... Line 2645...
-
 
2645
}
-
 
2646
 
-
 
2647
static u8 drm_match_hdmi_mode_clock_tolerance(const struct drm_display_mode *to_match,
-
 
2648
					      unsigned int clock_tolerance)
-
 
2649
{
-
 
2650
	u8 vic;
-
 
2651
 
-
 
2652
	if (!to_match->clock)
-
 
2653
		return 0;
-
 
2654
 
-
 
2655
	for (vic = 1; vic < ARRAY_SIZE(edid_4k_modes); vic++) {
-
 
2656
		const struct drm_display_mode *hdmi_mode = &edid_4k_modes[vic];
-
 
2657
		unsigned int clock1, clock2;
-
 
2658
 
-
 
2659
		/* Make sure to also match alternate clocks */
-
 
2660
		clock1 = hdmi_mode->clock;
-
 
2661
		clock2 = hdmi_mode_alternate_clock(hdmi_mode);
-
 
2662
 
-
 
2663
		if (abs(to_match->clock - clock1) > clock_tolerance &&
-
 
2664
		    abs(to_match->clock - clock2) > clock_tolerance)
-
 
2665
			continue;
-
 
2666
 
-
 
2667
		if (drm_mode_equal_no_clocks(to_match, hdmi_mode))
-
 
2668
			return vic;
-
 
2669
	}
-
 
2670
 
-
 
2671
	return 0;
2623
}
2672
}
2624
 
2673
 
2625
/*
2674
/*
2626
 * drm_match_hdmi_mode - look for a HDMI mode matching given mode
2675
 * drm_match_hdmi_mode - look for a HDMI mode matching given mode
2627
 * @to_match: display mode
2676
 * @to_match: display mode
2628
 *
2677
 *
2629
 * An HDMI mode is one defined in the HDMI vendor specific block.
2678
 * An HDMI mode is one defined in the HDMI vendor specific block.
2630
 *
2679
 *
2631
 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
2680
 * Returns the HDMI Video ID (VIC) of the mode or 0 if it isn't one.
2632
 */
2681
 */
2633
static u8 drm_match_hdmi_mode(const struct drm_display_mode *to_match)
2682
static u8 drm_match_hdmi_mode(const struct drm_display_mode *to_match)
Line 2634... Line 2683...
2634
{
2683
{
2635
	u8 mode;
2684
	u8 vic;
Line 2636... Line 2685...
2636
 
2685
 
2637
	if (!to_match->clock)
2686
	if (!to_match->clock)
2638
		return 0;
2687
		return 0;
Line 2639... Line 2688...
2639
 
2688
 
2640
	for (mode = 0; mode < ARRAY_SIZE(edid_4k_modes); mode++) {
2689
	for (vic = 1; vic < ARRAY_SIZE(edid_4k_modes); vic++) {
2641
		const struct drm_display_mode *hdmi_mode = &edid_4k_modes[mode];
2690
		const struct drm_display_mode *hdmi_mode = &edid_4k_modes[vic];
Line 2642... Line 2691...
2642
		unsigned int clock1, clock2;
2691
		unsigned int clock1, clock2;
2643
 
2692
 
2644
		/* Make sure to also match alternate clocks */
2693
		/* Make sure to also match alternate clocks */
2645
		clock1 = hdmi_mode->clock;
2694
		clock1 = hdmi_mode->clock;
2646
		clock2 = hdmi_mode_alternate_clock(hdmi_mode);
2695
		clock2 = hdmi_mode_alternate_clock(hdmi_mode);
2647
 
2696
 
2648
		if ((KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock1) ||
2697
		if ((KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock1) ||
Line -... Line 2698...
-
 
2698
		     KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock2)) &&
-
 
2699
		    drm_mode_equal_no_clocks_no_stereo(to_match, hdmi_mode))
-
 
2700
			return vic;
-
 
2701
	}
-
 
2702
	return 0;
2649
		     KHZ2PICOS(to_match->clock) == KHZ2PICOS(clock2)) &&
2703
}
2650
		    drm_mode_equal_no_clocks_no_stereo(to_match, hdmi_mode))
2704
 
2651
			return mode + 1;
2705
static bool drm_valid_hdmi_vic(u8 vic)
2652
	}
2706
{
2653
	return 0;
2707
	return vic > 0 && vic < ARRAY_SIZE(edid_4k_modes);
Line 2670... Line 2724...
2670
	 * with the alternate clock for certain CEA modes.
2724
	 * with the alternate clock for certain CEA modes.
2671
	 */
2725
	 */
2672
	list_for_each_entry(mode, &connector->probed_modes, head) {
2726
	list_for_each_entry(mode, &connector->probed_modes, head) {
2673
		const struct drm_display_mode *cea_mode = NULL;
2727
		const struct drm_display_mode *cea_mode = NULL;
2674
		struct drm_display_mode *newmode;
2728
		struct drm_display_mode *newmode;
2675
		u8 mode_idx = drm_match_cea_mode(mode) - 1;
2729
		u8 vic = drm_match_cea_mode(mode);
2676
		unsigned int clock1, clock2;
2730
		unsigned int clock1, clock2;
Line 2677... Line 2731...
2677
 
2731
 
2678
		if (mode_idx < ARRAY_SIZE(edid_cea_modes)) {
2732
		if (drm_valid_cea_vic(vic)) {
2679
			cea_mode = &edid_cea_modes[mode_idx];
2733
			cea_mode = &edid_cea_modes[vic];
2680
			clock2 = cea_mode_alternate_clock(cea_mode);
2734
			clock2 = cea_mode_alternate_clock(cea_mode);
2681
		} else {
2735
		} else {
2682
			mode_idx = drm_match_hdmi_mode(mode) - 1;
2736
			vic = drm_match_hdmi_mode(mode);
2683
			if (mode_idx < ARRAY_SIZE(edid_4k_modes)) {
2737
			if (drm_valid_hdmi_vic(vic)) {
2684
				cea_mode = &edid_4k_modes[mode_idx];
2738
				cea_mode = &edid_4k_modes[vic];
2685
				clock2 = hdmi_mode_alternate_clock(cea_mode);
2739
				clock2 = hdmi_mode_alternate_clock(cea_mode);
2686
			}
2740
			}
Line 2687... Line 2741...
2687
		}
2741
		}
Line 2730... Line 2784...
2730
				const u8 *video_db, u8 video_len,
2784
				const u8 *video_db, u8 video_len,
2731
				u8 video_index)
2785
				u8 video_index)
2732
{
2786
{
2733
	struct drm_device *dev = connector->dev;
2787
	struct drm_device *dev = connector->dev;
2734
	struct drm_display_mode *newmode;
2788
	struct drm_display_mode *newmode;
2735
	u8 cea_mode;
2789
	u8 vic;
Line 2736... Line 2790...
2736
 
2790
 
2737
	if (video_db == NULL || video_index >= video_len)
2791
	if (video_db == NULL || video_index >= video_len)
Line 2738... Line 2792...
2738
		return NULL;
2792
		return NULL;
2739
 
2793
 
2740
	/* CEA modes are numbered 1..127 */
2794
	/* CEA modes are numbered 1..127 */
2741
	cea_mode = (video_db[video_index] & 127) - 1;
2795
	vic = (video_db[video_index] & 127);
Line 2742... Line 2796...
2742
	if (cea_mode >= ARRAY_SIZE(edid_cea_modes))
2796
	if (!drm_valid_cea_vic(vic))
2743
		return NULL;
2797
		return NULL;
2744
 
2798
 
Line 2745... Line 2799...
2745
	newmode = drm_mode_duplicate(dev, &edid_cea_modes[cea_mode]);
2799
	newmode = drm_mode_duplicate(dev, &edid_cea_modes[vic]);
Line 2835... Line 2889...
2835
static int add_hdmi_mode(struct drm_connector *connector, u8 vic)
2889
static int add_hdmi_mode(struct drm_connector *connector, u8 vic)
2836
{
2890
{
2837
	struct drm_device *dev = connector->dev;
2891
	struct drm_device *dev = connector->dev;
2838
	struct drm_display_mode *newmode;
2892
	struct drm_display_mode *newmode;
Line 2839... Line -...
2839
 
-
 
2840
	vic--; /* VICs start at 1 */
2893
 
2841
	if (vic >= ARRAY_SIZE(edid_4k_modes)) {
2894
	if (!drm_valid_hdmi_vic(vic)) {
2842
		DRM_ERROR("Unknown HDMI VIC: %d\n", vic);
2895
		DRM_ERROR("Unknown HDMI VIC: %d\n", vic);
2843
		return 0;
2896
		return 0;
Line 2844... Line 2897...
2844
	}
2897
	}
Line 3127... Line 3180...
3127
 
3180
 
3128
static void fixup_detailed_cea_mode_clock(struct drm_display_mode *mode)
3181
static void fixup_detailed_cea_mode_clock(struct drm_display_mode *mode)
3129
{
3182
{
3130
	const struct drm_display_mode *cea_mode;
3183
	const struct drm_display_mode *cea_mode;
3131
	int clock1, clock2, clock;
3184
	int clock1, clock2, clock;
3132
	u8 mode_idx;
3185
	u8 vic;
Line -... Line 3186...
-
 
3186
	const char *type;
-
 
3187
 
-
 
3188
	/*
-
 
3189
	 * allow 5kHz clock difference either way to account for
3133
	const char *type;
3190
	 * the 10kHz clock resolution limit of detailed timings.
3134
 
3191
	 */
3135
	mode_idx = drm_match_cea_mode(mode) - 1;
3192
	vic = drm_match_cea_mode_clock_tolerance(mode, 5);
3136
	if (mode_idx < ARRAY_SIZE(edid_cea_modes)) {
3193
	if (drm_valid_cea_vic(vic)) {
3137
		type = "CEA";
3194
		type = "CEA";
3138
		cea_mode = &edid_cea_modes[mode_idx];
3195
		cea_mode = &edid_cea_modes[vic];
3139
		clock1 = cea_mode->clock;
3196
		clock1 = cea_mode->clock;
3140
		clock2 = cea_mode_alternate_clock(cea_mode);
3197
		clock2 = cea_mode_alternate_clock(cea_mode);
3141
	} else {
3198
	} else {
3142
		mode_idx = drm_match_hdmi_mode(mode) - 1;
3199
		vic = drm_match_hdmi_mode_clock_tolerance(mode, 5);
3143
		if (mode_idx < ARRAY_SIZE(edid_4k_modes)) {
3200
		if (drm_valid_hdmi_vic(vic)) {
3144
			type = "HDMI";
3201
			type = "HDMI";
3145
			cea_mode = &edid_4k_modes[mode_idx];
3202
			cea_mode = &edid_4k_modes[vic];
3146
			clock1 = cea_mode->clock;
3203
			clock1 = cea_mode->clock;
3147
			clock2 = hdmi_mode_alternate_clock(cea_mode);
3204
			clock2 = hdmi_mode_alternate_clock(cea_mode);
3148
		} else {
3205
		} else {
Line 3158... Line 3215...
3158
 
3215
 
3159
	if (mode->clock == clock)
3216
	if (mode->clock == clock)
Line 3160... Line 3217...
3160
		return;
3217
		return;
3161
 
3218
 
3162
	DRM_DEBUG("detailed mode matches %s VIC %d, adjusting clock %d -> %d\n",
3219
	DRM_DEBUG("detailed mode matches %s VIC %d, adjusting clock %d -> %d\n",
3163
		  type, mode_idx + 1, mode->clock, clock);
3220
		  type, vic, mode->clock, clock);
Line 3164... Line 3221...
3164
	mode->clock = clock;
3221
	mode->clock = clock;
3165
}
3222
}
Line 3831... Line 3888...
3831
	if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
3888
	if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75))
3832
		edid_fixup_preferred(connector, quirks);
3889
		edid_fixup_preferred(connector, quirks);
Line 3833... Line 3890...
3833
 
3890
 
Line 3834... Line -...
3834
	drm_add_display_info(edid, &connector->display_info, connector);
-
 
3835
 
-
 
3836
	if (quirks & EDID_QUIRK_FORCE_6BPC)
-
 
3837
		connector->display_info.bpc = 6;
3891
	drm_add_display_info(edid, &connector->display_info, connector);
3838
 
3892
 
Line 3839... Line -...
3839
	if (quirks & EDID_QUIRK_FORCE_8BPC)
-
 
3840
		connector->display_info.bpc = 8;
-
 
3841
 
-
 
3842
	if (quirks & EDID_QUIRK_FORCE_10BPC)
3893
	if (quirks & EDID_QUIRK_FORCE_8BPC)
3843
		connector->display_info.bpc = 10;
3894
		connector->display_info.bpc = 8;
Line 3844... Line 3895...
3844
 
3895
 
3845
	if (quirks & EDID_QUIRK_FORCE_12BPC)
3896
	if (quirks & EDID_QUIRK_FORCE_12BPC)