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
vmwgfx
vmwgfx_kms.h
Go to the documentation of this file.
1
/**************************************************************************
2
*
3
* Copyright © 2009 VMware, Inc., Palo Alto, CA., USA
4
* All Rights Reserved.
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a
7
* copy of this software and associated documentation files (the
8
* "Software"), to deal in the Software without restriction, including
9
* without limitation the rights to use, copy, modify, merge, publish,
10
* distribute, sub license, and/or sell copies of the Software, and to
11
* permit persons to whom the Software is furnished to do so, subject to
12
* the following conditions:
13
*
14
* The above copyright notice and this permission notice (including the
15
* next paragraph) shall be included in all copies or substantial portions
16
* of the Software.
17
*
18
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21
* THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
22
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
23
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
24
* USE OR OTHER DEALINGS IN THE SOFTWARE.
25
*
26
**************************************************************************/
27
28
#ifndef VMWGFX_KMS_H_
29
#define VMWGFX_KMS_H_
30
31
#include <
drm/drmP.h
>
32
#include <
drm/drm_crtc_helper.h
>
33
#include "
vmwgfx_drv.h
"
34
35
#define VMWGFX_NUM_DISPLAY_UNITS 8
36
37
38
#define vmw_framebuffer_to_vfb(x) \
39
container_of(x, struct vmw_framebuffer, base)
40
47
struct
vmw_framebuffer
{
48
struct
drm_framebuffer
base
;
49
int
(*
pin
)(
struct
vmw_framebuffer
*
fb
);
50
int
(*
unpin
)(
struct
vmw_framebuffer
*
fb
);
51
bool
dmabuf
;
52
struct
ttm_base_object
*
user_obj
;
53
uint32_t
user_handle
;
54
};
55
56
57
#define vmw_crtc_to_du(x) \
58
container_of(x, struct vmw_display_unit, crtc)
59
60
/*
61
* Basic cursor manipulation
62
*/
63
int
vmw_cursor_update_image
(
struct
vmw_private
*
dev_priv
,
64
u32
*
image
,
u32
width
,
u32
height
,
65
u32
hotspotX,
u32
hotspotY);
66
int
vmw_cursor_update_dmabuf
(
struct
vmw_private
*
dev_priv
,
67
struct
vmw_dma_buffer
*dmabuf,
68
u32
width
,
u32
height
,
69
u32
hotspotX,
u32
hotspotY);
70
void
vmw_cursor_update_position
(
struct
vmw_private
*
dev_priv
,
71
bool
show,
int
x
,
int
y
);
72
73
81
struct
vmw_display_unit
{
82
struct
drm_crtc
crtc
;
83
struct
drm_encoder
encoder
;
84
struct
drm_connector
connector
;
85
86
struct
vmw_surface
*
cursor_surface
;
87
struct
vmw_dma_buffer
*
cursor_dmabuf
;
88
size_t
cursor_age
;
89
90
int
cursor_x
;
91
int
cursor_y
;
92
93
int
hotspot_x
;
94
int
hotspot_y
;
95
96
unsigned
unit
;
97
98
/*
99
* Prefered mode tracking.
100
*/
101
unsigned
pref_width
;
102
unsigned
pref_height
;
103
bool
pref_active
;
104
struct
drm_display_mode
*
pref_mode
;
105
106
/*
107
* Gui positioning
108
*/
109
int
gui_x
;
110
int
gui_y
;
111
bool
is_implicit
;
112
};
113
114
#define vmw_crtc_to_du(x) \
115
container_of(x, struct vmw_display_unit, crtc)
116
#define vmw_connector_to_du(x) \
117
container_of(x, struct vmw_display_unit, connector)
118
119
120
/*
121
* Shared display unit functions - vmwgfx_kms.c
122
*/
123
void
vmw_display_unit_cleanup
(
struct
vmw_display_unit
*du);
124
int
vmw_du_page_flip
(
struct
drm_crtc
*
crtc
,
125
struct
drm_framebuffer
*
fb
,
126
struct
drm_pending_vblank_event *
event
);
127
void
vmw_du_crtc_save
(
struct
drm_crtc
*
crtc
);
128
void
vmw_du_crtc_restore
(
struct
drm_crtc
*
crtc
);
129
void
vmw_du_crtc_gamma_set
(
struct
drm_crtc
*
crtc
,
130
u16
*
r
,
u16
*g,
u16
*
b
,
131
uint32_t
start
,
uint32_t
size
);
132
int
vmw_du_crtc_cursor_set
(
struct
drm_crtc
*
crtc
,
struct
drm_file *file_priv,
133
uint32_t
handle
,
uint32_t
width
,
uint32_t
height
);
134
int
vmw_du_crtc_cursor_move
(
struct
drm_crtc
*
crtc
,
int
x
,
int
y
);
135
void
vmw_du_connector_dpms
(
struct
drm_connector
*
connector
,
int
mode
);
136
void
vmw_du_connector_save
(
struct
drm_connector
*
connector
);
137
void
vmw_du_connector_restore
(
struct
drm_connector
*
connector
);
138
enum
drm_connector_status
139
vmw_du_connector_detect
(
struct
drm_connector
*
connector
,
bool
force
);
140
int
vmw_du_connector_fill_modes
(
struct
drm_connector
*
connector
,
141
uint32_t
max_width
,
uint32_t
max_height
);
142
int
vmw_du_connector_set_property
(
struct
drm_connector
*
connector
,
143
struct
drm_property
*
property
,
144
uint64_t
val
);
145
146
147
/*
148
* Legacy display unit functions - vmwgfx_ldu.c
149
*/
150
int
vmw_kms_init_legacy_display_system
(
struct
vmw_private
*
dev_priv
);
151
int
vmw_kms_close_legacy_display_system
(
struct
vmw_private
*
dev_priv
);
152
153
/*
154
* Screen Objects display functions - vmwgfx_scrn.c
155
*/
156
int
vmw_kms_init_screen_object_display
(
struct
vmw_private
*
dev_priv
);
157
int
vmw_kms_close_screen_object_display
(
struct
vmw_private
*
dev_priv
);
158
int
vmw_kms_sou_update_layout
(
struct
vmw_private
*
dev_priv
,
unsigned
num,
159
struct
drm_vmw_rect
*rects);
160
bool
vmw_kms_screen_object_flippable
(
struct
vmw_private
*
dev_priv
,
161
struct
drm_crtc
*
crtc
);
162
void
vmw_kms_screen_object_update_implicit_fb
(
struct
vmw_private
*
dev_priv
,
163
struct
drm_crtc
*
crtc
);
164
165
166
#endif
Generated on Thu Jan 10 2013 13:33:53 for Linux Kernel by
1.8.2