Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
bad720ff
Commit
bad720ff
authored
Oct 22, 2009
by
Eric Anholt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm/i915: Add initial bits for VGA modesetting bringup on Sandybridge.
Signed-off-by:
Eric Anholt
<
eric@anholt.net
>
parent
1089e300
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
88 additions
and
56 deletions
+88
-56
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_debugfs.c
+1
-1
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_dma.c
+11
-5
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_drv.h
+25
-1
drivers/gpu/drm/i915/i915_gem.c
drivers/gpu/drm/i915/i915_gem.c
+1
-1
drivers/gpu/drm/i915/i915_gem_tiling.c
drivers/gpu/drm/i915/i915_gem_tiling.c
+1
-1
drivers/gpu/drm/i915/i915_irq.c
drivers/gpu/drm/i915/i915_irq.c
+9
-9
drivers/gpu/drm/i915/intel_bios.c
drivers/gpu/drm/i915/intel_bios.c
+2
-1
drivers/gpu/drm/i915/intel_crt.c
drivers/gpu/drm/i915/intel_crt.c
+7
-7
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_display.c
+28
-28
drivers/gpu/drm/i915/intel_lvds.c
drivers/gpu/drm/i915/intel_lvds.c
+1
-1
drivers/gpu/drm/i915/intel_overlay.c
drivers/gpu/drm/i915/intel_overlay.c
+1
-1
include/drm/drm_pciids.h
include/drm/drm_pciids.h
+1
-0
No files found.
drivers/gpu/drm/i915/i915_debugfs.c
View file @
bad720ff
...
...
@@ -162,7 +162,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
struct
drm_device
*
dev
=
node
->
minor
->
dev
;
drm_i915_private_t
*
dev_priv
=
dev
->
dev_private
;
if
(
!
IS_IRONLAKE
(
dev
))
{
if
(
!
HAS_PCH_SPLIT
(
dev
))
{
seq_printf
(
m
,
"Interrupt enable: %08x
\n
"
,
I915_READ
(
IER
));
seq_printf
(
m
,
"Interrupt identity: %08x
\n
"
,
...
...
drivers/gpu/drm/i915/i915_dma.c
View file @
bad720ff
...
...
@@ -1094,15 +1094,21 @@ static int i915_probe_agp(struct drm_device *dev, uint32_t *aperture_size,
* Some of the preallocated space is taken by the GTT
* and popup. GTT is 1K per MB of aperture size, and popup is 4K.
*/
if
(
IS_G4X
(
dev
)
||
IS_PINEVIEW
(
dev
)
||
IS_IRONLAKE
(
dev
))
if
(
IS_G4X
(
dev
)
||
IS_PINEVIEW
(
dev
)
||
IS_IRONLAKE
(
dev
)
||
IS_GEN6
(
dev
)
)
overhead
=
4096
;
else
overhead
=
(
*
aperture_size
/
1024
)
+
4096
;
switch
(
tmp
&
INTEL_GMCH_GMS_MASK
)
{
case
INTEL_855_GMCH_GMS_DISABLED
:
DRM_ERROR
(
"video memory is disabled
\n
"
);
return
-
1
;
/* XXX: This is what my A1 silicon has. */
if
(
IS_GEN6
(
dev
))
{
stolen
=
64
*
1024
*
1024
;
}
else
{
DRM_ERROR
(
"video memory is disabled
\n
"
);
return
-
1
;
}
break
;
case
INTEL_855_GMCH_GMS_STOLEN_1M
:
stolen
=
1
*
1024
*
1024
;
break
;
...
...
@@ -1180,7 +1186,7 @@ static unsigned long i915_gtt_to_phys(struct drm_device *dev,
int
gtt_offset
,
gtt_size
;
if
(
IS_I965G
(
dev
))
{
if
(
IS_G4X
(
dev
)
||
IS_IRONLAKE
(
dev
))
{
if
(
IS_G4X
(
dev
)
||
IS_IRONLAKE
(
dev
)
||
IS_GEN6
(
dev
)
)
{
gtt_offset
=
2
*
1024
*
1024
;
gtt_size
=
2
*
1024
*
1024
;
}
else
{
...
...
@@ -1563,7 +1569,7 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
dev
->
driver
->
get_vblank_counter
=
i915_get_vblank_counter
;
dev
->
max_vblank_count
=
0xffffff
;
/* only 24 bits of frame count */
if
(
IS_G4X
(
dev
)
||
IS_IRONLAKE
(
dev
))
{
if
(
IS_G4X
(
dev
)
||
IS_IRONLAKE
(
dev
)
||
IS_GEN6
(
dev
)
)
{
dev
->
max_vblank_count
=
0xffffffff
;
/* full 32 bit counter */
dev
->
driver
->
get_vblank_counter
=
gm45_get_vblank_counter
;
}
...
...
drivers/gpu/drm/i915/i915_drv.h
View file @
bad720ff
...
...
@@ -1065,7 +1065,7 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
#define IS_845G(dev) ((dev)->pci_device == 0x2562)
#define IS_I85X(dev) ((dev)->pci_device == 0x3582)
#define IS_I865G(dev) ((dev)->pci_device == 0x2572)
#define IS_
I8XX
(dev) (INTEL_INFO(dev)->is_i8xx)
#define IS_
GEN2
(dev) (INTEL_INFO(dev)->is_i8xx)
#define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g)
#define IS_I915GM(dev) ((dev)->pci_device == 0x2592)
#define IS_I945G(dev) ((dev)->pci_device == 0x2772)
...
...
@@ -1084,8 +1084,29 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
#define IS_I9XX(dev) (INTEL_INFO(dev)->is_i9xx)
#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile)
#define IS_GEN3(dev) (IS_I915G(dev) || \
IS_I915GM(dev) || \
IS_I945G(dev) || \
IS_I945GM(dev) || \
IS_G33(dev) || \
IS_PINEVIEW(dev))
#define IS_GEN4(dev) ((dev)->pci_device == 0x2972 || \
(dev)->pci_device == 0x2982 || \
(dev)->pci_device == 0x2992 || \
(dev)->pci_device == 0x29A2 || \
(dev)->pci_device == 0x2A02 || \
(dev)->pci_device == 0x2A12 || \
(dev)->pci_device == 0x2E02 || \
(dev)->pci_device == 0x2E12 || \
(dev)->pci_device == 0x2E22 || \
(dev)->pci_device == 0x2E32 || \
(dev)->pci_device == 0x2A42 || \
(dev)->pci_device == 0x2E42)
#define I915_NEED_GFX_HWS(dev) (INTEL_INFO(dev)->need_gfx_hws)
#define IS_GEN6(dev) ((dev)->pci_device == 0x0102)
/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte
* rows, which changed the alignment requirements and fence programming.
*/
...
...
@@ -1106,6 +1127,9 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller);
#define I915_HAS_FBC(dev) (INTEL_INFO(dev)->has_fbc)
#define I915_HAS_RC6(dev) (INTEL_INFO(dev)->has_rc6)
#define HAS_PCH_SPLIT(dev) (IS_IRONLAKE(dev) || \
IS_GEN6(dev))
#define PRIMARY_RINGBUFFER_SIZE (128*1024)
#endif
drivers/gpu/drm/i915/i915_gem.c
View file @
bad720ff
...
...
@@ -1818,7 +1818,7 @@ i915_do_wait_request(struct drm_device *dev, uint32_t seqno, int interruptible)
return
-
EIO
;
if
(
!
i915_seqno_passed
(
i915_get_gem_seqno
(
dev
),
seqno
))
{
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
ier
=
I915_READ
(
DEIER
)
|
I915_READ
(
GTIER
);
else
ier
=
I915_READ
(
IER
);
...
...
drivers/gpu/drm/i915/i915_gem_tiling.c
View file @
bad720ff
...
...
@@ -92,7 +92,7 @@ i915_gem_detect_bit_6_swizzle(struct drm_device *dev)
uint32_t
swizzle_x
=
I915_BIT_6_SWIZZLE_UNKNOWN
;
uint32_t
swizzle_y
=
I915_BIT_6_SWIZZLE_UNKNOWN
;
if
(
IS_IRONLAKE
(
dev
))
{
if
(
IS_IRONLAKE
(
dev
)
||
IS_GEN6
(
dev
)
)
{
/* On Ironlake whatever DRAM config, GPU always do
* same swizzling setup.
*/
...
...
drivers/gpu/drm/i915/i915_irq.c
View file @
bad720ff
...
...
@@ -842,7 +842,7 @@ irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
atomic_inc
(
&
dev_priv
->
irq_received
);
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
return
ironlake_irq_handler
(
dev
);
iir
=
I915_READ
(
IIR
);
...
...
@@ -1003,7 +1003,7 @@ void i915_user_irq_get(struct drm_device *dev)
spin_lock_irqsave
(
&
dev_priv
->
user_irq_lock
,
irqflags
);
if
(
dev
->
irq_enabled
&&
(
++
dev_priv
->
user_irq_refcount
==
1
))
{
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
ironlake_enable_graphics_irq
(
dev_priv
,
GT_USER_INTERRUPT
);
else
i915_enable_irq
(
dev_priv
,
I915_USER_INTERRUPT
);
...
...
@@ -1019,7 +1019,7 @@ void i915_user_irq_put(struct drm_device *dev)
spin_lock_irqsave
(
&
dev_priv
->
user_irq_lock
,
irqflags
);
BUG_ON
(
dev
->
irq_enabled
&&
dev_priv
->
user_irq_refcount
<=
0
);
if
(
dev
->
irq_enabled
&&
(
--
dev_priv
->
user_irq_refcount
==
0
))
{
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
ironlake_disable_graphics_irq
(
dev_priv
,
GT_USER_INTERRUPT
);
else
i915_disable_irq
(
dev_priv
,
I915_USER_INTERRUPT
);
...
...
@@ -1127,7 +1127,7 @@ int i915_enable_vblank(struct drm_device *dev, int pipe)
return
-
EINVAL
;
spin_lock_irqsave
(
&
dev_priv
->
user_irq_lock
,
irqflags
);
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
ironlake_enable_display_irq
(
dev_priv
,
(
pipe
==
0
)
?
DE_PIPEA_VBLANK:
DE_PIPEB_VBLANK
);
else
if
(
IS_I965G
(
dev
))
...
...
@@ -1149,7 +1149,7 @@ void i915_disable_vblank(struct drm_device *dev, int pipe)
unsigned
long
irqflags
;
spin_lock_irqsave
(
&
dev_priv
->
user_irq_lock
,
irqflags
);
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
ironlake_disable_display_irq
(
dev_priv
,
(
pipe
==
0
)
?
DE_PIPEA_VBLANK:
DE_PIPEB_VBLANK
);
else
...
...
@@ -1163,7 +1163,7 @@ void i915_enable_interrupt (struct drm_device *dev)
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
if
(
!
IS_IRONLAKE
(
dev
))
if
(
!
HAS_PCH_SPLIT
(
dev
))
opregion_enable_asle
(
dev
);
dev_priv
->
irq_enabled
=
1
;
}
...
...
@@ -1349,7 +1349,7 @@ void i915_driver_irq_preinstall(struct drm_device * dev)
INIT_WORK
(
&
dev_priv
->
hotplug_work
,
i915_hotplug_work_func
);
INIT_WORK
(
&
dev_priv
->
error_work
,
i915_error_work_func
);
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
ironlake_irq_preinstall
(
dev
);
return
;
}
...
...
@@ -1381,7 +1381,7 @@ int i915_driver_irq_postinstall(struct drm_device *dev)
dev_priv
->
vblank_pipe
=
DRM_I915_VBLANK_PIPE_A
|
DRM_I915_VBLANK_PIPE_B
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
return
ironlake_irq_postinstall
(
dev
);
/* Unmask the interrupts that we always want on. */
...
...
@@ -1469,7 +1469,7 @@ void i915_driver_irq_uninstall(struct drm_device * dev)
dev_priv
->
vblank_pipe
=
0
;
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
ironlake_irq_uninstall
(
dev
);
return
;
}
...
...
drivers/gpu/drm/i915/intel_bios.c
View file @
bad720ff
...
...
@@ -247,6 +247,7 @@ static void
parse_general_features
(
struct
drm_i915_private
*
dev_priv
,
struct
bdb_header
*
bdb
)
{
struct
drm_device
*
dev
=
dev_priv
->
dev
;
struct
bdb_general_features
*
general
;
/* Set sensible defaults in case we can't find the general block */
...
...
@@ -263,7 +264,7 @@ parse_general_features(struct drm_i915_private *dev_priv,
if
(
IS_I85X
(
dev_priv
->
dev
))
dev_priv
->
lvds_ssc_freq
=
general
->
ssc_freq
?
66
:
48
;
else
if
(
IS_IRONLAKE
(
dev_priv
->
dev
))
else
if
(
IS_IRONLAKE
(
dev_priv
->
dev
)
||
IS_GEN6
(
dev
)
)
dev_priv
->
lvds_ssc_freq
=
general
->
ssc_freq
?
100
:
120
;
else
...
...
drivers/gpu/drm/i915/intel_crt.c
View file @
bad720ff
...
...
@@ -39,7 +39,7 @@ static void intel_crt_dpms(struct drm_encoder *encoder, int mode)
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
u32
temp
,
reg
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
reg
=
PCH_ADPA
;
else
reg
=
ADPA
;
...
...
@@ -113,7 +113,7 @@ static void intel_crt_mode_set(struct drm_encoder *encoder,
else
dpll_md_reg
=
DPLL_B_MD
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
adpa_reg
=
PCH_ADPA
;
else
adpa_reg
=
ADPA
;
...
...
@@ -122,7 +122,7 @@ static void intel_crt_mode_set(struct drm_encoder *encoder,
* Disable separate mode multiplier used when cloning SDVO to CRT
* XXX this needs to be adjusted when we really are cloning
*/
if
(
IS_I965G
(
dev
)
&&
!
IS_IRONLAKE
(
dev
))
{
if
(
IS_I965G
(
dev
)
&&
!
HAS_PCH_SPLIT
(
dev
))
{
dpll_md
=
I915_READ
(
dpll_md_reg
);
I915_WRITE
(
dpll_md_reg
,
dpll_md
&
~
DPLL_MD_UDI_MULTIPLIER_MASK
);
...
...
@@ -136,11 +136,11 @@ static void intel_crt_mode_set(struct drm_encoder *encoder,
if
(
intel_crtc
->
pipe
==
0
)
{
adpa
|=
ADPA_PIPE_A_SELECT
;
if
(
!
IS_IRONLAKE
(
dev
))
if
(
!
HAS_PCH_SPLIT
(
dev
))
I915_WRITE
(
BCLRPAT_A
,
0
);
}
else
{
adpa
|=
ADPA_PIPE_B_SELECT
;
if
(
!
IS_IRONLAKE
(
dev
))
if
(
!
HAS_PCH_SPLIT
(
dev
))
I915_WRITE
(
BCLRPAT_B
,
0
);
}
...
...
@@ -202,7 +202,7 @@ static bool intel_crt_detect_hotplug(struct drm_connector *connector)
u32
hotplug_en
;
int
i
,
tries
=
0
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
return
intel_ironlake_crt_detect_hotplug
(
connector
);
/*
...
...
@@ -524,7 +524,7 @@ void intel_crt_init(struct drm_device *dev)
&
intel_output
->
enc
);
/* Set up the DDC bus. */
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
i2c_reg
=
PCH_GPIOA
;
else
{
i2c_reg
=
GPIOA
;
...
...
drivers/gpu/drm/i915/intel_display.c
View file @
bad720ff
...
...
@@ -232,7 +232,7 @@ struct intel_limit {
#define G4X_P2_DISPLAY_PORT_FAST 10
#define G4X_P2_DISPLAY_PORT_LIMIT 0
/* Ironlake */
/* Ironlake
/ Sandybridge
*/
/* as we calculate clock using (register_value + 2) for
N/M1/M2, so here the range value for them is (actual_value-2).
*/
...
...
@@ -690,7 +690,7 @@ static const intel_limit_t *intel_limit(struct drm_crtc *crtc)
struct
drm_device
*
dev
=
crtc
->
dev
;
const
intel_limit_t
*
limit
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
limit
=
intel_ironlake_limit
(
crtc
);
else
if
(
IS_G4X
(
dev
))
{
limit
=
intel_g4x_limit
(
crtc
);
...
...
@@ -1371,7 +1371,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
dspcntr
&=
~
DISPPLANE_TILED
;
}
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
/* must disable */
dspcntr
|=
DISPPLANE_TRICKLE_FEED_DISABLE
;
...
...
@@ -1432,7 +1432,7 @@ static void i915_disable_vga (struct drm_device *dev)
u8
sr1
;
u32
vga_reg
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
vga_reg
=
CPU_VGACNTRL
;
else
vga_reg
=
VGACNTRL
;
...
...
@@ -2116,7 +2116,7 @@ static bool intel_crtc_mode_fixup(struct drm_crtc *crtc,
struct
drm_display_mode
*
adjusted_mode
)
{
struct
drm_device
*
dev
=
crtc
->
dev
;
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
/* FDI link clock is fixed at 2.7G */
if
(
mode
->
clock
*
3
>
27000
*
4
)
return
MODE_CLOCK_HIGH
;
...
...
@@ -2983,7 +2983,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
refclk
/
1000
);
}
else
if
(
IS_I9XX
(
dev
))
{
refclk
=
96000
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
refclk
=
120000
;
/* 120Mhz refclk */
}
else
{
refclk
=
48000
;
...
...
@@ -3041,7 +3041,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
}
/* FDI link */
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
int
lane
,
link_bw
,
bpp
;
/* eDP doesn't require FDI link, so just set DP M/N
according to current link config */
...
...
@@ -3118,7 +3118,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
* PCH B stepping, previous chipset stepping should be
* ignoring this setting.
*/
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
temp
=
I915_READ
(
PCH_DREF_CONTROL
);
/* Always enable nonspread source */
temp
&=
~
DREF_NONSPREAD_SOURCE_MASK
;
...
...
@@ -3165,7 +3165,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
reduced_clock
.
m2
;
}
if
(
!
IS_IRONLAKE
(
dev
))
if
(
!
HAS_PCH_SPLIT
(
dev
))
dpll
=
DPLL_VGA_MODE_DIS
;
if
(
IS_I9XX
(
dev
))
{
...
...
@@ -3178,7 +3178,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
sdvo_pixel_multiply
=
adjusted_mode
->
clock
/
mode
->
clock
;
if
(
IS_I945G
(
dev
)
||
IS_I945GM
(
dev
)
||
IS_G33
(
dev
))
dpll
|=
(
sdvo_pixel_multiply
-
1
)
<<
SDVO_MULTIPLIER_SHIFT_HIRES
;
else
if
(
IS_IRONLAKE
(
dev
))
else
if
(
HAS_PCH_SPLIT
(
dev
))
dpll
|=
(
sdvo_pixel_multiply
-
1
)
<<
PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT
;
}
if
(
is_dp
)
...
...
@@ -3190,7 +3190,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
else
{
dpll
|=
(
1
<<
(
clock
.
p1
-
1
))
<<
DPLL_FPA01_P1_POST_DIV_SHIFT
;
/* also FPA1 */
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
dpll
|=
(
1
<<
(
clock
.
p1
-
1
))
<<
DPLL_FPA1_P1_POST_DIV_SHIFT
;
if
(
IS_G4X
(
dev
)
&&
has_reduced_clock
)
dpll
|=
(
1
<<
(
reduced_clock
.
p1
-
1
))
<<
DPLL_FPA1_P1_POST_DIV_SHIFT
;
...
...
@@ -3209,7 +3209,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
dpll
|=
DPLLB_LVDS_P2_CLOCK_DIV_14
;
break
;
}
if
(
IS_I965G
(
dev
)
&&
!
IS_IRONLAKE
(
dev
))
if
(
IS_I965G
(
dev
)
&&
!
HAS_PCH_SPLIT
(
dev
))
dpll
|=
(
6
<<
PLL_LOAD_PULSE_PHASE_SHIFT
);
}
else
{
if
(
is_lvds
)
{
...
...
@@ -3243,7 +3243,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
/* Ironlake's plane is forced to pipe, bit 24 is to
enable color space conversion */
if
(
!
IS_IRONLAKE
(
dev
))
{
if
(
!
HAS_PCH_SPLIT
(
dev
))
{
if
(
pipe
==
0
)
dspcntr
&=
~
DISPPLANE_SEL_PIPE_MASK
;
else
...
...
@@ -3270,14 +3270,14 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
/* Disable the panel fitter if it was on our pipe */
if
(
!
IS_IRONLAKE
(
dev
)
&&
intel_panel_fitter_pipe
(
dev
)
==
pipe
)
if
(
!
HAS_PCH_SPLIT
(
dev
)
&&
intel_panel_fitter_pipe
(
dev
)
==
pipe
)
I915_WRITE
(
PFIT_CONTROL
,
0
);
DRM_DEBUG_KMS
(
"Mode for pipe %c:
\n
"
,
pipe
==
0
?
'A'
:
'B'
);
drm_mode_debug_printmodeline
(
mode
);
/* assign to Ironlake registers */
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
fp_reg
=
pch_fp_reg
;
dpll_reg
=
pch_dpll_reg
;
}
...
...
@@ -3298,7 +3298,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
if
(
is_lvds
)
{
u32
lvds
;
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
lvds_reg
=
PCH_LVDS
;
lvds
=
I915_READ
(
lvds_reg
);
...
...
@@ -3344,7 +3344,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
/* Wait for the clocks to stabilize. */
udelay
(
150
);
if
(
IS_I965G
(
dev
)
&&
!
IS_IRONLAKE
(
dev
))
{
if
(
IS_I965G
(
dev
)
&&
!
HAS_PCH_SPLIT
(
dev
))
{
if
(
is_sdvo
)
{
sdvo_pixel_multiply
=
adjusted_mode
->
clock
/
mode
->
clock
;
I915_WRITE
(
dpll_md_reg
,
(
0
<<
DPLL_MD_UDI_DIVIDER_SHIFT
)
|
...
...
@@ -3391,14 +3391,14 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
/* pipesrc and dspsize control the size that is scaled from, which should
* always be the user's requested size.
*/
if
(
!
IS_IRONLAKE
(
dev
))
{
if
(
!
HAS_PCH_SPLIT
(
dev
))
{
I915_WRITE
(
dspsize_reg
,
((
mode
->
vdisplay
-
1
)
<<
16
)
|
(
mode
->
hdisplay
-
1
));
I915_WRITE
(
dsppos_reg
,
0
);
}
I915_WRITE
(
pipesrc_reg
,
((
mode
->
hdisplay
-
1
)
<<
16
)
|
(
mode
->
vdisplay
-
1
));
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
I915_WRITE
(
data_m1_reg
,
TU_SIZE
(
m_n
.
tu
)
|
m_n
.
gmch_m
);
I915_WRITE
(
data_n1_reg
,
TU_SIZE
(
m_n
.
tu
)
|
m_n
.
gmch_n
);
I915_WRITE
(
link_m1_reg
,
m_n
.
link_m
);
...
...
@@ -3419,7 +3419,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
intel_wait_for_vblank
(
dev
);
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
/* enable address swizzle for tiling buffer */
temp
=
I915_READ
(
DISP_ARB_CTL
);
I915_WRITE
(
DISP_ARB_CTL
,
temp
|
DISP_TILE_SURFACE_SWIZZLING
);
...
...
@@ -3454,7 +3454,7 @@ void intel_crtc_load_lut(struct drm_crtc *crtc)
return
;
/* use legacy palette for Ironlake */
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
palreg
=
(
intel_crtc
->
pipe
==
0
)
?
LGC_PALETTE_A
:
LGC_PALETTE_B
;
...
...
@@ -3937,7 +3937,7 @@ static void intel_increase_pllclock(struct drm_crtc *crtc, bool schedule)
int
dpll_reg
=
(
pipe
==
0
)
?
DPLL_A
:
DPLL_B
;
int
dpll
=
I915_READ
(
dpll_reg
);
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
return
;
if
(
!
dev_priv
->
lvds_downclock_avail
)
...
...
@@ -3976,7 +3976,7 @@ static void intel_decrease_pllclock(struct drm_crtc *crtc)
int
dpll_reg
=
(
pipe
==
0
)
?
DPLL_A
:
DPLL_B
;
int
dpll
=
I915_READ
(
dpll_reg
);
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
return
;
if
(
!
dev_priv
->
lvds_downclock_avail
)
...
...
@@ -4418,7 +4418,7 @@ static void intel_setup_outputs(struct drm_device *dev)
if
(
IS_MOBILE
(
dev
)
&&
!
IS_I830
(
dev
))
intel_lvds_init
(
dev
);
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
int
found
;
if
(
IS_MOBILE
(
dev
)
&&
(
I915_READ
(
DP_A
)
&
DP_DETECTED
))
...
...
@@ -4487,7 +4487,7 @@ static void intel_setup_outputs(struct drm_device *dev)
DRM_DEBUG_KMS
(
"probing DP_D
\n
"
);
intel_dp_init
(
dev
,
DP_D
);
}
}
else
if
(
IS_
I8XX
(
dev
))
}
else
if
(
IS_
GEN2
(
dev
))
intel_dvo_init
(
dev
);
if
(
SUPPORTS_TV
(
dev
))
...
...
@@ -4716,7 +4716,7 @@ void intel_init_clock_gating(struct drm_device *dev)
* Disable clock gating reported to work incorrectly according to the
* specs, but enable as much else as we can.
*/
if
(
IS_IRONLAKE
(
dev
))
{
if
(
HAS_PCH_SPLIT
(
dev
))
{
return
;
}
else
if
(
IS_G4X
(
dev
))
{
uint32_t
dspclk_gate
;
...
...
@@ -4789,7 +4789,7 @@ static void intel_init_display(struct drm_device *dev)
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
/* We always want a DPMS function */
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
dev_priv
->
display
.
dpms
=
ironlake_crtc_dpms
;
else
dev_priv
->
display
.
dpms
=
i9xx_crtc_dpms
;
...
...
@@ -4832,7 +4832,7 @@ static void intel_init_display(struct drm_device *dev)
i830_get_display_clock_speed
;
/* For FIFO watermark updates */
if
(
IS_IRONLAKE
(
dev
))
if
(
HAS_PCH_SPLIT
(
dev
))
dev_priv
->
display
.
update_wm
=
NULL
;
else
if
(
IS_G4X
(
dev
))
dev_priv
->
display
.
update_wm
=
g4x_update_wm
;
...
...
drivers/gpu/drm/i915/intel_lvds.c
View file @
bad720ff
...
...
@@ -661,7 +661,7 @@ static enum drm_connector_status intel_lvds_detect(struct drm_connector *connect
/* ACPI lid methods were generally unreliable in this generation, so
* don't even bother.
*/
if
(
IS_
I8XX
(
dev
))
if
(
IS_
GEN2
(
dev
))
return
connector_status_connected
;
if
(
!
dmi_check_system
(
bad_lid_status
)
&&
!
acpi_lid_open
())
...
...
drivers/gpu/drm/i915/intel_overlay.c
View file @
bad720ff
...
...
@@ -172,7 +172,7 @@ struct overlay_registers {
#define OFC_UPDATE 0x1
#define OVERLAY_NONPHYSICAL(dev) (IS_G33(dev) || IS_I965G(dev))
#define OVERLAY_EXISTS(dev) (!IS_G4X(dev) && !IS_IRONLAKE(dev))
#define OVERLAY_EXISTS(dev) (!IS_G4X(dev) && !IS_IRONLAKE(dev)
&& !IS_GEN6(dev)
)
static
struct
overlay_registers
*
intel_overlay_map_regs_atomic
(
struct
intel_overlay
*
overlay
)
...
...
include/drm/drm_pciids.h
View file @
bad720ff
...
...
@@ -593,4 +593,5 @@
{0x8086, 0x35e8, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
{0x8086, 0x0042, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
{0x8086, 0x0046, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
{0x8086, 0x0102, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, 0xffff00, 0}, \
{0, 0, 0}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment