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
nouveau
nouveau_encoder.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2008 Maarten Maathuis.
3
* All Rights Reserved.
4
*
5
* Permission is hereby granted, free of charge, to any person obtaining
6
* a copy of this software and associated documentation files (the
7
* "Software"), to deal in the Software without restriction, including
8
* without limitation the rights to use, copy, modify, merge, publish,
9
* distribute, sublicense, and/or sell copies of the Software, and to
10
* permit persons to whom the Software is furnished to do so, subject to
11
* the following conditions:
12
*
13
* The above copyright notice and this permission notice (including the
14
* next paragraph) shall be included in all copies or substantial
15
* portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
* IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
21
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
*
25
*/
26
27
#ifndef __NOUVEAU_ENCODER_H__
28
#define __NOUVEAU_ENCODER_H__
29
30
#include <
subdev/bios/dcb.h
>
31
32
#include <
drm/drm_encoder_slave.h
>
33
#include "
nv04_display.h
"
34
35
#define NV_DPMS_CLEARED 0x80
36
37
struct
nouveau_i2c_port
;
38
39
struct
dp_train_func
{
40
void
(*
link_set
)(
struct
drm_device
*,
struct
dcb_output
*,
int
crtc
,
41
int
nr
,
u32
bw,
bool
enhframe);
42
void
(*
train_set
)(
struct
drm_device
*,
struct
dcb_output
*,
u8
pattern
);
43
void
(*
train_adj
)(
struct
drm_device
*,
struct
dcb_output
*,
44
u8
lane,
u8
swing,
u8
preem);
45
};
46
47
struct
nouveau_encoder
{
48
struct
drm_encoder_slave
base
;
49
50
struct
dcb_output
*
dcb
;
51
int
or
;
52
53
/* different to drm_encoder.crtc, this reflects what's
54
* actually programmed on the hw, not the proposed crtc */
55
struct
drm_crtc
*
crtc
;
56
57
struct
drm_display_mode
mode
;
58
int
last_dpms
;
59
60
struct
nv04_output_reg
restore
;
61
62
union
{
63
struct
{
64
u8
dpcd
[8];
65
int
link_nr
;
66
int
link_bw
;
67
u32
datarate
;
68
}
dp
;
69
};
70
};
71
72
struct
nouveau_encoder
*
73
find_encoder
(
struct
drm_connector
*
connector
,
int
type
);
74
75
static
inline
struct
nouveau_encoder
*
nouveau_encoder
(
struct
drm_encoder
*enc)
76
{
77
struct
drm_encoder_slave
*
slave
=
to_encoder_slave
(enc);
78
79
return
container_of
(slave,
struct
nouveau_encoder
,
base
);
80
}
81
82
static
inline
struct
drm_encoder
*to_drm_encoder(
struct
nouveau_encoder
*enc)
83
{
84
return
&enc->
base
.base;
85
}
86
87
static
inline
struct
drm_encoder_slave_funcs
*
88
get_slave_funcs(
struct
drm_encoder
*enc)
89
{
90
return
to_encoder_slave
(enc)->slave_funcs;
91
}
92
93
/* nouveau_dp.c */
94
bool
nouveau_dp_detect
(
struct
drm_encoder
*);
95
void
nouveau_dp_dpms
(
struct
drm_encoder
*,
int
mode
,
u32
datarate,
96
struct
dp_train_func
*);
97
u8
*
nouveau_dp_bios_data
(
struct
drm_device
*,
struct
dcb_output
*,
u8
**);
98
99
struct
nouveau_connector
*
100
nouveau_encoder_connector_get
(
struct
nouveau_encoder
*encoder);
101
int
nv50_sor_create
(
struct
drm_connector
*,
struct
dcb_output
*);
102
void
nv50_sor_dp_calc_tu
(
struct
drm_device
*,
int
,
int
,
u32
,
u32
);
103
int
nv50_dac_create
(
struct
drm_connector
*,
struct
dcb_output
*);
104
105
106
#endif
/* __NOUVEAU_ENCODER_H__ */
Generated on Thu Jan 10 2013 13:32:48 for Linux Kernel by
1.8.2