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
udl
udl_drv.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012 Red Hat
3
*
4
* based in parts on udlfb.c:
5
* Copyright (C) 2009 Roberto De Ioris <
[email protected]
>
6
* Copyright (C) 2009 Jaya Kumar <
[email protected]
>
7
* Copyright (C) 2009 Bernie Thompson <
[email protected]
>
8
*
9
* This file is subject to the terms and conditions of the GNU General Public
10
* License v2. See the file COPYING in the main directory of this archive for
11
* more details.
12
*/
13
14
#ifndef UDL_DRV_H
15
#define UDL_DRV_H
16
17
#include <
linux/usb.h
>
18
19
#define DRIVER_NAME "udl"
20
#define DRIVER_DESC "DisplayLink"
21
#define DRIVER_DATE "20120220"
22
23
#define DRIVER_MAJOR 0
24
#define DRIVER_MINOR 0
25
#define DRIVER_PATCHLEVEL 1
26
27
struct
udl_device
;
28
29
struct
urb_node
{
30
struct
list_head
entry
;
31
struct
udl_device
*
dev
;
32
struct
delayed_work
release_urb_work
;
33
struct
urb
*
urb
;
34
};
35
36
struct
urb_list
{
37
struct
list_head
list
;
38
spinlock_t
lock
;
39
struct
semaphore
limit_sem
;
40
int
available
;
41
int
count
;
42
size_t
size
;
43
};
44
45
struct
udl_fbdev
;
46
47
struct
udl_device
{
48
struct
device
*
dev
;
49
struct
drm_device
*
ddev
;
50
51
int
sku_pixel_limit
;
52
53
struct
urb_list
urbs
;
54
atomic_t
lost_pixels
;
/* 1 = a render op failed. Need screen refresh */
55
56
struct
udl_fbdev
*
fbdev
;
57
char
mode_buf
[1024];
58
uint32_t
mode_buf_len
;
59
atomic_t
bytes_rendered
;
/* raw pixel-bytes driver asked to render */
60
atomic_t
bytes_identical
;
/* saved effort with backbuffer comparison */
61
atomic_t
bytes_sent
;
/* to usb, after compression including overhead */
62
atomic_t
cpu_kcycles_used
;
/* transpired during pixel processing */
63
};
64
65
struct
udl_gem_object
{
66
struct
drm_gem_object
base
;
67
struct
page
**
pages
;
68
void
*
vmapping
;
69
struct
sg_table
*
sg
;
70
};
71
72
#define to_udl_bo(x) container_of(x, struct udl_gem_object, base)
73
74
struct
udl_framebuffer
{
75
struct
drm_framebuffer
base
;
76
struct
udl_gem_object
*
obj
;
77
bool
active_16
;
/* active on the 16-bit channel */
78
};
79
80
#define to_udl_fb(x) container_of(x, struct udl_framebuffer, base)
81
82
/* modeset */
83
int
udl_modeset_init
(
struct
drm_device
*
dev
);
84
void
udl_modeset_cleanup
(
struct
drm_device
*
dev
);
85
int
udl_connector_init
(
struct
drm_device
*
dev
,
struct
drm_encoder
*encoder);
86
87
struct
drm_encoder
*
udl_encoder_init
(
struct
drm_device
*
dev
);
88
89
struct
urb
*
udl_get_urb
(
struct
drm_device
*
dev
);
90
91
int
udl_submit_urb
(
struct
drm_device
*
dev
,
struct
urb
*
urb
,
size_t
len);
92
void
udl_urb_completion
(
struct
urb
*
urb
);
93
94
int
udl_driver_load
(
struct
drm_device
*
dev
,
unsigned
long
flags
);
95
int
udl_driver_unload
(
struct
drm_device
*
dev
);
96
97
int
udl_fbdev_init
(
struct
drm_device
*
dev
);
98
void
udl_fbdev_cleanup
(
struct
drm_device
*
dev
);
99
void
udl_fbdev_unplug
(
struct
drm_device
*
dev
);
100
struct
drm_framebuffer
*
101
udl_fb_user_fb_create
(
struct
drm_device
*
dev
,
102
struct
drm_file *
file
,
103
struct
drm_mode_fb_cmd2
*mode_cmd);
104
105
int
udl_render_hline
(
struct
drm_device
*
dev
,
int
bpp
,
struct
urb
**urb_ptr,
106
const
char
*front,
char
**urb_buf_ptr,
107
u32
byte_offset
,
u32
device_byte_offset,
u32
byte_width,
108
int
*ident_ptr,
int
*sent_ptr);
109
110
int
udl_dumb_create
(
struct
drm_file *file_priv,
111
struct
drm_device
*
dev
,
112
struct
drm_mode_create_dumb
*args);
113
int
udl_gem_mmap
(
struct
drm_file *file_priv,
struct
drm_device
*
dev
,
114
uint32_t
handle
,
uint64_t
*
offset
);
115
int
udl_dumb_destroy
(
struct
drm_file *file_priv,
struct
drm_device
*
dev
,
116
uint32_t
handle
);
117
118
int
udl_gem_init_object
(
struct
drm_gem_object *obj);
119
void
udl_gem_free_object
(
struct
drm_gem_object *gem_obj);
120
struct
udl_gem_object
*
udl_gem_alloc_object
(
struct
drm_device
*
dev
,
121
size_t
size
);
122
struct
drm_gem_object *
udl_gem_prime_import
(
struct
drm_device
*
dev
,
123
struct
dma_buf
*
dma_buf
);
124
125
int
udl_gem_vmap
(
struct
udl_gem_object
*obj);
126
void
udl_gem_vunmap
(
struct
udl_gem_object
*obj);
127
int
udl_drm_gem_mmap
(
struct
file
*filp,
struct
vm_area_struct
*vma);
128
int
udl_gem_fault
(
struct
vm_area_struct
*vma,
struct
vm_fault *vmf);
129
130
int
udl_handle_damage
(
struct
udl_framebuffer
*
fb
,
int
x
,
int
y
,
131
int
width
,
int
height
);
132
133
int
udl_drop_usb
(
struct
drm_device
*
dev
);
134
135
#define CMD_WRITE_RAW8 "\xAF\x60"
136
#define CMD_WRITE_RL8 "\xAF\x61"
137
#define CMD_WRITE_COPY8 "\xAF\x62"
138
#define CMD_WRITE_RLX8 "\xAF\x63"
140
#define CMD_WRITE_RAW16 "\xAF\x68"
141
#define CMD_WRITE_RL16 "\xAF\x69"
142
#define CMD_WRITE_COPY16 "\xAF\x6A"
143
#define CMD_WRITE_RLX16 "\xAF\x6B"
145
#endif
Generated on Thu Jan 10 2013 13:33:45 for Linux Kernel by
1.8.2