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); \ |