Subversion Repositories Kolibri OS

Rev

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

Rev 3263 Rev 3480
Line 50... Line 50...
50
struct drm_device *main_device;
50
struct drm_device *main_device;
Line 51... Line 51...
51
 
51
 
Line 52... Line 52...
52
struct drm_file *drm_file_handlers[256];
52
struct drm_file *drm_file_handlers[256];
-
 
53
 
53
 
54
static int i915_modeset __read_mostly = 1;
54
static int i915_modeset __read_mostly = 1;
55
module_param_named(modeset, i915_modeset, int, 0400);
55
MODULE_PARM_DESC(modeset,
56
MODULE_PARM_DESC(modeset,
Line 56... Line 57...
56
		"Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, "
57
		"Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, "
-
 
58
		"1=on, -1=force vga console preference [default])");
57
		"1=on, -1=force vga console preference [default])");
59
 
58
 
60
 
59
 
61
int i915_panel_ignore_lid __read_mostly         =  1;
Line 60... Line 62...
60
int i915_panel_ignore_lid __read_mostly         =  0;
62
module_param_named(panel_ignore_lid, i915_panel_ignore_lid, int, 0600);
-
 
63
MODULE_PARM_DESC(panel_ignore_lid,
61
MODULE_PARM_DESC(panel_ignore_lid,
64
		"Override lid status (0=autodetect, 1=autodetect disabled [default], "
62
		"Override lid status (0=autodetect [default], 1=lid open, "
65
		"-1=force lid closed, -2=force lid open)");
Line 63... Line 66...
63
		"-1=lid closed)");
66
 
64
 
-
 
-
 
67
unsigned int i915_powersave  __read_mostly      =  0;
65
unsigned int i915_powersave  __read_mostly      =  0;
68
module_param_named(powersave, i915_powersave, int, 0600);
66
MODULE_PARM_DESC(powersave,
69
MODULE_PARM_DESC(powersave,
Line 67... Line 70...
67
		"Enable powersavings, fbc, downclocking, etc. (default: true)");
70
		"Enable powersavings, fbc, downclocking, etc. (default: true)");
-
 
71
 
68
 
72
int i915_semaphores __read_mostly = -1;
69
int i915_semaphores __read_mostly = -1;
73
module_param_named(semaphores, i915_semaphores, int, 0600);
70
 
74
MODULE_PARM_DESC(semaphores,
71
MODULE_PARM_DESC(semaphores,
75
		"Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))");
72
		"Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))");
76
 
73
 
77
int i915_enable_rc6 __read_mostly      = 0;
Line 74... Line 78...
74
int i915_enable_rc6 __read_mostly      = 0;
78
module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0400);
-
 
79
MODULE_PARM_DESC(i915_enable_rc6,
75
MODULE_PARM_DESC(i915_enable_rc6,
80
		"Enable power-saving render C-state 6. "
76
		"Enable power-saving render C-state 6. "
81
		"Different stages can be selected via bitmask values "
77
		"Different stages can be selected via bitmask values "
82
		"(0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). "
Line 78... Line 83...
78
		"(0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). "
83
		"For example, 3 would enable rc6 and deep rc6, and 7 would enable everything. "
-
 
84
		"default: -1 (use per-chip default)");
79
		"For example, 3 would enable rc6 and deep rc6, and 7 would enable everything. "
85
 
80
		"default: -1 (use per-chip default)");
86
int i915_enable_fbc __read_mostly      =  0;
81
 
87
module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600);
Line 82... Line 88...
82
int i915_enable_fbc __read_mostly      =  0;
88
MODULE_PARM_DESC(i915_enable_fbc,
-
 
89
		"Enable frame buffer compression for power savings "
83
MODULE_PARM_DESC(i915_enable_fbc,
90
		"(default: -1 (use per-chip default))");
84
		"Enable frame buffer compression for power savings "
91
 
85
		"(default: -1 (use per-chip default))");
92
unsigned int i915_lvds_downclock  __read_mostly =  0;
Line 86... Line 93...
86
 
93
module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400);
-
 
94
MODULE_PARM_DESC(lvds_downclock,
87
unsigned int i915_lvds_downclock  __read_mostly =  0;
95
		"Use panel (LVDS/eDP) downclocking for power savings "
88
MODULE_PARM_DESC(lvds_downclock,
96
		"(default: false)");
89
		"Use panel (LVDS/eDP) downclocking for power savings "
97
 
Line 90... Line 98...
90
		"(default: false)");
98
int i915_lvds_channel_mode __read_mostly;
-
 
99
module_param_named(lvds_channel_mode, i915_lvds_channel_mode, int, 0600);
91
 
100
MODULE_PARM_DESC(lvds_channel_mode,
92
int i915_lvds_channel_mode __read_mostly;
101
		 "Specify LVDS channel mode "
93
MODULE_PARM_DESC(lvds_channel_mode,
102
		 "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)");
Line 94... Line 103...
94
		 "Specify LVDS channel mode "
103
 
-
 
104
int i915_panel_use_ssc __read_mostly = -1;
95
		 "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)");
105
module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600);
Line 96... Line 106...
96
 
106
MODULE_PARM_DESC(lvds_use_ssc,
-
 
107
		"Use Spread Spectrum Clock with panels [LVDS/eDP] "
97
int i915_panel_use_ssc __read_mostly = -1;
108
		"(default: auto from VBT)");
98
MODULE_PARM_DESC(lvds_use_ssc,
109
 
99
		"Use Spread Spectrum Clock with panels [LVDS/eDP] "
110
int i915_vbt_sdvo_panel_type __read_mostly      = -1;
100
		"(default: auto from VBT)");
111
module_param_named(vbt_sdvo_panel_type, i915_vbt_sdvo_panel_type, int, 0600);
Line 101... Line 112...
101
 
112
MODULE_PARM_DESC(vbt_sdvo_panel_type,
-
 
113
		"Override/Ignore selection of SDVO panel mode in the VBT "
102
int i915_vbt_sdvo_panel_type __read_mostly      = -1;
114
		"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
103
MODULE_PARM_DESC(vbt_sdvo_panel_type,
115
 
Line 104... Line 116...
104
		"Override/Ignore selection of SDVO panel mode in the VBT "
116
static bool i915_try_reset __read_mostly = true;
-
 
117
module_param_named(reset, i915_try_reset, bool, 0600);
105
		"(-2=ignore, -1=auto [default], index in VBT BIOS table)");
118
MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)");
106
 
119
 
107
static bool i915_try_reset __read_mostly = true;
120
bool i915_enable_hangcheck __read_mostly = false;
108
MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)");
121
module_param_named(enable_hangcheck, i915_enable_hangcheck, bool, 0644);
Line 252... Line 265...
252
	.need_gfx_hws = 1, .has_hotplug = 1,
265
	.need_gfx_hws = 1, .has_hotplug = 1,
253
	.has_fbc = 0,
266
	.has_fbc = 0,
254
	.has_bsd_ring = 1,
267
	.has_bsd_ring = 1,
255
	.has_blt_ring = 1,
268
	.has_blt_ring = 1,
256
	.is_valleyview = 1,
269
	.is_valleyview = 1,
-
 
270
	.display_mmio_offset = VLV_DISPLAY_BASE,
257
};
271
};
Line 258... Line 272...
258
 
272
 
259
static const struct intel_device_info intel_valleyview_d_info = {
273
static const struct intel_device_info intel_valleyview_d_info = {
260
	.gen = 7,
274
	.gen = 7,
261
	.need_gfx_hws = 1, .has_hotplug = 1,
275
	.need_gfx_hws = 1, .has_hotplug = 1,
262
	.has_fbc = 0,
276
	.has_fbc = 0,
263
	.has_bsd_ring = 1,
277
	.has_bsd_ring = 1,
264
	.has_blt_ring = 1,
278
	.has_blt_ring = 1,
-
 
279
	.is_valleyview = 1,
265
	.is_valleyview = 1,
280
	.display_mmio_offset = VLV_DISPLAY_BASE,
Line 266... Line 281...
266
};
281
};
267
 
282
 
268
static const struct intel_device_info intel_haswell_d_info = {
283
static const struct intel_device_info intel_haswell_d_info = {
Line 348... Line 363...
348
	INTEL_VGA_DEVICE(0x0A1A, &intel_haswell_d_info), /* ULT GT2 server */
363
	INTEL_VGA_DEVICE(0x0A1A, &intel_haswell_d_info), /* ULT GT2 server */
349
	INTEL_VGA_DEVICE(0x0A2A, &intel_haswell_d_info), /* ULT GT2 server */
364
	INTEL_VGA_DEVICE(0x0A2A, &intel_haswell_d_info), /* ULT GT2 server */
350
	INTEL_VGA_DEVICE(0x0A06, &intel_haswell_m_info), /* ULT GT1 mobile */
365
	INTEL_VGA_DEVICE(0x0A06, &intel_haswell_m_info), /* ULT GT1 mobile */
351
	INTEL_VGA_DEVICE(0x0A16, &intel_haswell_m_info), /* ULT GT2 mobile */
366
	INTEL_VGA_DEVICE(0x0A16, &intel_haswell_m_info), /* ULT GT2 mobile */
352
	INTEL_VGA_DEVICE(0x0A26, &intel_haswell_m_info), /* ULT GT2 mobile */
367
	INTEL_VGA_DEVICE(0x0A26, &intel_haswell_m_info), /* ULT GT2 mobile */
-
 
368
	INTEL_VGA_DEVICE(0x0D02, &intel_haswell_d_info), /* CRW GT1 desktop */
353
	INTEL_VGA_DEVICE(0x0D12, &intel_haswell_d_info), /* CRW GT1 desktop */
369
	INTEL_VGA_DEVICE(0x0D12, &intel_haswell_d_info), /* CRW GT2 desktop */
354
	INTEL_VGA_DEVICE(0x0D22, &intel_haswell_d_info), /* CRW GT2 desktop */
370
	INTEL_VGA_DEVICE(0x0D22, &intel_haswell_d_info), /* CRW GT2 desktop */
355
	INTEL_VGA_DEVICE(0x0D32, &intel_haswell_d_info), /* CRW GT2 desktop */
371
	INTEL_VGA_DEVICE(0x0D0A, &intel_haswell_d_info), /* CRW GT1 server */
356
	INTEL_VGA_DEVICE(0x0D1A, &intel_haswell_d_info), /* CRW GT1 server */
372
	INTEL_VGA_DEVICE(0x0D1A, &intel_haswell_d_info), /* CRW GT2 server */
357
	INTEL_VGA_DEVICE(0x0D2A, &intel_haswell_d_info), /* CRW GT2 server */
373
	INTEL_VGA_DEVICE(0x0D2A, &intel_haswell_d_info), /* CRW GT2 server */
358
	INTEL_VGA_DEVICE(0x0D3A, &intel_haswell_d_info), /* CRW GT2 server */
374
	INTEL_VGA_DEVICE(0x0D06, &intel_haswell_m_info), /* CRW GT1 mobile */
359
	INTEL_VGA_DEVICE(0x0D16, &intel_haswell_m_info), /* CRW GT1 mobile */
375
	INTEL_VGA_DEVICE(0x0D16, &intel_haswell_m_info), /* CRW GT2 mobile */
360
	INTEL_VGA_DEVICE(0x0D26, &intel_haswell_m_info), /* CRW GT2 mobile */
376
	INTEL_VGA_DEVICE(0x0D26, &intel_haswell_m_info), /* CRW GT2 mobile */
361
	INTEL_VGA_DEVICE(0x0D36, &intel_haswell_m_info), /* CRW GT2 mobile */
-
 
362
	INTEL_VGA_DEVICE(0x0f30, &intel_valleyview_m_info),
377
	INTEL_VGA_DEVICE(0x0f30, &intel_valleyview_m_info),
363
	INTEL_VGA_DEVICE(0x0157, &intel_valleyview_m_info),
378
	INTEL_VGA_DEVICE(0x0157, &intel_valleyview_m_info),
364
	INTEL_VGA_DEVICE(0x0155, &intel_valleyview_d_info),
379
	INTEL_VGA_DEVICE(0x0155, &intel_valleyview_d_info),
365
    {0, 0, 0}
380
    {0, 0, 0}
366
};
381
};
Line 452... Line 467...
452
 
467
 
453
    ent = find_pci_device(&device, pciidlist);
468
    ent = find_pci_device(&device, pciidlist);
454
    if( unlikely(ent == NULL) )
469
    if( unlikely(ent == NULL) )
455
    {
470
    {
456
        dbgprintf("device not found\n");
471
        dbgprintf("device not found\n");
457
        return 0;
472
        return -ENODEV;
Line 458... Line 473...
458
    };
473
    };
459
 
474
 
Line 728... Line 743...
728
			dev_priv->gt.force_wake_get(dev_priv); \
743
			dev_priv->gt.force_wake_get(dev_priv); \
729
		val = read##y(dev_priv->regs + reg); \
744
		val = read##y(dev_priv->regs + reg); \
730
		if (dev_priv->forcewake_count == 0) \
745
		if (dev_priv->forcewake_count == 0) \
731
			dev_priv->gt.force_wake_put(dev_priv); \
746
			dev_priv->gt.force_wake_put(dev_priv); \
732
		spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \
747
		spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \
733
	} else if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \
-
 
734
		val = read##y(dev_priv->regs + reg + 0x180000);		\
-
 
735
	} else { \
748
	} else { \
736
		val = read##y(dev_priv->regs + reg); \
749
		val = read##y(dev_priv->regs + reg); \
737
	} \
750
	} \
738
	return val; \
751
	return val; \
739
}
752
}
Line 755... Line 768...
755
		ilk_dummy_write(dev_priv); \
768
		ilk_dummy_write(dev_priv); \
756
	if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \
769
	if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \
757
		DRM_ERROR("Unknown unclaimed register before writing to %x\n", reg); \
770
		DRM_ERROR("Unknown unclaimed register before writing to %x\n", reg); \
758
		I915_WRITE_NOTRACE(GEN7_ERR_INT, ERR_INT_MMIO_UNCLAIMED); \
771
		I915_WRITE_NOTRACE(GEN7_ERR_INT, ERR_INT_MMIO_UNCLAIMED); \
759
	} \
772
	} \
760
	if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \
-
 
761
		write##y(val, dev_priv->regs + reg + 0x180000);		\
-
 
762
	} else {							\
-
 
763
	write##y(val, dev_priv->regs + reg); \
773
	write##y(val, dev_priv->regs + reg); \
764
	}								\
-
 
765
	if (unlikely(__fifo_ret)) { \
774
	if (unlikely(__fifo_ret)) { \
766
		gen6_gt_check_fifodbg(dev_priv); \
775
		gen6_gt_check_fifodbg(dev_priv); \
767
	} \
776
	} \
768
	if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \
777
	if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \
769
		DRM_ERROR("Unclaimed write to %x\n", reg); \
778
		DRM_ERROR("Unclaimed write to %x\n", reg); \