Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
0ac225e5
Commit
0ac225e5
authored
Sep 28, 2011
by
Keith Packard
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'drm-intel-fixes' into drm-intel-next
parents
64a742fa
cd0de039
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
66 deletions
+41
-66
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.c
+2
-2
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_display.c
+10
-2
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_drv.h
+0
-3
drivers/gpu/drm/i915/intel_sdvo.c
drivers/gpu/drm/i915/intel_sdvo.c
+29
-59
No files found.
drivers/gpu/drm/i915/i915_drv.c
View file @
0ac225e5
...
...
@@ -67,11 +67,11 @@ module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600);
MODULE_PARM_DESC
(
i915_enable_rc6
,
"Enable power-saving render C-state 6 (default: true)"
);
unsigned
int
i915_enable_fbc
__read_mostly
=
1
;
unsigned
int
i915_enable_fbc
__read_mostly
=
-
1
;
module_param_named
(
i915_enable_fbc
,
i915_enable_fbc
,
int
,
0600
);
MODULE_PARM_DESC
(
i915_enable_fbc
,
"Enable frame buffer compression for power savings "
"(default:
false
)"
);
"(default:
-1 (use per-chip default)
)"
);
unsigned
int
i915_lvds_downclock
__read_mostly
=
0
;
module_param_named
(
lvds_downclock
,
i915_lvds_downclock
,
int
,
0400
);
...
...
drivers/gpu/drm/i915/intel_display.c
View file @
0ac225e5
...
...
@@ -1800,6 +1800,7 @@ static void intel_update_fbc(struct drm_device *dev)
struct
drm_framebuffer
*
fb
;
struct
intel_framebuffer
*
intel_fb
;
struct
drm_i915_gem_object
*
obj
;
int
enable_fbc
;
DRM_DEBUG_KMS
(
"
\n
"
);
...
...
@@ -1840,8 +1841,15 @@ static void intel_update_fbc(struct drm_device *dev)
intel_fb
=
to_intel_framebuffer
(
fb
);
obj
=
intel_fb
->
obj
;
if
(
!
i915_enable_fbc
)
{
DRM_DEBUG_KMS
(
"fbc disabled per module param (default off)
\n
"
);
enable_fbc
=
i915_enable_fbc
;
if
(
enable_fbc
<
0
)
{
DRM_DEBUG_KMS
(
"fbc set to per-chip default
\n
"
);
enable_fbc
=
1
;
if
(
INTEL_INFO
(
dev
)
->
gen
<=
5
)
enable_fbc
=
0
;
}
if
(
!
enable_fbc
)
{
DRM_DEBUG_KMS
(
"fbc disabled per module param
\n
"
);
dev_priv
->
no_fbc_reason
=
FBC_MODULE_PARAM
;
goto
out_disable
;
}
...
...
drivers/gpu/drm/i915/intel_drv.h
View file @
0ac225e5
...
...
@@ -337,9 +337,6 @@ extern void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
struct
drm_connector
*
connector
,
struct
intel_load_detect_pipe
*
old
);
extern
struct
drm_connector
*
intel_sdvo_find
(
struct
drm_device
*
dev
,
int
sdvoB
);
extern
int
intel_sdvo_supports_hotplug
(
struct
drm_connector
*
connector
);
extern
void
intel_sdvo_set_hotplug
(
struct
drm_connector
*
connector
,
int
enable
);
extern
void
intelfb_restore
(
void
);
extern
void
intel_crtc_fb_gamma_set
(
struct
drm_crtc
*
crtc
,
u16
red
,
u16
green
,
u16
blue
,
int
regno
);
...
...
drivers/gpu/drm/i915/intel_sdvo.c
View file @
0ac225e5
...
...
@@ -92,6 +92,11 @@ struct intel_sdvo {
*/
uint16_t
attached_output
;
/*
* Hotplug activation bits for this device
*/
uint8_t
hotplug_active
[
2
];
/**
* This is used to select the color range of RBG outputs in HDMI mode.
* It is only valid when using TMDS encoding and 8 bit per color mode.
...
...
@@ -1208,74 +1213,20 @@ static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct in
return
true
;
}
/* No use! */
#if 0
struct drm_connector* intel_sdvo_find(struct drm_device *dev, int sdvoB)
{
struct drm_connector *connector = NULL;
struct intel_sdvo *iout = NULL;
struct intel_sdvo *sdvo;
/* find the sdvo connector */
list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
iout = to_intel_sdvo(connector);
if (iout->type != INTEL_OUTPUT_SDVO)
continue;
sdvo = iout->dev_priv;
if (sdvo->sdvo_reg == SDVOB && sdvoB)
return connector;
if (sdvo->sdvo_reg == SDVOC && !sdvoB)
return connector;
}
return NULL;
}
int intel_sdvo_supports_hotplug(struct drm_connector *connector)
static
int
intel_sdvo_supports_hotplug
(
struct
intel_sdvo
*
intel_sdvo
)
{
u8
response
[
2
];
u8 status;
struct intel_sdvo *intel_sdvo;
DRM_DEBUG_KMS("\n");
if (!connector)
return 0;
intel_sdvo = to_intel_sdvo(connector);
return
intel_sdvo_get_value
(
intel_sdvo
,
SDVO_CMD_GET_HOT_PLUG_SUPPORT
,
&
response
,
2
)
&&
response
[
0
];
}
void intel_sdvo_set_hotplug(struct drm_connector *connector, int on
)
static
void
intel_sdvo_enable_hotplug
(
struct
intel_encoder
*
encoder
)
{
u8 response[2];
u8 status;
struct intel_sdvo *intel_sdvo = to_intel_sdvo(connector);
intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0);
intel_sdvo_read_response(intel_sdvo, &response, 2);
if (on) {
intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, NULL, 0);
status = intel_sdvo_read_response(intel_sdvo, &response, 2);
intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2);
} else {
response[0] = 0;
response[1] = 0;
intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, &response, 2);
}
struct
intel_sdvo
*
intel_sdvo
=
to_intel_sdvo
(
&
encoder
->
base
);
intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_GET_ACTIVE_HOT_PLUG, NULL, 0);
intel_sdvo_read_response(intel_sdvo, &response, 2);
intel_sdvo_write_cmd
(
intel_sdvo
,
SDVO_CMD_SET_ACTIVE_HOT_PLUG
,
&
intel_sdvo
->
hotplug_active
,
2
);
}
#endif
static
bool
intel_sdvo_multifunc_encoder
(
struct
intel_sdvo
*
intel_sdvo
)
...
...
@@ -2045,6 +1996,7 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
{
struct
drm_encoder
*
encoder
=
&
intel_sdvo
->
base
.
base
;
struct
drm_connector
*
connector
;
struct
intel_encoder
*
intel_encoder
=
to_intel_encoder
(
encoder
);
struct
intel_connector
*
intel_connector
;
struct
intel_sdvo_connector
*
intel_sdvo_connector
;
...
...
@@ -2062,7 +2014,17 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device)
intel_connector
=
&
intel_sdvo_connector
->
base
;
connector
=
&
intel_connector
->
base
;
connector
->
polled
=
DRM_CONNECTOR_POLL_CONNECT
|
DRM_CONNECTOR_POLL_DISCONNECT
;
if
(
intel_sdvo_supports_hotplug
(
intel_sdvo
)
&
(
1
<<
device
))
{
connector
->
polled
=
DRM_CONNECTOR_POLL_HPD
;
intel_sdvo
->
hotplug_active
[
0
]
|=
1
<<
device
;
/* Some SDVO devices have one-shot hotplug interrupts.
* Ensure that they get re-enabled when an interrupt happens.
*/
intel_encoder
->
hot_plug
=
intel_sdvo_enable_hotplug
;
intel_sdvo_enable_hotplug
(
intel_encoder
);
}
else
connector
->
polled
=
DRM_CONNECTOR_POLL_CONNECT
|
DRM_CONNECTOR_POLL_DISCONNECT
;
encoder
->
encoder_type
=
DRM_MODE_ENCODER_TMDS
;
connector
->
connector_type
=
DRM_MODE_CONNECTOR_DVID
;
...
...
@@ -2569,6 +2531,14 @@ bool intel_sdvo_init(struct drm_device *dev, int sdvo_reg)
if
(
!
intel_sdvo_get_capabilities
(
intel_sdvo
,
&
intel_sdvo
->
caps
))
goto
err
;
/* Set up hotplug command - note paranoia about contents of reply.
* We assume that the hardware is in a sane state, and only touch
* the bits we think we understand.
*/
intel_sdvo_get_value
(
intel_sdvo
,
SDVO_CMD_GET_ACTIVE_HOT_PLUG
,
&
intel_sdvo
->
hotplug_active
,
2
);
intel_sdvo
->
hotplug_active
[
0
]
&=
~
0x3
;
if
(
intel_sdvo_output_setup
(
intel_sdvo
,
intel_sdvo
->
caps
.
output_flags
)
!=
true
)
{
DRM_DEBUG_KMS
(
"SDVO output failed to setup on SDVO%c
\n
"
,
...
...
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