drm/modeset: add more debugging and fixup some fb enable/disabe bits
parent
b31adb005a
commit
d9ead89c79
|
@ -67,6 +67,7 @@ void drm_helper_probe_single_connector_modes(struct drm_connector *connector, ui
|
||||||
struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
|
struct drm_connector_helper_funcs *connector_funcs = connector->helper_private;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
DRM_DEBUG("%s\n", drm_get_connector_name(connector));
|
||||||
/* set all modes to the unverified state */
|
/* set all modes to the unverified state */
|
||||||
list_for_each_entry_safe(mode, t, &connector->modes, head)
|
list_for_each_entry_safe(mode, t, &connector->modes, head)
|
||||||
mode->status = MODE_UNVERIFIED;
|
mode->status = MODE_UNVERIFIED;
|
||||||
|
@ -186,8 +187,11 @@ void drm_helper_disable_unused_functions(struct drm_device *dev)
|
||||||
|
|
||||||
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
||||||
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
|
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
|
||||||
if (!crtc->enabled)
|
crtc->enabled = drm_helper_crtc_in_use(crtc);
|
||||||
|
if (!crtc->enabled) {
|
||||||
crtc_funcs->dpms(crtc, DPMSModeOff);
|
crtc_funcs->dpms(crtc, DPMSModeOff);
|
||||||
|
crtc->fb = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_helper_disable_unused_functions);
|
EXPORT_SYMBOL(drm_helper_disable_unused_functions);
|
||||||
|
@ -209,6 +213,7 @@ static void drm_pick_crtcs (struct drm_device *dev)
|
||||||
struct drm_connector_helper_funcs *connector_funcs;
|
struct drm_connector_helper_funcs *connector_funcs;
|
||||||
int found;
|
int found;
|
||||||
|
|
||||||
|
DRM_DEBUG("\n");
|
||||||
/* clean out all the encoder/crtc combos */
|
/* clean out all the encoder/crtc combos */
|
||||||
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
||||||
encoder->crtc = NULL;
|
encoder->crtc = NULL;
|
||||||
|
@ -515,8 +520,13 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
|
||||||
|
|
||||||
/* We should be able to check here if the fb has the same properties
|
/* We should be able to check here if the fb has the same properties
|
||||||
* and then just flip_or_move it */
|
* and then just flip_or_move it */
|
||||||
if (set->crtc->fb != set->fb)
|
if (set->crtc->fb != set->fb) {
|
||||||
flip_or_move = true;
|
/* if we have no fb then its a change not a flip */
|
||||||
|
if (set->crtc->fb == NULL)
|
||||||
|
changed = true;
|
||||||
|
else
|
||||||
|
flip_or_move = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (set->x != set->crtc->x || set->y != set->crtc->y)
|
if (set->x != set->crtc->x || set->y != set->crtc->y)
|
||||||
flip_or_move = true;
|
flip_or_move = true;
|
||||||
|
@ -629,6 +639,8 @@ EXPORT_SYMBOL(drm_crtc_helper_set_config);
|
||||||
|
|
||||||
bool drm_helper_plugged_event(struct drm_device *dev)
|
bool drm_helper_plugged_event(struct drm_device *dev)
|
||||||
{
|
{
|
||||||
|
DRM_DEBUG("\n");
|
||||||
|
|
||||||
drm_helper_probe_connector_modes(dev, dev->mode_config.max_width, dev->mode_config.max_height);
|
drm_helper_probe_connector_modes(dev, dev->mode_config.max_width, dev->mode_config.max_height);
|
||||||
|
|
||||||
drm_pick_crtcs(dev);
|
drm_pick_crtcs(dev);
|
||||||
|
|
|
@ -309,11 +309,9 @@ static int intelfb_set_par(struct fb_info *info)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
list_for_each_entry(modeset, &par->mode_set_list, head) {
|
list_for_each_entry(modeset, &par->mode_set_list, head) {
|
||||||
if (modeset->num_connectors) {
|
ret = modeset->crtc->funcs->set_config(modeset);
|
||||||
ret = modeset->crtc->funcs->set_config(modeset);
|
if (ret)
|
||||||
if (ret)
|
return ret;
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -782,6 +780,7 @@ static int intelfb_single_fb_probe(struct drm_device *dev)
|
||||||
struct intelfb_par *par;
|
struct intelfb_par *par;
|
||||||
struct drm_mode_set *modeset;
|
struct drm_mode_set *modeset;
|
||||||
|
|
||||||
|
DRM_DEBUG("\n");
|
||||||
/* first up get a count of crtcs now in use and new min/maxes width/heights */
|
/* first up get a count of crtcs now in use and new min/maxes width/heights */
|
||||||
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
||||||
if (drm_helper_crtc_in_use(crtc)) {
|
if (drm_helper_crtc_in_use(crtc)) {
|
||||||
|
|
Loading…
Reference in New Issue