Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
gpu
drm
i915
intel_drv.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2006 Dave Airlie <
[email protected]
>
3
* Copyright (c) 2007-2008 Intel Corporation
4
* Jesse Barnes <
[email protected]
>
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a
7
* copy of this software and associated documentation files (the "Software"),
8
* to deal in the Software without restriction, including without limitation
9
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
10
* and/or sell copies of the Software, and to permit persons to whom the
11
* Software is furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice (including the next
14
* paragraph) shall be included in all copies or substantial portions of the
15
* Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
23
* IN THE SOFTWARE.
24
*/
25
#ifndef __INTEL_DRV_H__
26
#define __INTEL_DRV_H__
27
28
#include <linux/i2c.h>
29
#include <drm/i915_drm.h>
30
#include "
i915_drv.h
"
31
#include <
drm/drm_crtc.h
>
32
#include <
drm/drm_crtc_helper.h
>
33
#include <
drm/drm_fb_helper.h
>
34
#include <
drm/drm_dp_helper.h
>
35
36
#define _wait_for(COND, MS, W) ({ \
37
unsigned long timeout__ = jiffies + msecs_to_jiffies(MS); \
38
int ret__ = 0; \
39
while (!(COND)) { \
40
if (time_after(jiffies, timeout__)) { \
41
ret__ = -ETIMEDOUT; \
42
break; \
43
} \
44
if (W && drm_can_sleep()) { \
45
msleep(W); \
46
} else { \
47
cpu_relax(); \
48
} \
49
} \
50
ret__; \
51
})
52
53
#define wait_for_atomic_us(COND, US) ({ \
54
unsigned long timeout__ = jiffies + usecs_to_jiffies(US); \
55
int ret__ = 0; \
56
while (!(COND)) { \
57
if (time_after(jiffies, timeout__)) { \
58
ret__ = -ETIMEDOUT; \
59
break; \
60
} \
61
cpu_relax(); \
62
} \
63
ret__; \
64
})
65
66
#define wait_for(COND, MS) _wait_for(COND, MS, 1)
67
#define wait_for_atomic(COND, MS) _wait_for(COND, MS, 0)
68
69
#define KHz(x) (1000*x)
70
#define MHz(x) KHz(1000*x)
71
72
/*
73
* Display related stuff
74
*/
75
76
/* store information about an Ixxx DVO */
77
/* The i830->i865 use multiple DVOs with multiple i2cs */
78
/* the i915, i945 have a single sDVO i2c bus - which is different */
79
#define MAX_OUTPUTS 6
80
/* maximum connectors per crtcs in the mode set */
81
#define INTELFB_CONN_LIMIT 4
82
83
#define INTEL_I2C_BUS_DVO 1
84
#define INTEL_I2C_BUS_SDVO 2
85
86
/* these are outputs from the chip - integrated only
87
external chips are via DVO or SDVO output */
88
#define INTEL_OUTPUT_UNUSED 0
89
#define INTEL_OUTPUT_ANALOG 1
90
#define INTEL_OUTPUT_DVO 2
91
#define INTEL_OUTPUT_SDVO 3
92
#define INTEL_OUTPUT_LVDS 4
93
#define INTEL_OUTPUT_TVOUT 5
94
#define INTEL_OUTPUT_HDMI 6
95
#define INTEL_OUTPUT_DISPLAYPORT 7
96
#define INTEL_OUTPUT_EDP 8
97
98
#define INTEL_DVO_CHIP_NONE 0
99
#define INTEL_DVO_CHIP_LVDS 1
100
#define INTEL_DVO_CHIP_TMDS 2
101
#define INTEL_DVO_CHIP_TVOUT 4
102
103
/* drm_display_mode->private_flags */
104
#define INTEL_MODE_PIXEL_MULTIPLIER_SHIFT (0x0)
105
#define INTEL_MODE_PIXEL_MULTIPLIER_MASK (0xf << INTEL_MODE_PIXEL_MULTIPLIER_SHIFT)
106
#define INTEL_MODE_DP_FORCE_6BPC (0x10)
107
/* This flag must be set by the encoder's mode_fixup if it changes the crtc
108
* timings in the mode to prevent the crtc fixup from overwriting them.
109
* Currently only lvds needs that. */
110
#define INTEL_MODE_CRTC_TIMINGS_SET (0x20)
111
112
static
inline
void
113
intel_mode_set_pixel_multiplier(
struct
drm_display_mode
*
mode
,
114
int
multiplier)
115
{
116
mode->
clock
*= multiplier;
117
mode->
private_flags
|= multiplier;
118
}
119
120
static
inline
int
121
intel_mode_get_pixel_multiplier(
const
struct
drm_display_mode
*
mode
)
122
{
123
return
(mode->
private_flags
&
INTEL_MODE_PIXEL_MULTIPLIER_MASK
) >>
INTEL_MODE_PIXEL_MULTIPLIER_SHIFT
;
124
}
125
126
struct
intel_framebuffer
{
127
struct
drm_framebuffer
base
;
128
struct
drm_i915_gem_object
*
obj
;
129
};
130
131
struct
intel_fbdev
{
132
struct
drm_fb_helper
helper
;
133
struct
intel_framebuffer
ifb
;
134
struct
list_head
fbdev_list
;
135
struct
drm_display_mode
*
our_mode
;
136
};
137
138
struct
intel_encoder
{
139
struct
drm_encoder
base
;
140
/*
141
* The new crtc this encoder will be driven from. Only differs from
142
* base->crtc while a modeset is in progress.
143
*/
144
struct
intel_crtc
*
new_crtc
;
145
146
int
type
;
147
bool
needs_tv_clock
;
148
/*
149
* Intel hw has only one MUX where encoders could be clone, hence a
150
* simple flag is enough to compute the possible_clones mask.
151
*/
152
bool
cloneable
;
153
bool
connectors_active
;
154
void
(*
hot_plug
)(
struct
intel_encoder
*);
155
void
(*
pre_enable
)(
struct
intel_encoder
*);
156
void
(*
enable
)(
struct
intel_encoder
*);
157
void
(*
disable
)(
struct
intel_encoder
*);
158
void
(*
post_disable
)(
struct
intel_encoder
*);
159
/* Read out the current hw state of this connector, returning true if
160
* the encoder is active. If the encoder is enabled it also set the pipe
161
* it is connected to in the pipe parameter. */
162
bool
(*
get_hw_state
)(
struct
intel_encoder
*,
enum
pipe
*
pipe
);
163
int
crtc_mask
;
164
};
165
166
struct
intel_connector
{
167
struct
drm_connector
base
;
168
/*
169
* The fixed encoder this connector is connected to.
170
*/
171
struct
intel_encoder
*
encoder
;
172
173
/*
174
* The new encoder this connector will be driven. Only differs from
175
* encoder while a modeset is in progress.
176
*/
177
struct
intel_encoder
*
new_encoder
;
178
179
/* Reads out the current hw, returning true if the connector is enabled
180
* and active (i.e. dpms ON state). */
181
bool
(*
get_hw_state
)(
struct
intel_connector
*);
182
};
183
184
struct
intel_crtc
{
185
struct
drm_crtc
base
;
186
enum
pipe
pipe
;
187
enum
plane
plane
;
188
u8
lut_r
[256],
lut_g
[256],
lut_b
[256];
189
/*
190
* Whether the crtc and the connected output pipeline is active. Implies
191
* that crtc->enabled is set, i.e. the current mode configuration has
192
* some outputs connected to this crtc.
193
*/
194
bool
active
;
195
bool
primary_disabled
;
/* is the crtc obscured by a plane? */
196
bool
lowfreq_avail
;
197
struct
intel_overlay
*
overlay
;
198
struct
intel_unpin_work
*
unpin_work
;
199
int
fdi_lanes
;
200
201
/* Display surface base address adjustement for pageflips. Note that on
202
* gen4+ this only adjusts up to a tile, offsets within a tile are
203
* handled in the hw itself (with the TILEOFF register). */
204
unsigned
long
dspaddr_offset
;
205
206
struct
drm_i915_gem_object
*
cursor_bo
;
207
uint32_t
cursor_addr
;
208
int16_t
cursor_x
,
cursor_y
;
209
int16_t
cursor_width
,
cursor_height
;
210
bool
cursor_visible
;
211
unsigned
int
bpp
;
212
213
/* We can share PLLs across outputs if the timings match */
214
struct
intel_pch_pll
*
pch_pll
;
215
};
216
217
struct
intel_plane
{
218
struct
drm_plane
base
;
219
enum
pipe
pipe
;
220
struct
drm_i915_gem_object
*
obj
;
221
int
max_downscale
;
222
u32
lut_r
[1024],
lut_g
[1024],
lut_b
[1024];
223
void
(*
update_plane
)(
struct
drm_plane
*
plane
,
224
struct
drm_framebuffer
*
fb
,
225
struct
drm_i915_gem_object
*
obj
,
226
int
crtc_x,
int
crtc_y,
227
unsigned
int
crtc_w,
unsigned
int
crtc_h,
228
uint32_t
x
,
uint32_t
y
,
229
uint32_t
src_w,
uint32_t
src_h);
230
void
(*
disable_plane
)(
struct
drm_plane
*
plane
);
231
int
(*
update_colorkey
)(
struct
drm_plane
*
plane
,
232
struct
drm_intel_sprite_colorkey
*
key
);
233
void
(*
get_colorkey
)(
struct
drm_plane
*
plane
,
234
struct
drm_intel_sprite_colorkey
*
key
);
235
};
236
237
struct
intel_watermark_params
{
238
unsigned
long
fifo_size
;
239
unsigned
long
max_wm
;
240
unsigned
long
default_wm
;
241
unsigned
long
guard_size
;
242
unsigned
long
cacheline_size
;
243
};
244
245
struct
cxsr_latency
{
246
int
is_desktop
;
247
int
is_ddr3
;
248
unsigned
long
fsb_freq
;
249
unsigned
long
mem_freq
;
250
unsigned
long
display_sr
;
251
unsigned
long
display_hpll_disable
;
252
unsigned
long
cursor_sr
;
253
unsigned
long
cursor_hpll_disable
;
254
};
255
256
#define to_intel_crtc(x) container_of(x, struct intel_crtc, base)
257
#define to_intel_connector(x) container_of(x, struct intel_connector, base)
258
#define to_intel_encoder(x) container_of(x, struct intel_encoder, base)
259
#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base)
260
#define to_intel_plane(x) container_of(x, struct intel_plane, base)
261
262
#define DIP_HEADER_SIZE 5
263
264
#define DIP_TYPE_AVI 0x82
265
#define DIP_VERSION_AVI 0x2
266
#define DIP_LEN_AVI 13
267
#define DIP_AVI_PR_1 0
268
#define DIP_AVI_PR_2 1
269
270
#define DIP_TYPE_SPD 0x83
271
#define DIP_VERSION_SPD 0x1
272
#define DIP_LEN_SPD 25
273
#define DIP_SPD_UNKNOWN 0
274
#define DIP_SPD_DSTB 0x1
275
#define DIP_SPD_DVDP 0x2
276
#define DIP_SPD_DVHS 0x3
277
#define DIP_SPD_HDDVR 0x4
278
#define DIP_SPD_DVC 0x5
279
#define DIP_SPD_DSC 0x6
280
#define DIP_SPD_VCD 0x7
281
#define DIP_SPD_GAME 0x8
282
#define DIP_SPD_PC 0x9
283
#define DIP_SPD_BD 0xa
284
#define DIP_SPD_SCD 0xb
285
286
struct
dip_infoframe
{
287
uint8_t
type
;
/* HB0 */
288
uint8_t
ver
;
/* HB1 */
289
uint8_t
len
;
/* HB2 - body len, not including checksum */
290
uint8_t
ecc
;
/* Header ECC */
291
uint8_t
checksum
;
/* PB0 */
292
union
{
293
struct
{
294
/* PB1 - Y 6:5, A 4:4, B 3:2, S 1:0 */
295
uint8_t
Y_A_B_S
;
296
/* PB2 - C 7:6, M 5:4, R 3:0 */
297
uint8_t
C_M_R
;
298
/* PB3 - ITC 7:7, EC 6:4, Q 3:2, SC 1:0 */
299
uint8_t
ITC_EC_Q_SC
;
300
/* PB4 - VIC 6:0 */
301
uint8_t
VIC
;
302
/* PB5 - YQ 7:6, CN 5:4, PR 3:0 */
303
uint8_t
YQ_CN_PR
;
304
/* PB6 to PB13 */
305
uint16_t
top_bar_end
;
306
uint16_t
bottom_bar_start
;
307
uint16_t
left_bar_end
;
308
uint16_t
right_bar_start
;
309
}
__attribute__
((packed)) avi;
310
struct
{
311
uint8_t
vn
[8];
312
uint8_t
pd
[16];
313
uint8_t
sdi
;
314
}
__attribute__
((packed)) spd;
315
uint8_t
payload
[27];
316
}
__attribute__
((packed))
body
;
317
}
__attribute__
((packed));
318
319
struct
intel_hdmi
{
320
struct
intel_encoder
base
;
321
u32
sdvox_reg;
322
int
ddc_bus;
323
int
ddi_port;
324
uint32_t
color_range;
325
bool
has_hdmi_sink
;
326
bool
has_audio
;
327
enum
hdmi_force_audio
force_audio
;
328
void
(*write_infoframe)(
struct
drm_encoder
*encoder,
329
struct
dip_infoframe
*
frame
);
330
void
(*set_infoframes)(
struct
drm_encoder
*encoder,
331
struct
drm_display_mode
*adjusted_mode);
332
};
333
334
#define DP_RECEIVER_CAP_SIZE 0xf
335
#define DP_MAX_DOWNSTREAM_PORTS 0x10
336
#define DP_LINK_CONFIGURATION_SIZE 9
337
338
struct
intel_dp
{
339
struct
intel_encoder
base
;
340
uint32_t
output_reg
;
341
uint32_t
DP
;
342
uint8_t
link_configuration[
DP_LINK_CONFIGURATION_SIZE
];
343
bool
has_audio
;
344
enum
hdmi_force_audio
force_audio
;
345
enum
port
port
;
346
uint32_t
color_range
;
347
uint8_t
link_bw
;
348
uint8_t
lane_count
;
349
uint8_t
dpcd[
DP_RECEIVER_CAP_SIZE
];
350
uint8_t
downstream_ports[
DP_MAX_DOWNSTREAM_PORTS
];
351
struct
i2c_adapter
adapter
;
352
struct
i2c_algo_dp_aux_data
algo;
353
bool
is_pch_edp
;
354
uint8_t
train_set[4];
355
int
panel_power_up_delay
;
356
int
panel_power_down_delay
;
357
int
panel_power_cycle_delay
;
358
int
backlight_on_delay
;
359
int
backlight_off_delay
;
360
struct
drm_display_mode
*
panel_fixed_mode
;
/* for eDP */
361
struct
delayed_work
panel_vdd_work;
362
bool
want_panel_vdd
;
363
struct
edid
*
edid
;
/* cached EDID for eDP */
364
int
edid_mode_count
;
365
};
366
367
static
inline
struct
drm_crtc
*
368
intel_get_crtc_for_pipe(
struct
drm_device
*
dev
,
int
pipe
)
369
{
370
struct
drm_i915_private
*
dev_priv
= dev->dev_private;
371
return
dev_priv->
pipe_to_crtc_mapping
[
pipe
];
372
}
373
374
static
inline
struct
drm_crtc
*
375
intel_get_crtc_for_plane(
struct
drm_device
*
dev
,
int
plane
)
376
{
377
struct
drm_i915_private
*
dev_priv
= dev->dev_private;
378
return
dev_priv->
plane_to_crtc_mapping
[
plane
];
379
}
380
381
struct
intel_unpin_work
{
382
struct
work_struct
work
;
383
struct
drm_device
*
dev
;
384
struct
drm_i915_gem_object
*
old_fb_obj
;
385
struct
drm_i915_gem_object
*
pending_flip_obj
;
386
struct
drm_pending_vblank_event *
event
;
387
int
pending
;
388
bool
enable_stall_check
;
389
};
390
391
struct
intel_fbc_work
{
392
struct
delayed_work
work
;
393
struct
drm_crtc
*
crtc
;
394
struct
drm_framebuffer
*
fb
;
395
int
interval
;
396
};
397
398
int
intel_connector_update_modes
(
struct
drm_connector
*
connector
,
399
struct
edid
*
edid
);
400
int
intel_ddc_get_modes
(
struct
drm_connector
*
c
,
struct
i2c_adapter
*
adapter
);
401
402
extern
void
intel_attach_force_audio_property
(
struct
drm_connector
*
connector
);
403
extern
void
intel_attach_broadcast_rgb_property
(
struct
drm_connector
*
connector
);
404
405
extern
void
intel_crt_init
(
struct
drm_device
*
dev
);
406
extern
void
intel_hdmi_init
(
struct
drm_device
*
dev
,
407
int
sdvox_reg,
enum
port
port
);
408
extern
struct
intel_hdmi
*
enc_to_intel_hdmi
(
struct
drm_encoder
*encoder);
409
extern
void
intel_dip_infoframe_csum
(
struct
dip_infoframe
*avi_if);
410
extern
bool
intel_sdvo_init
(
struct
drm_device
*
dev
,
uint32_t
sdvo_reg,
411
bool
is_sdvob);
412
extern
void
intel_dvo_init
(
struct
drm_device
*
dev
);
413
extern
void
intel_tv_init
(
struct
drm_device
*
dev
);
414
extern
void
intel_mark_busy
(
struct
drm_device
*
dev
);
415
extern
void
intel_mark_idle
(
struct
drm_device
*
dev
);
416
extern
void
intel_mark_fb_busy
(
struct
drm_i915_gem_object
*obj);
417
extern
void
intel_mark_fb_idle
(
struct
drm_i915_gem_object
*obj);
418
extern
bool
intel_lvds_init
(
struct
drm_device
*
dev
);
419
extern
void
intel_dp_init
(
struct
drm_device
*
dev
,
int
output_reg,
420
enum
port
port
);
421
void
422
intel_dp_set_m_n
(
struct
drm_crtc
*
crtc
,
struct
drm_display_mode
*mode,
423
struct
drm_display_mode
*adjusted_mode);
424
extern
bool
intel_dpd_is_edp
(
struct
drm_device
*
dev
);
425
extern
void
intel_edp_link_config
(
struct
intel_encoder
*,
int
*,
int
*);
426
extern
int
intel_edp_target_clock
(
struct
intel_encoder
*,
427
struct
drm_display_mode
*mode);
428
extern
bool
intel_encoder_is_pch_edp
(
struct
drm_encoder
*encoder);
429
extern
int
intel_plane_init
(
struct
drm_device
*
dev
,
enum
pipe
pipe
);
430
extern
void
intel_flush_display_plane
(
struct
drm_i915_private
*
dev_priv
,
431
enum
plane
plane
);
432
433
/* intel_panel.c */
434
extern
void
intel_fixed_panel_mode
(
struct
drm_display_mode
*fixed_mode,
435
struct
drm_display_mode
*adjusted_mode);
436
extern
void
intel_pch_panel_fitting
(
struct
drm_device
*
dev
,
437
int
fitting_mode,
438
const
struct
drm_display_mode
*mode,
439
struct
drm_display_mode
*adjusted_mode);
440
extern
u32
intel_panel_get_max_backlight
(
struct
drm_device
*
dev
);
441
extern
void
intel_panel_set_backlight
(
struct
drm_device
*
dev
,
u32
level
);
442
extern
int
intel_panel_setup_backlight
(
struct
drm_device
*
dev
);
443
extern
void
intel_panel_enable_backlight
(
struct
drm_device
*
dev
,
444
enum
pipe
pipe
);
445
extern
void
intel_panel_disable_backlight
(
struct
drm_device
*
dev
);
446
extern
void
intel_panel_destroy_backlight
(
struct
drm_device
*
dev
);
447
extern
enum
drm_connector_status
intel_panel_detect
(
struct
drm_device
*
dev
);
448
449
struct
intel_set_config
{
450
struct
drm_encoder
**
save_connector_encoders
;
451
struct
drm_crtc
**
save_encoder_crtcs
;
452
453
bool
fb_changed
;
454
bool
mode_changed
;
455
};
456
457
extern
bool
intel_set_mode
(
struct
drm_crtc
*
crtc
,
struct
drm_display_mode
*mode,
458
int
x
,
int
y
,
struct
drm_framebuffer
*old_fb);
459
extern
void
intel_modeset_disable
(
struct
drm_device
*
dev
);
460
extern
void
intel_crtc_load_lut
(
struct
drm_crtc
*
crtc
);
461
extern
void
intel_crtc_update_dpms
(
struct
drm_crtc
*
crtc
);
462
extern
void
intel_encoder_noop
(
struct
drm_encoder
*encoder);
463
extern
void
intel_encoder_destroy
(
struct
drm_encoder
*encoder);
464
extern
void
intel_encoder_dpms
(
struct
intel_encoder
*encoder,
int
mode);
465
extern
bool
intel_encoder_check_is_cloned
(
struct
intel_encoder
*encoder);
466
extern
void
intel_connector_dpms
(
struct
drm_connector
*,
int
mode);
467
extern
bool
intel_connector_get_hw_state
(
struct
intel_connector
*
connector
);
468
extern
void
intel_modeset_check_state
(
struct
drm_device
*
dev
);
469
470
471
static
inline
struct
intel_encoder
*intel_attached_encoder(
struct
drm_connector
*
connector
)
472
{
473
return
to_intel_connector
(connector)->encoder;
474
}
475
476
extern
void
intel_connector_attach_encoder
(
struct
intel_connector
*
connector
,
477
struct
intel_encoder
*encoder);
478
extern
struct
drm_encoder
*
intel_best_encoder
(
struct
drm_connector
*
connector
);
479
480
extern
struct
drm_display_mode
*
intel_crtc_mode_get
(
struct
drm_device
*
dev
,
481
struct
drm_crtc
*
crtc
);
482
int
intel_get_pipe_from_crtc_id
(
struct
drm_device
*
dev
,
void
*
data
,
483
struct
drm_file *file_priv);
484
extern
void
intel_wait_for_vblank
(
struct
drm_device
*
dev
,
int
pipe
);
485
extern
void
intel_wait_for_pipe_off
(
struct
drm_device
*
dev
,
int
pipe
);
486
487
struct
intel_load_detect_pipe
{
488
struct
drm_framebuffer
*
release_fb
;
489
bool
load_detect_temp
;
490
int
dpms_mode
;
491
};
492
extern
bool
intel_get_load_detect_pipe
(
struct
drm_connector
*
connector
,
493
struct
drm_display_mode
*mode,
494
struct
intel_load_detect_pipe
*old);
495
extern
void
intel_release_load_detect_pipe
(
struct
drm_connector
*
connector
,
496
struct
intel_load_detect_pipe
*old);
497
498
extern
void
intelfb_restore
(
void
);
499
extern
void
intel_crtc_fb_gamma_set
(
struct
drm_crtc
*
crtc
,
u16
red
,
u16
green
,
500
u16
blue
,
int
regno);
501
extern
void
intel_crtc_fb_gamma_get
(
struct
drm_crtc
*
crtc
,
u16
*
red
,
u16
*
green
,
502
u16
*
blue
,
int
regno);
503
extern
void
intel_enable_clock_gating
(
struct
drm_device
*
dev
);
504
505
extern
int
intel_pin_and_fence_fb_obj
(
struct
drm_device
*
dev
,
506
struct
drm_i915_gem_object
*obj,
507
struct
intel_ring_buffer
*pipelined);
508
extern
void
intel_unpin_fb_obj
(
struct
drm_i915_gem_object
*obj);
509
510
extern
int
intel_framebuffer_init
(
struct
drm_device
*
dev
,
511
struct
intel_framebuffer
*ifb,
512
struct
drm_mode_fb_cmd2
*mode_cmd,
513
struct
drm_i915_gem_object
*obj);
514
extern
int
intel_fbdev_init
(
struct
drm_device
*
dev
);
515
extern
void
intel_fbdev_fini
(
struct
drm_device
*
dev
);
516
extern
void
intel_fbdev_set_suspend
(
struct
drm_device
*
dev
,
int
state
);
517
extern
void
intel_prepare_page_flip
(
struct
drm_device
*
dev
,
int
plane
);
518
extern
void
intel_finish_page_flip
(
struct
drm_device
*
dev
,
int
pipe
);
519
extern
void
intel_finish_page_flip_plane
(
struct
drm_device
*
dev
,
int
plane
);
520
521
extern
void
intel_setup_overlay
(
struct
drm_device
*
dev
);
522
extern
void
intel_cleanup_overlay
(
struct
drm_device
*
dev
);
523
extern
int
intel_overlay_switch_off
(
struct
intel_overlay
*
overlay
);
524
extern
int
intel_overlay_put_image
(
struct
drm_device
*
dev
,
void
*
data
,
525
struct
drm_file *file_priv);
526
extern
int
intel_overlay_attrs
(
struct
drm_device
*
dev
,
void
*
data
,
527
struct
drm_file *file_priv);
528
529
extern
void
intel_fb_output_poll_changed
(
struct
drm_device
*
dev
);
530
extern
void
intel_fb_restore_mode
(
struct
drm_device
*
dev
);
531
532
extern
void
assert_pipe
(
struct
drm_i915_private
*
dev_priv
,
enum
pipe
pipe
,
533
bool
state
);
534
#define assert_pipe_enabled(d, p) assert_pipe(d, p, true)
535
#define assert_pipe_disabled(d, p) assert_pipe(d, p, false)
536
537
extern
void
intel_init_clock_gating
(
struct
drm_device
*
dev
);
538
extern
void
intel_write_eld
(
struct
drm_encoder
*encoder,
539
struct
drm_display_mode
*mode);
540
extern
void
intel_cpt_verify_modeset
(
struct
drm_device
*
dev
,
int
pipe
);
541
extern
void
intel_prepare_ddi
(
struct
drm_device
*
dev
);
542
extern
void
hsw_fdi_link_train
(
struct
drm_crtc
*
crtc
);
543
extern
void
intel_ddi_init
(
struct
drm_device
*
dev
,
enum
port
port
);
544
545
/* For use by IVB LP watermark workaround in intel_sprite.c */
546
extern
void
intel_update_watermarks
(
struct
drm_device
*
dev
);
547
extern
void
intel_update_sprite_watermarks
(
struct
drm_device
*
dev
,
int
pipe
,
548
uint32_t
sprite_width,
549
int
pixel_size
);
550
extern
void
intel_update_linetime_watermarks
(
struct
drm_device
*
dev
,
int
pipe
,
551
struct
drm_display_mode
*mode);
552
553
extern
int
intel_sprite_set_colorkey
(
struct
drm_device
*
dev
,
void
*
data
,
554
struct
drm_file *file_priv);
555
extern
int
intel_sprite_get_colorkey
(
struct
drm_device
*
dev
,
void
*
data
,
556
struct
drm_file *file_priv);
557
558
extern
u32
intel_dpio_read
(
struct
drm_i915_private
*
dev_priv
,
int
reg
);
559
560
/* Power-related functions, located in intel_pm.c */
561
extern
void
intel_init_pm
(
struct
drm_device
*
dev
);
562
/* FBC */
563
extern
bool
intel_fbc_enabled
(
struct
drm_device
*
dev
);
564
extern
void
intel_enable_fbc
(
struct
drm_crtc
*
crtc
,
unsigned
long
interval
);
565
extern
void
intel_update_fbc
(
struct
drm_device
*
dev
);
566
/* IPS */
567
extern
void
intel_gpu_ips_init
(
struct
drm_i915_private
*
dev_priv
);
568
extern
void
intel_gpu_ips_teardown
(
void
);
569
570
extern
void
intel_init_power_wells
(
struct
drm_device
*
dev
);
571
extern
void
intel_enable_gt_powersave
(
struct
drm_device
*
dev
);
572
extern
void
intel_disable_gt_powersave
(
struct
drm_device
*
dev
);
573
extern
void
gen6_gt_check_fifodbg
(
struct
drm_i915_private
*
dev_priv
);
574
extern
void
ironlake_teardown_rc6
(
struct
drm_device
*
dev
);
575
576
extern
void
intel_enable_ddi
(
struct
intel_encoder
*encoder);
577
extern
void
intel_disable_ddi
(
struct
intel_encoder
*encoder);
578
extern
bool
intel_ddi_get_hw_state
(
struct
intel_encoder
*encoder,
579
enum
pipe
*
pipe
);
580
extern
void
intel_ddi_mode_set
(
struct
drm_encoder
*encoder,
581
struct
drm_display_mode
*mode,
582
struct
drm_display_mode
*adjusted_mode);
583
584
#endif
/* __INTEL_DRV_H__ */
Generated on Thu Jan 10 2013 13:31:54 for Linux Kernel by
1.8.2