Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next
As promised, piles of prep work all around: - drm_atomic_state rework, prep for nonblocking commit helpers - fence patches from Gustavo and Christian to prep for atomic fences and some cool work in ttm/amdgpu from Christian - drm event prep for both nonblocking commit and atomic fences - Gustavo seems on a crusade against the non-kms-native version of the vblank functions. - prep work from Boris to nuke all the silly ->best_encoder implementations we have (we really only need that for truly dynamic cases like dvi-i vs dvi-d or dp mst selecting the right transcoder on intel) - prep work from Laurent to rework the format handling functions - and few small things all over * tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel: (47 commits) drm/dsi: Implement set tear scanline drm/fb_cma_helper: Implement fb_mmap callback drm/qxl: Remove useless drm_fb_get_bpp_depth() call drm/ast: Remove useless drm_fb_get_bpp_depth() call drm/atomic: Fix remaining places where !funcs->best_encoder is valid drm/core: Change declaration for gamma_set. Documentation: add fence-array to kernel DocBook drm/shmobile: use drm_crtc_vblank_{get,put}() drm/radeon: use drm_crtc_vblank_{get,put}() drm/qxl: use drm_crtc_vblank_{get,put}() drm/atmel: use drm_crtc_vblank_{get,put}() drm/armada: use drm_crtc_vblank_{get,put}() drm/amdgpu: use drm_crtc_vblank_{get,put}() drm/virtio: use drm_crtc_send_vblank_event() drm/udl: use drm_crtc_send_vblank_event() drm/qxl: use drm_crtc_send_vblank_event() drm/atmel: use drm_crtc_send_vblank_event() drm/armada: use drm_crtc_send_vblank_event() drm/doc: Switch to sphinx/rst fixed-width quoting drm/doc: Drop kerneldoc for static functions in drm_irq.c ...
This commit is contained in:
@@ -535,7 +535,7 @@ EXPORT_SYMBOL(drm_framebuffer_unregister_private);
|
||||
*
|
||||
* Cleanup framebuffer. This function is intended to be used from the drivers
|
||||
* ->destroy callback. It can also be used to clean up driver private
|
||||
* framebuffers embedded into a larger structure.
|
||||
* framebuffers embedded into a larger structure.
|
||||
*
|
||||
* Note that this function does not remove the fb from active usuage - if it is
|
||||
* still used anywhere, hilarity can ensue since userspace could call getfb on
|
||||
@@ -692,7 +692,7 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc,
|
||||
crtc->base.properties = &crtc->properties;
|
||||
|
||||
list_add_tail(&crtc->head, &config->crtc_list);
|
||||
config->num_crtc++;
|
||||
crtc->index = config->num_crtc++;
|
||||
|
||||
crtc->primary = primary;
|
||||
crtc->cursor = cursor;
|
||||
@@ -722,6 +722,11 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
|
||||
{
|
||||
struct drm_device *dev = crtc->dev;
|
||||
|
||||
/* Note that the crtc_list is considered to be static; should we
|
||||
* remove the drm_crtc at runtime we would have to decrement all
|
||||
* the indices on the drm_crtc after us in the crtc_list.
|
||||
*/
|
||||
|
||||
kfree(crtc->gamma_store);
|
||||
crtc->gamma_store = NULL;
|
||||
|
||||
@@ -741,29 +746,6 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_crtc_cleanup);
|
||||
|
||||
/**
|
||||
* drm_crtc_index - find the index of a registered CRTC
|
||||
* @crtc: CRTC to find index for
|
||||
*
|
||||
* Given a registered CRTC, return the index of that CRTC within a DRM
|
||||
* device's list of CRTCs.
|
||||
*/
|
||||
unsigned int drm_crtc_index(struct drm_crtc *crtc)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
struct drm_crtc *tmp;
|
||||
|
||||
drm_for_each_crtc(tmp, crtc->dev) {
|
||||
if (tmp == crtc)
|
||||
return index;
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
BUG();
|
||||
}
|
||||
EXPORT_SYMBOL(drm_crtc_index);
|
||||
|
||||
/*
|
||||
* drm_mode_remove - remove and free a mode
|
||||
* @connector: connector list to modify
|
||||
@@ -1166,7 +1148,7 @@ int drm_encoder_init(struct drm_device *dev,
|
||||
}
|
||||
|
||||
list_add_tail(&encoder->head, &dev->mode_config.encoder_list);
|
||||
dev->mode_config.num_encoder++;
|
||||
encoder->index = dev->mode_config.num_encoder++;
|
||||
|
||||
out_put:
|
||||
if (ret)
|
||||
@@ -1179,29 +1161,6 @@ out_unlock:
|
||||
}
|
||||
EXPORT_SYMBOL(drm_encoder_init);
|
||||
|
||||
/**
|
||||
* drm_encoder_index - find the index of a registered encoder
|
||||
* @encoder: encoder to find index for
|
||||
*
|
||||
* Given a registered encoder, return the index of that encoder within a DRM
|
||||
* device's list of encoders.
|
||||
*/
|
||||
unsigned int drm_encoder_index(struct drm_encoder *encoder)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
struct drm_encoder *tmp;
|
||||
|
||||
drm_for_each_encoder(tmp, encoder->dev) {
|
||||
if (tmp == encoder)
|
||||
return index;
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
BUG();
|
||||
}
|
||||
EXPORT_SYMBOL(drm_encoder_index);
|
||||
|
||||
/**
|
||||
* drm_encoder_cleanup - cleans up an initialised encoder
|
||||
* @encoder: encoder to cleanup
|
||||
@@ -1212,6 +1171,11 @@ void drm_encoder_cleanup(struct drm_encoder *encoder)
|
||||
{
|
||||
struct drm_device *dev = encoder->dev;
|
||||
|
||||
/* Note that the encoder_list is considered to be static; should we
|
||||
* remove the drm_encoder at runtime we would have to decrement all
|
||||
* the indices on the drm_encoder after us in the encoder_list.
|
||||
*/
|
||||
|
||||
drm_modeset_lock_all(dev);
|
||||
drm_mode_object_unregister(dev, &encoder->base);
|
||||
kfree(encoder->name);
|
||||
@@ -1300,7 +1264,7 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane,
|
||||
plane->type = type;
|
||||
|
||||
list_add_tail(&plane->head, &config->plane_list);
|
||||
config->num_total_plane++;
|
||||
plane->index = config->num_total_plane++;
|
||||
if (plane->type == DRM_PLANE_TYPE_OVERLAY)
|
||||
config->num_overlay_plane++;
|
||||
|
||||
@@ -1374,6 +1338,11 @@ void drm_plane_cleanup(struct drm_plane *plane)
|
||||
|
||||
BUG_ON(list_empty(&plane->head));
|
||||
|
||||
/* Note that the plane_list is considered to be static; should we
|
||||
* remove the drm_plane at runtime we would have to decrement all
|
||||
* the indices on the drm_plane after us in the plane_list.
|
||||
*/
|
||||
|
||||
list_del(&plane->head);
|
||||
dev->mode_config.num_total_plane--;
|
||||
if (plane->type == DRM_PLANE_TYPE_OVERLAY)
|
||||
@@ -1390,29 +1359,6 @@ void drm_plane_cleanup(struct drm_plane *plane)
|
||||
}
|
||||
EXPORT_SYMBOL(drm_plane_cleanup);
|
||||
|
||||
/**
|
||||
* drm_plane_index - find the index of a registered plane
|
||||
* @plane: plane to find index for
|
||||
*
|
||||
* Given a registered plane, return the index of that CRTC within a DRM
|
||||
* device's list of planes.
|
||||
*/
|
||||
unsigned int drm_plane_index(struct drm_plane *plane)
|
||||
{
|
||||
unsigned int index = 0;
|
||||
struct drm_plane *tmp;
|
||||
|
||||
drm_for_each_plane(tmp, plane->dev) {
|
||||
if (tmp == plane)
|
||||
return index;
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
BUG();
|
||||
}
|
||||
EXPORT_SYMBOL(drm_plane_index);
|
||||
|
||||
/**
|
||||
* drm_plane_from_index - find the registered plane at an index
|
||||
* @dev: DRM device
|
||||
@@ -1425,13 +1371,11 @@ struct drm_plane *
|
||||
drm_plane_from_index(struct drm_device *dev, int idx)
|
||||
{
|
||||
struct drm_plane *plane;
|
||||
unsigned int i = 0;
|
||||
|
||||
drm_for_each_plane(plane, dev) {
|
||||
if (i == idx)
|
||||
drm_for_each_plane(plane, dev)
|
||||
if (idx == plane->index)
|
||||
return plane;
|
||||
i++;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drm_plane_from_index);
|
||||
@@ -5227,7 +5171,7 @@ int drm_mode_gamma_set_ioctl(struct drm_device *dev,
|
||||
goto out;
|
||||
}
|
||||
|
||||
crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, 0, crtc->gamma_size);
|
||||
ret = crtc->funcs->gamma_set(crtc, r_base, g_base, b_base, crtc->gamma_size);
|
||||
|
||||
out:
|
||||
drm_modeset_unlock_all(dev);
|
||||
|
Reference in New Issue
Block a user