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
c751ce4f
Commit
c751ce4f
authored
Mar 25, 2010
by
Eric Anholt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm/i915: Rename many remaining uses of "output" to encoder or connector.
Signed-off-by:
Eric Anholt
<
eric@anholt.net
>
parent
21d40d37
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
103 additions
and
98 deletions
+103
-98
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_display.c
+10
-10
drivers/gpu/drm/i915/intel_sdvo.c
drivers/gpu/drm/i915/intel_sdvo.c
+93
-88
No files found.
drivers/gpu/drm/i915/intel_display.c
View file @
c751ce4f
...
...
@@ -754,8 +754,8 @@ bool intel_pipe_has_type (struct drm_crtc *crtc, int type)
return
false
;
}
struct
drm_connector
*
intel_pipe_get_
output
(
struct
drm_crtc
*
crtc
)
st
atic
st
ruct
drm_connector
*
intel_pipe_get_
connector
(
struct
drm_crtc
*
crtc
)
{
struct
drm_device
*
dev
=
crtc
->
dev
;
struct
drm_mode_config
*
mode_config
=
&
dev
->
mode_config
;
...
...
@@ -2916,7 +2916,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
int
dspsize_reg
=
(
plane
==
0
)
?
DSPASIZE
:
DSPBSIZE
;
int
dsppos_reg
=
(
plane
==
0
)
?
DSPAPOS
:
DSPBPOS
;
int
pipesrc_reg
=
(
pipe
==
0
)
?
PIPEASRC
:
PIPEBSRC
;
int
refclk
,
num_
output
s
=
0
;
int
refclk
,
num_
connector
s
=
0
;
intel_clock_t
clock
,
reduced_clock
;
u32
dpll
=
0
,
fp
=
0
,
fp2
=
0
,
dspcntr
,
pipeconf
;
bool
ok
,
has_reduced_clock
=
false
,
is_sdvo
=
false
,
is_dvo
=
false
;
...
...
@@ -2974,10 +2974,10 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
break
;
}
num_
output
s
++
;
num_
connector
s
++
;
}
if
(
is_lvds
&&
dev_priv
->
lvds_use_ssc
&&
num_
output
s
<
2
)
{
if
(
is_lvds
&&
dev_priv
->
lvds_use_ssc
&&
num_
connector
s
<
2
)
{
refclk
=
dev_priv
->
lvds_ssc_freq
*
1000
;
DRM_DEBUG_KMS
(
"using SSC reference clock of %d MHz
\n
"
,
refclk
/
1000
);
...
...
@@ -3048,7 +3048,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
if
(
is_edp
)
{
struct
drm_connector
*
edp
;
target_clock
=
mode
->
clock
;
edp
=
intel_pipe_get_
output
(
crtc
);
edp
=
intel_pipe_get_
connector
(
crtc
);
intel_edp_link_config
(
to_intel_encoder
(
edp
),
&
lane
,
&
link_bw
);
}
else
{
...
...
@@ -3230,7 +3230,7 @@ static int intel_crtc_mode_set(struct drm_crtc *crtc,
/* XXX: just matching BIOS for now */
/* dpll |= PLL_REF_INPUT_TVCLKINBC; */
dpll
|=
3
;
else
if
(
is_lvds
&&
dev_priv
->
lvds_use_ssc
&&
num_
output
s
<
2
)
else
if
(
is_lvds
&&
dev_priv
->
lvds_use_ssc
&&
num_
connector
s
<
2
)
dpll
|=
PLLB_REF_INPUT_SPREADSPECTRUMIN
;
else
dpll
|=
PLL_REF_INPUT_DREFCLK
;
...
...
@@ -3654,9 +3654,9 @@ static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green,
* detection.
*
* It will be up to the load-detect code to adjust the pipe as appropriate for
* its requirements. The pipe will be connected to no other
output
s.
* its requirements. The pipe will be connected to no other
encoder
s.
*
* Currently this code will only succeed if there is a pipe with no
output
s
* Currently this code will only succeed if there is a pipe with no
encoder
s
* configured for it. In the future, it could choose to temporarily disable
* some outputs to free up a pipe for its use.
*
...
...
@@ -3770,7 +3770,7 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, int dpm
drm_helper_disable_unused_functions
(
dev
);
}
/* Switch crtc and
output
back off if necessary */
/* Switch crtc and
encoder
back off if necessary */
if
(
crtc
->
enabled
&&
dpms_mode
!=
DRM_MODE_DPMS_ON
)
{
if
(
encoder
->
crtc
==
crtc
)
encoder_funcs
->
dpms
(
encoder
,
dpms_mode
);
...
...
drivers/gpu/drm/i915/intel_sdvo.c
View file @
c751ce4f
...
...
@@ -53,7 +53,7 @@ struct intel_sdvo_priv {
u8
slave_addr
;
/* Register for the SDVO device: SDVOB or SDVOC */
int
output_device
;
int
sdvo_reg
;
/* Active outputs controlled by this SDVO output */
uint16_t
controlled_output
;
...
...
@@ -123,7 +123,7 @@ struct intel_sdvo_priv {
*/
struct
intel_sdvo_encode
encode
;
/* DDC bus used by this SDVO
output
*/
/* DDC bus used by this SDVO
encoder
*/
uint8_t
ddc_bus
;
/* Mac mini hack -- use the same DDC as the analog connector */
...
...
@@ -176,7 +176,7 @@ static void intel_sdvo_write_sdvox(struct intel_encoder *intel_encoder, u32 val)
u32
bval
=
val
,
cval
=
val
;
int
i
;
if
(
sdvo_priv
->
output_device
==
SDVOB
)
{
if
(
sdvo_priv
->
sdvo_reg
==
SDVOB
)
{
cval
=
I915_READ
(
SDVOC
);
}
else
{
bval
=
I915_READ
(
SDVOB
);
...
...
@@ -352,8 +352,8 @@ static const struct _sdvo_cmd_name {
SDVO_CMD_NAME_ENTRY
(
SDVO_CMD_GET_HBUF_DATA
),
};
#define SDVO_NAME(dev_priv) ((dev_priv)->
output_device
== SDVOB ? "SDVOB" : "SDVOC")
#define SDVO_PRIV(
output) ((struct intel_sdvo_priv *) (output
)->dev_priv)
#define SDVO_NAME(dev_priv) ((dev_priv)->
sdvo_reg
== SDVOB ? "SDVOB" : "SDVOC")
#define SDVO_PRIV(
encoder) ((struct intel_sdvo_priv *) (encoder
)->dev_priv)
static
void
intel_sdvo_debug_write
(
struct
intel_encoder
*
intel_encoder
,
u8
cmd
,
void
*
args
,
int
args_len
)
...
...
@@ -712,13 +712,13 @@ static bool intel_sdvo_set_output_timing(struct intel_encoder *intel_encoder,
}
static
bool
intel_sdvo_create_preferred_input_timing
(
struct
intel_encoder
*
output
,
intel_sdvo_create_preferred_input_timing
(
struct
intel_encoder
*
intel_encoder
,
uint16_t
clock
,
uint16_t
width
,
uint16_t
height
)
{
struct
intel_sdvo_preferred_input_timing_args
args
;
struct
intel_sdvo_priv
*
sdvo_priv
=
output
->
dev_priv
;
struct
intel_sdvo_priv
*
sdvo_priv
=
intel_encoder
->
dev_priv
;
uint8_t
status
;
memset
(
&
args
,
0
,
sizeof
(
args
));
...
...
@@ -732,32 +732,33 @@ intel_sdvo_create_preferred_input_timing(struct intel_encoder *output,
sdvo_priv
->
sdvo_lvds_fixed_mode
->
vdisplay
!=
height
))
args
.
scaled
=
1
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING
,
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING
,
&
args
,
sizeof
(
args
));
status
=
intel_sdvo_read_response
(
output
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
NULL
,
0
);
if
(
status
!=
SDVO_CMD_STATUS_SUCCESS
)
return
false
;
return
true
;
}
static
bool
intel_sdvo_get_preferred_input_timing
(
struct
intel_encoder
*
output
,
static
bool
intel_sdvo_get_preferred_input_timing
(
struct
intel_encoder
*
intel_encoder
,
struct
intel_sdvo_dtd
*
dtd
)
{
bool
status
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1
,
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
output
,
&
dtd
->
part1
,
status
=
intel_sdvo_read_response
(
intel_encoder
,
&
dtd
->
part1
,
sizeof
(
dtd
->
part1
));
if
(
status
!=
SDVO_CMD_STATUS_SUCCESS
)
return
false
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2
,
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
output
,
&
dtd
->
part2
,
status
=
intel_sdvo_read_response
(
intel_encoder
,
&
dtd
->
part2
,
sizeof
(
dtd
->
part2
));
if
(
status
!=
SDVO_CMD_STATUS_SUCCESS
)
return
false
;
...
...
@@ -876,13 +877,13 @@ static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode,
mode
->
flags
|=
DRM_MODE_FLAG_PVSYNC
;
}
static
bool
intel_sdvo_get_supp_encode
(
struct
intel_encoder
*
output
,
static
bool
intel_sdvo_get_supp_encode
(
struct
intel_encoder
*
intel_encoder
,
struct
intel_sdvo_encode
*
encode
)
{
uint8_t
status
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_GET_SUPP_ENCODE
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
output
,
encode
,
sizeof
(
*
encode
));
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_GET_SUPP_ENCODE
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
encode
,
sizeof
(
*
encode
));
if
(
status
!=
SDVO_CMD_STATUS_SUCCESS
)
{
/* non-support means DVI */
memset
(
encode
,
0
,
sizeof
(
*
encode
));
return
false
;
...
...
@@ -891,29 +892,30 @@ static bool intel_sdvo_get_supp_encode(struct intel_encoder *output,
return
true
;
}
static
bool
intel_sdvo_set_encode
(
struct
intel_encoder
*
output
,
uint8_t
mode
)
static
bool
intel_sdvo_set_encode
(
struct
intel_encoder
*
intel_encoder
,
uint8_t
mode
)
{
uint8_t
status
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_ENCODE
,
&
mode
,
1
);
status
=
intel_sdvo_read_response
(
output
,
NULL
,
0
);
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_ENCODE
,
&
mode
,
1
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
NULL
,
0
);
return
(
status
==
SDVO_CMD_STATUS_SUCCESS
);
}
static
bool
intel_sdvo_set_colorimetry
(
struct
intel_encoder
*
output
,
static
bool
intel_sdvo_set_colorimetry
(
struct
intel_encoder
*
intel_encoder
,
uint8_t
mode
)
{
uint8_t
status
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_COLORIMETRY
,
&
mode
,
1
);
status
=
intel_sdvo_read_response
(
output
,
NULL
,
0
);
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_COLORIMETRY
,
&
mode
,
1
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
NULL
,
0
);
return
(
status
==
SDVO_CMD_STATUS_SUCCESS
);
}
#if 0
static void intel_sdvo_dump_hdmi_buf(struct intel_encoder *
output
)
static void intel_sdvo_dump_hdmi_buf(struct intel_encoder *
intel_encoder
)
{
int i, j;
uint8_t set_buf_index[2];
...
...
@@ -922,43 +924,45 @@ static void intel_sdvo_dump_hdmi_buf(struct intel_encoder *output)
uint8_t buf[48];
uint8_t *pos;
intel_sdvo_write_cmd(
output
, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0);
intel_sdvo_read_response(
output
, &av_split, 1);
intel_sdvo_write_cmd(
encoder
, SDVO_CMD_GET_HBUF_AV_SPLIT, NULL, 0);
intel_sdvo_read_response(
encoder
, &av_split, 1);
for (i = 0; i <= av_split; i++) {
set_buf_index[0] = i; set_buf_index[1] = 0;
intel_sdvo_write_cmd(
output
, SDVO_CMD_SET_HBUF_INDEX,
intel_sdvo_write_cmd(
encoder
, SDVO_CMD_SET_HBUF_INDEX,
set_buf_index, 2);
intel_sdvo_write_cmd(
output
, SDVO_CMD_GET_HBUF_INFO, NULL, 0);
intel_sdvo_read_response(
output
, &buf_size, 1);
intel_sdvo_write_cmd(
encoder
, SDVO_CMD_GET_HBUF_INFO, NULL, 0);
intel_sdvo_read_response(
encoder
, &buf_size, 1);
pos = buf;
for (j = 0; j <= buf_size; j += 8) {
intel_sdvo_write_cmd(
output
, SDVO_CMD_GET_HBUF_DATA,
intel_sdvo_write_cmd(
encoder
, SDVO_CMD_GET_HBUF_DATA,
NULL, 0);
intel_sdvo_read_response(
output
, pos, 8);
intel_sdvo_read_response(
encoder
, pos, 8);
pos += 8;
}
}
}
#endif
static
void
intel_sdvo_set_hdmi_buf
(
struct
intel_encoder
*
output
,
int
index
,
uint8_t
*
data
,
int8_t
size
,
uint8_t
tx_rate
)
static
void
intel_sdvo_set_hdmi_buf
(
struct
intel_encoder
*
intel_encoder
,
int
index
,
uint8_t
*
data
,
int8_t
size
,
uint8_t
tx_rate
)
{
uint8_t
set_buf_index
[
2
];
set_buf_index
[
0
]
=
index
;
set_buf_index
[
1
]
=
0
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_HBUF_INDEX
,
set_buf_index
,
2
);
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_HBUF_INDEX
,
set_buf_index
,
2
);
for
(;
size
>
0
;
size
-=
8
)
{
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_HBUF_DATA
,
data
,
8
);
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_HBUF_DATA
,
data
,
8
);
data
+=
8
;
}
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_HBUF_TXRATE
,
&
tx_rate
,
1
);
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_HBUF_TXRATE
,
&
tx_rate
,
1
);
}
static
uint8_t
intel_sdvo_calc_hbuf_csum
(
uint8_t
*
data
,
uint8_t
size
)
...
...
@@ -1033,7 +1037,7 @@ struct dip_infoframe {
}
__attribute__
((
packed
))
u
;
}
__attribute__
((
packed
));
static
void
intel_sdvo_set_avi_infoframe
(
struct
intel_encoder
*
output
,
static
void
intel_sdvo_set_avi_infoframe
(
struct
intel_encoder
*
intel_encoder
,
struct
drm_display_mode
*
mode
)
{
struct
dip_infoframe
avi_if
=
{
...
...
@@ -1044,15 +1048,16 @@ static void intel_sdvo_set_avi_infoframe(struct intel_encoder *output,
avi_if
.
checksum
=
intel_sdvo_calc_hbuf_csum
((
uint8_t
*
)
&
avi_if
,
4
+
avi_if
.
len
);
intel_sdvo_set_hdmi_buf
(
output
,
1
,
(
uint8_t
*
)
&
avi_if
,
4
+
avi_if
.
len
,
intel_sdvo_set_hdmi_buf
(
intel_encoder
,
1
,
(
uint8_t
*
)
&
avi_if
,
4
+
avi_if
.
len
,
SDVO_HBUF_TX_VSYNC
);
}
static
void
intel_sdvo_set_tv_format
(
struct
intel_encoder
*
output
)
static
void
intel_sdvo_set_tv_format
(
struct
intel_encoder
*
intel_encoder
)
{
struct
intel_sdvo_tv_format
format
;
struct
intel_sdvo_priv
*
sdvo_priv
=
output
->
dev_priv
;
struct
intel_sdvo_priv
*
sdvo_priv
=
intel_encoder
->
dev_priv
;
uint32_t
format_map
,
i
;
uint8_t
status
;
...
...
@@ -1065,10 +1070,10 @@ static void intel_sdvo_set_tv_format(struct intel_encoder *output)
memcpy
(
&
format
,
&
format_map
,
sizeof
(
format_map
)
>
sizeof
(
format
)
?
sizeof
(
format
)
:
sizeof
(
format_map
));
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_TV_FORMAT
,
&
format_map
,
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_TV_FORMAT
,
&
format_map
,
sizeof
(
format
));
status
=
intel_sdvo_read_response
(
output
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
NULL
,
0
);
if
(
status
!=
SDVO_CMD_STATUS_SUCCESS
)
DRM_DEBUG_KMS
(
"%s: Failed to set TV format
\n
"
,
SDVO_NAME
(
sdvo_priv
));
...
...
@@ -1078,8 +1083,8 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
struct
drm_display_mode
*
mode
,
struct
drm_display_mode
*
adjusted_mode
)
{
struct
intel_encoder
*
output
=
enc_to_intel_encoder
(
encoder
);
struct
intel_sdvo_priv
*
dev_priv
=
output
->
dev_priv
;
struct
intel_encoder
*
intel_encoder
=
enc_to_intel_encoder
(
encoder
);
struct
intel_sdvo_priv
*
dev_priv
=
intel_encoder
->
dev_priv
;
if
(
dev_priv
->
is_tv
)
{
struct
intel_sdvo_dtd
output_dtd
;
...
...
@@ -1094,22 +1099,22 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
/* Set output timings */
intel_sdvo_get_dtd_from_mode
(
&
output_dtd
,
mode
);
intel_sdvo_set_target_output
(
output
,
intel_sdvo_set_target_output
(
intel_encoder
,
dev_priv
->
controlled_output
);
intel_sdvo_set_output_timing
(
output
,
&
output_dtd
);
intel_sdvo_set_output_timing
(
intel_encoder
,
&
output_dtd
);
/* Set the input timing to the screen. Assume always input 0. */
intel_sdvo_set_target_input
(
output
,
true
,
false
);
intel_sdvo_set_target_input
(
intel_encoder
,
true
,
false
);
success
=
intel_sdvo_create_preferred_input_timing
(
output
,
success
=
intel_sdvo_create_preferred_input_timing
(
intel_encoder
,
mode
->
clock
/
10
,
mode
->
hdisplay
,
mode
->
vdisplay
);
if
(
success
)
{
struct
intel_sdvo_dtd
input_dtd
;
intel_sdvo_get_preferred_input_timing
(
output
,
intel_sdvo_get_preferred_input_timing
(
intel_encoder
,
&
input_dtd
);
intel_sdvo_get_mode_from_dtd
(
adjusted_mode
,
&
input_dtd
);
dev_priv
->
sdvo_flags
=
input_dtd
.
part2
.
sdvo_flags
;
...
...
@@ -1132,16 +1137,16 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
intel_sdvo_get_dtd_from_mode
(
&
output_dtd
,
dev_priv
->
sdvo_lvds_fixed_mode
);
intel_sdvo_set_target_output
(
output
,
intel_sdvo_set_target_output
(
intel_encoder
,
dev_priv
->
controlled_output
);
intel_sdvo_set_output_timing
(
output
,
&
output_dtd
);
intel_sdvo_set_output_timing
(
intel_encoder
,
&
output_dtd
);
/* Set the input timing to the screen. Assume always input 0. */
intel_sdvo_set_target_input
(
output
,
true
,
false
);
intel_sdvo_set_target_input
(
intel_encoder
,
true
,
false
);
success
=
intel_sdvo_create_preferred_input_timing
(
output
,
intel_encoder
,
mode
->
clock
/
10
,
mode
->
hdisplay
,
mode
->
vdisplay
);
...
...
@@ -1149,7 +1154,7 @@ static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder,
if
(
success
)
{
struct
intel_sdvo_dtd
input_dtd
;
intel_sdvo_get_preferred_input_timing
(
output
,
intel_sdvo_get_preferred_input_timing
(
intel_encoder
,
&
input_dtd
);
intel_sdvo_get_mode_from_dtd
(
adjusted_mode
,
&
input_dtd
);
dev_priv
->
sdvo_flags
=
input_dtd
.
part2
.
sdvo_flags
;
...
...
@@ -1181,8 +1186,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
struct
drm_crtc
*
crtc
=
encoder
->
crtc
;
struct
intel_crtc
*
intel_crtc
=
to_intel_crtc
(
crtc
);
struct
intel_encoder
*
output
=
enc_to_intel_encoder
(
encoder
);
struct
intel_sdvo_priv
*
sdvo_priv
=
output
->
dev_priv
;
struct
intel_encoder
*
intel_encoder
=
enc_to_intel_encoder
(
encoder
);
struct
intel_sdvo_priv
*
sdvo_priv
=
intel_encoder
->
dev_priv
;
u32
sdvox
=
0
;
int
sdvo_pixel_multiply
;
struct
intel_sdvo_in_out_map
in_out
;
...
...
@@ -1201,12 +1206,12 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
in_out
.
in0
=
sdvo_priv
->
controlled_output
;
in_out
.
in1
=
0
;
intel_sdvo_write_cmd
(
output
,
SDVO_CMD_SET_IN_OUT_MAP
,
intel_sdvo_write_cmd
(
intel_encoder
,
SDVO_CMD_SET_IN_OUT_MAP
,
&
in_out
,
sizeof
(
in_out
));
status
=
intel_sdvo_read_response
(
output
,
NULL
,
0
);
status
=
intel_sdvo_read_response
(
intel_encoder
,
NULL
,
0
);
if
(
sdvo_priv
->
is_hdmi
)
{
intel_sdvo_set_avi_infoframe
(
output
,
mode
);
intel_sdvo_set_avi_infoframe
(
intel_encoder
,
mode
);
sdvox
|=
SDVO_AUDIO_ENABLE
;
}
...
...
@@ -1223,16 +1228,16 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
*/
if
(
!
sdvo_priv
->
is_tv
&&
!
sdvo_priv
->
is_lvds
)
{
/* Set the output timing to the screen */
intel_sdvo_set_target_output
(
output
,
intel_sdvo_set_target_output
(
intel_encoder
,
sdvo_priv
->
controlled_output
);
intel_sdvo_set_output_timing
(
output
,
&
input_dtd
);
intel_sdvo_set_output_timing
(
intel_encoder
,
&
input_dtd
);
}
/* Set the input timing to the screen. Assume always input 0. */
intel_sdvo_set_target_input
(
output
,
true
,
false
);
intel_sdvo_set_target_input
(
intel_encoder
,
true
,
false
);
if
(
sdvo_priv
->
is_tv
)
intel_sdvo_set_tv_format
(
output
);
intel_sdvo_set_tv_format
(
intel_encoder
);
/* We would like to use intel_sdvo_create_preferred_input_timing() to
* provide the device with a timing it can support, if it supports that
...
...
@@ -1240,29 +1245,29 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
* output the preferred timing, and we don't support that currently.
*/
#if 0
success = intel_sdvo_create_preferred_input_timing(
output
, clock,
success = intel_sdvo_create_preferred_input_timing(
encoder
, clock,
width, height);
if (success) {
struct intel_sdvo_dtd *input_dtd;
intel_sdvo_get_preferred_input_timing(
output
, &input_dtd);
intel_sdvo_set_input_timing(
output
, &input_dtd);
intel_sdvo_get_preferred_input_timing(
encoder
, &input_dtd);
intel_sdvo_set_input_timing(
encoder
, &input_dtd);
}
#else
intel_sdvo_set_input_timing
(
output
,
&
input_dtd
);
intel_sdvo_set_input_timing
(
intel_encoder
,
&
input_dtd
);
#endif
switch
(
intel_sdvo_get_pixel_multiplier
(
mode
))
{
case
1
:
intel_sdvo_set_clock_rate_mult
(
output
,
intel_sdvo_set_clock_rate_mult
(
intel_encoder
,
SDVO_CLOCK_RATE_MULT_1X
);
break
;
case
2
:
intel_sdvo_set_clock_rate_mult
(
output
,
intel_sdvo_set_clock_rate_mult
(
intel_encoder
,
SDVO_CLOCK_RATE_MULT_2X
);
break
;
case
4
:
intel_sdvo_set_clock_rate_mult
(
output
,
intel_sdvo_set_clock_rate_mult
(
intel_encoder
,
SDVO_CLOCK_RATE_MULT_4X
);
break
;
}
...
...
@@ -1273,8 +1278,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
SDVO_VSYNC_ACTIVE_HIGH
|
SDVO_HSYNC_ACTIVE_HIGH
;
}
else
{
sdvox
|=
I915_READ
(
sdvo_priv
->
output_device
);
switch
(
sdvo_priv
->
output_device
)
{
sdvox
|=
I915_READ
(
sdvo_priv
->
sdvo_reg
);
switch
(
sdvo_priv
->
sdvo_reg
)
{
case
SDVOB
:
sdvox
&=
SDVOB_PRESERVE_MASK
;
break
;
...
...
@@ -1298,7 +1303,7 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
if
(
sdvo_priv
->
sdvo_flags
&
SDVO_NEED_TO_STALL
)
sdvox
|=
SDVO_STALL_SELECT
;
intel_sdvo_write_sdvox
(
output
,
sdvox
);
intel_sdvo_write_sdvox
(
intel_encoder
,
sdvox
);
}
static
void
intel_sdvo_dpms
(
struct
drm_encoder
*
encoder
,
int
mode
)
...
...
@@ -1315,7 +1320,7 @@ static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode)
intel_sdvo_set_encoder_power_state
(
intel_encoder
,
mode
);
if
(
mode
==
DRM_MODE_DPMS_OFF
)
{
temp
=
I915_READ
(
sdvo_priv
->
output_device
);
temp
=
I915_READ
(
sdvo_priv
->
sdvo_reg
);
if
((
temp
&
SDVO_ENABLE
)
!=
0
)
{
intel_sdvo_write_sdvox
(
intel_encoder
,
temp
&
~
SDVO_ENABLE
);
}
...
...
@@ -1325,7 +1330,7 @@ static void intel_sdvo_dpms(struct drm_encoder *encoder, int mode)
int
i
;
u8
status
;
temp
=
I915_READ
(
sdvo_priv
->
output_device
);
temp
=
I915_READ
(
sdvo_priv
->
sdvo_reg
);
if
((
temp
&
SDVO_ENABLE
)
==
0
)
intel_sdvo_write_sdvox
(
intel_encoder
,
temp
|
SDVO_ENABLE
);
for
(
i
=
0
;
i
<
2
;
i
++
)
...
...
@@ -1388,7 +1393,7 @@ static void intel_sdvo_save(struct drm_connector *connector)
/* XXX: Save TV format/enhancements. */
}
sdvo_priv
->
save_SDVOX
=
I915_READ
(
sdvo_priv
->
output_device
);
sdvo_priv
->
save_SDVOX
=
I915_READ
(
sdvo_priv
->
sdvo_reg
);
}
static
void
intel_sdvo_restore
(
struct
drm_connector
*
connector
)
...
...
@@ -1499,10 +1504,10 @@ struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB)
sdvo
=
iout
->
dev_priv
;
if
(
sdvo
->
output_device
==
SDVOB
&&
sdvoB
)
if
(
sdvo
->
sdvo_reg
==
SDVOB
&&
sdvoB
)
return
connector
;
if
(
sdvo
->
output_device
==
SDVOC
&&
!
sdvoB
)
if
(
sdvo
->
sdvo_reg
==
SDVOC
&&
!
sdvoB
)
return
connector
;
}
...
...
@@ -2248,12 +2253,12 @@ static struct i2c_algorithm intel_sdvo_i2c_bit_algo = {
};
static
u8
intel_sdvo_get_slave_addr
(
struct
drm_device
*
dev
,
int
output_device
)
intel_sdvo_get_slave_addr
(
struct
drm_device
*
dev
,
int
sdvo_reg
)
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
struct
sdvo_device_mapping
*
my_mapping
,
*
other_mapping
;
if
(
output_device
==
SDVOB
)
{
if
(
sdvo_reg
==
SDVOB
)
{
my_mapping
=
&
dev_priv
->
sdvo_mappings
[
0
];
other_mapping
=
&
dev_priv
->
sdvo_mappings
[
1
];
}
else
{
...
...
@@ -2278,7 +2283,7 @@ intel_sdvo_get_slave_addr(struct drm_device *dev, int output_device)
/* No SDVO device info is found for another DVO port,
* so use mapping assumption we had before BIOS parsing.
*/
if
(
output_device
==
SDVOB
)
if
(
sdvo_reg
==
SDVOB
)
return
0x70
;
else
return
0x72
;
...
...
@@ -2764,7 +2769,7 @@ static void intel_sdvo_create_enhance_property(struct drm_connector *connector)
return
;
}
bool
intel_sdvo_init
(
struct
drm_device
*
dev
,
int
output_device
)
bool
intel_sdvo_init
(
struct
drm_device
*
dev
,
int
sdvo_reg
)
{
struct
drm_i915_private
*
dev_priv
=
dev
->
dev_private
;
struct
drm_connector
*
connector
;
...
...
@@ -2780,13 +2785,13 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
}
sdvo_priv
=
(
struct
intel_sdvo_priv
*
)(
intel_encoder
+
1
);
sdvo_priv
->
output_device
=
output_device
;
sdvo_priv
->
sdvo_reg
=
sdvo_reg
;
intel_encoder
->
dev_priv
=
sdvo_priv
;
intel_encoder
->
type
=
INTEL_OUTPUT_SDVO
;
/* setup the DDC bus. */
if
(
output_device
==
SDVOB
)
if
(
sdvo_reg
==
SDVOB
)
intel_encoder
->
i2c_bus
=
intel_i2c_create
(
dev
,
GPIOE
,
"SDVOCTRL_E for SDVOB"
);
else
intel_encoder
->
i2c_bus
=
intel_i2c_create
(
dev
,
GPIOE
,
"SDVOCTRL_E for SDVOC"
);
...
...
@@ -2794,7 +2799,7 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
if
(
!
intel_encoder
->
i2c_bus
)
goto
err_inteloutput
;
sdvo_priv
->
slave_addr
=
intel_sdvo_get_slave_addr
(
dev
,
output_device
);
sdvo_priv
->
slave_addr
=
intel_sdvo_get_slave_addr
(
dev
,
sdvo_reg
);
/* Save the bit-banging i2c functionality for use by the DDC wrapper */
intel_sdvo_i2c_bit_algo
.
functionality
=
intel_encoder
->
i2c_bus
->
algo
->
functionality
;
...
...
@@ -2803,13 +2808,13 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
for
(
i
=
0
;
i
<
0x40
;
i
++
)
{
if
(
!
intel_sdvo_read_byte
(
intel_encoder
,
i
,
&
ch
[
i
]))
{
DRM_DEBUG_KMS
(
"No SDVO device found on SDVO%c
\n
"
,
output_device
==
SDVOB
?
'B'
:
'C'
);
sdvo_reg
==
SDVOB
?
'B'
:
'C'
);
goto
err_i2c
;
}
}
/* setup the DDC bus. */
if
(
output_device
==
SDVOB
)
{
if
(
sdvo_reg
==
SDVOB
)
{
intel_encoder
->
ddc_bus
=
intel_i2c_create
(
dev
,
GPIOE
,
"SDVOB DDC BUS"
);
sdvo_priv
->
analog_ddc_bus
=
intel_i2c_create
(
dev
,
GPIOA
,
"SDVOB/VGA DDC BUS"
);
...
...
@@ -2833,7 +2838,7 @@ bool intel_sdvo_init(struct drm_device *dev, int output_device)
if
(
intel_sdvo_output_setup
(
intel_encoder
,
sdvo_priv
->
caps
.
output_flags
)
!=
true
)
{
DRM_DEBUG_KMS
(
"SDVO output failed to setup on SDVO%c
\n
"
,
output_device
==
SDVOB
?
'B'
:
'C'
);
sdvo_reg
==
SDVOB
?
'B'
:
'C'
);
goto
err_i2c
;
}
...
...
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