Commit 72a36970 authored by Daniel Vetter's avatar Daniel Vetter

Merge branch 'topic/core-stuff' into topic/atomic-core

Backmerge my drm-misc branch because of conflicts. Just simple stuff
but better to clear this out before I merge the other atomic patches.

Conflicts:
drivers/gpu/drm/drm_crtc.c
drivers/gpu/drm/drm_edid.c
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
parents 22b8b13b dafffda0
...@@ -653,10 +653,6 @@ static int armada_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, ...@@ -653,10 +653,6 @@ static int armada_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
return 0; return 0;
} }
static void armada_drm_crtc_load_lut(struct drm_crtc *crtc)
{
}
/* The mode_config.mutex will be held for this call */ /* The mode_config.mutex will be held for this call */
static void armada_drm_crtc_disable(struct drm_crtc *crtc) static void armada_drm_crtc_disable(struct drm_crtc *crtc)
{ {
...@@ -678,7 +674,6 @@ static const struct drm_crtc_helper_funcs armada_crtc_helper_funcs = { ...@@ -678,7 +674,6 @@ static const struct drm_crtc_helper_funcs armada_crtc_helper_funcs = {
.mode_fixup = armada_drm_crtc_mode_fixup, .mode_fixup = armada_drm_crtc_mode_fixup,
.mode_set = armada_drm_crtc_mode_set, .mode_set = armada_drm_crtc_mode_set,
.mode_set_base = armada_drm_crtc_mode_set_base, .mode_set_base = armada_drm_crtc_mode_set_base,
.load_lut = armada_drm_crtc_load_lut,
.disable = armada_drm_crtc_disable, .disable = armada_drm_crtc_disable,
}; };
......
...@@ -18,10 +18,6 @@ MODULE_PARM_DESC(defy, "default y resolution"); ...@@ -18,10 +18,6 @@ MODULE_PARM_DESC(defy, "default y resolution");
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */
static void bochs_crtc_load_lut(struct drm_crtc *crtc)
{
}
static void bochs_crtc_dpms(struct drm_crtc *crtc, int mode) static void bochs_crtc_dpms(struct drm_crtc *crtc, int mode)
{ {
switch (mode) { switch (mode) {
...@@ -144,7 +140,6 @@ static const struct drm_crtc_helper_funcs bochs_helper_funcs = { ...@@ -144,7 +140,6 @@ static const struct drm_crtc_helper_funcs bochs_helper_funcs = {
.mode_set_base = bochs_crtc_mode_set_base, .mode_set_base = bochs_crtc_mode_set_base,
.prepare = bochs_crtc_prepare, .prepare = bochs_crtc_prepare,
.commit = bochs_crtc_commit, .commit = bochs_crtc_commit,
.load_lut = bochs_crtc_load_lut,
}; };
static void bochs_crtc_init(struct drm_device *dev) static void bochs_crtc_init(struct drm_device *dev)
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <drm/drmP.h> #include <drm/drmP.h>
#if defined(CONFIG_X86) #if defined(CONFIG_X86)
#include <asm/smp.h>
/* /*
* clflushopt is an unordered instruction which needs fencing with mfence or * clflushopt is an unordered instruction which needs fencing with mfence or
...@@ -64,12 +65,6 @@ static void drm_cache_flush_clflush(struct page *pages[], ...@@ -64,12 +65,6 @@ static void drm_cache_flush_clflush(struct page *pages[],
drm_clflush_page(*pages++); drm_clflush_page(*pages++);
mb(); mb();
} }
static void
drm_clflush_ipi_handler(void *null)
{
wbinvd();
}
#endif #endif
void void
...@@ -82,7 +77,7 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages) ...@@ -82,7 +77,7 @@ drm_clflush_pages(struct page *pages[], unsigned long num_pages)
return; return;
} }
if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) if (wbinvd_on_all_cpus())
printk(KERN_ERR "Timed out waiting for cache flush.\n"); printk(KERN_ERR "Timed out waiting for cache flush.\n");
#elif defined(__powerpc__) #elif defined(__powerpc__)
...@@ -121,7 +116,7 @@ drm_clflush_sg(struct sg_table *st) ...@@ -121,7 +116,7 @@ drm_clflush_sg(struct sg_table *st)
return; return;
} }
if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) if (wbinvd_on_all_cpus())
printk(KERN_ERR "Timed out waiting for cache flush.\n"); printk(KERN_ERR "Timed out waiting for cache flush.\n");
#else #else
printk(KERN_ERR "Architecture has no drm_cache.c support\n"); printk(KERN_ERR "Architecture has no drm_cache.c support\n");
...@@ -144,7 +139,7 @@ drm_clflush_virt_range(void *addr, unsigned long length) ...@@ -144,7 +139,7 @@ drm_clflush_virt_range(void *addr, unsigned long length)
return; return;
} }
if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) if (wbinvd_on_all_cpus())
printk(KERN_ERR "Timed out waiting for cache flush.\n"); printk(KERN_ERR "Timed out waiting for cache flush.\n");
#else #else
printk(KERN_ERR "Architecture has no drm_cache.c support\n"); printk(KERN_ERR "Architecture has no drm_cache.c support\n");
......
This diff is collapsed.
...@@ -152,30 +152,6 @@ int drm_bufs_info(struct seq_file *m, void *data) ...@@ -152,30 +152,6 @@ int drm_bufs_info(struct seq_file *m, void *data)
return 0; return 0;
} }
/**
* Called when "/proc/dri/.../vblank" is read.
*/
int drm_vblank_info(struct seq_file *m, void *data)
{
struct drm_info_node *node = (struct drm_info_node *) m->private;
struct drm_device *dev = node->minor->dev;
int crtc;
mutex_lock(&dev->struct_mutex);
for (crtc = 0; crtc < dev->num_crtcs; crtc++) {
seq_printf(m, "CRTC %d enable: %d\n",
crtc, atomic_read(&dev->vblank[crtc].refcount));
seq_printf(m, "CRTC %d counter: %d\n",
crtc, drm_vblank_count(dev, crtc));
seq_printf(m, "CRTC %d last wait: %d\n",
crtc, dev->vblank[crtc].last_wait);
seq_printf(m, "CRTC %d in modeset: %d\n",
crtc, dev->vblank[crtc].inmodeset);
}
mutex_unlock(&dev->struct_mutex);
return 0;
}
/** /**
* Called when "/proc/dri/.../clients" is read. * Called when "/proc/dri/.../clients" is read.
* *
......
...@@ -55,7 +55,6 @@ void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpr ...@@ -55,7 +55,6 @@ void drm_prime_remove_buf_handle_locked(struct drm_prime_file_private *prime_fpr
int drm_name_info(struct seq_file *m, void *data); int drm_name_info(struct seq_file *m, void *data);
int drm_vm_info(struct seq_file *m, void *data); int drm_vm_info(struct seq_file *m, void *data);
int drm_bufs_info(struct seq_file *m, void *data); int drm_bufs_info(struct seq_file *m, void *data);
int drm_vblank_info(struct seq_file *m, void *data);
int drm_clients_info(struct seq_file *m, void* data); int drm_clients_info(struct seq_file *m, void* data);
int drm_gem_name_info(struct seq_file *m, void *data); int drm_gem_name_info(struct seq_file *m, void *data);
......
...@@ -778,7 +778,7 @@ static struct timeval get_drm_timestamp(void) ...@@ -778,7 +778,7 @@ static struct timeval get_drm_timestamp(void)
/** /**
* drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent * drm_get_last_vbltimestamp - retrieve raw timestamp for the most recent
* vblank interval * vblank interval
* @dev: DRM device * @dev: DRM device
* @crtc: which CRTC's vblank timestamp to retrieve * @crtc: which CRTC's vblank timestamp to retrieve
* @tvblank: Pointer to target struct timeval which should receive the timestamp * @tvblank: Pointer to target struct timeval which should receive the timestamp
...@@ -910,6 +910,7 @@ void drm_send_vblank_event(struct drm_device *dev, int crtc, ...@@ -910,6 +910,7 @@ void drm_send_vblank_event(struct drm_device *dev, int crtc,
{ {
struct timeval now; struct timeval now;
unsigned int seq; unsigned int seq;
if (crtc >= 0) { if (crtc >= 0) {
seq = drm_vblank_count_and_time(dev, crtc, &now); seq = drm_vblank_count_and_time(dev, crtc, &now);
} else { } else {
...@@ -1382,7 +1383,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, ...@@ -1382,7 +1383,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
unsigned int seq; unsigned int seq;
int ret; int ret;
e = kzalloc(sizeof *e, GFP_KERNEL); e = kzalloc(sizeof(*e), GFP_KERNEL);
if (e == NULL) { if (e == NULL) {
ret = -ENOMEM; ret = -ENOMEM;
goto err_put; goto err_put;
...@@ -1391,7 +1392,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, ...@@ -1391,7 +1392,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
e->pipe = pipe; e->pipe = pipe;
e->base.pid = current->pid; e->base.pid = current->pid;
e->event.base.type = DRM_EVENT_VBLANK; e->event.base.type = DRM_EVENT_VBLANK;
e->event.base.length = sizeof e->event; e->event.base.length = sizeof(e->event);
e->event.user_data = vblwait->request.signal; e->event.user_data = vblwait->request.signal;
e->base.event = &e->event.base; e->base.event = &e->event.base;
e->base.file_priv = file_priv; e->base.file_priv = file_priv;
...@@ -1411,12 +1412,12 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe, ...@@ -1411,12 +1412,12 @@ static int drm_queue_vblank_event(struct drm_device *dev, int pipe,
goto err_unlock; goto err_unlock;
} }
if (file_priv->event_space < sizeof e->event) { if (file_priv->event_space < sizeof(e->event)) {
ret = -EBUSY; ret = -EBUSY;
goto err_unlock; goto err_unlock;
} }
file_priv->event_space -= sizeof e->event; file_priv->event_space -= sizeof(e->event);
seq = drm_vblank_count_and_time(dev, pipe, &now); seq = drm_vblank_count_and_time(dev, pipe, &now);
if ((vblwait->request.type & _DRM_VBLANK_NEXTONMISS) && if ((vblwait->request.type & _DRM_VBLANK_NEXTONMISS) &&
......
...@@ -142,6 +142,17 @@ int drm_plane_helper_check_update(struct drm_plane *plane, ...@@ -142,6 +142,17 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
{ {
int hscale, vscale; int hscale, vscale;
if (!fb) {
*visible = false;
return 0;
}
/* crtc should only be NULL when disabling (i.e., !fb) */
if (WARN_ON(!crtc)) {
*visible = false;
return 0;
}
if (!crtc->enabled && !can_update_disabled) { if (!crtc->enabled && !can_update_disabled) {
DRM_DEBUG_KMS("Cannot update plane of a disabled CRTC.\n"); DRM_DEBUG_KMS("Cannot update plane of a disabled CRTC.\n");
return -EINVAL; return -EINVAL;
...@@ -155,11 +166,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane, ...@@ -155,11 +166,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
return -ERANGE; return -ERANGE;
} }
if (!fb) {
*visible = false;
return 0;
}
*visible = drm_rect_clip_scaled(src, dest, clip, hscale, vscale); *visible = drm_rect_clip_scaled(src, dest, clip, hscale, vscale);
if (!*visible) if (!*visible)
/* /*
......
...@@ -323,10 +323,6 @@ static void mdp4_crtc_commit(struct drm_crtc *crtc) ...@@ -323,10 +323,6 @@ static void mdp4_crtc_commit(struct drm_crtc *crtc)
drm_crtc_vblank_put(crtc); drm_crtc_vblank_put(crtc);
} }
static void mdp4_crtc_load_lut(struct drm_crtc *crtc)
{
}
static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, static int mdp4_crtc_atomic_check(struct drm_crtc *crtc,
struct drm_crtc_state *state) struct drm_crtc_state *state)
{ {
...@@ -524,7 +520,6 @@ static const struct drm_crtc_helper_funcs mdp4_crtc_helper_funcs = { ...@@ -524,7 +520,6 @@ static const struct drm_crtc_helper_funcs mdp4_crtc_helper_funcs = {
.mode_set_base = drm_helper_crtc_mode_set_base, .mode_set_base = drm_helper_crtc_mode_set_base,
.prepare = mdp4_crtc_prepare, .prepare = mdp4_crtc_prepare,
.commit = mdp4_crtc_commit, .commit = mdp4_crtc_commit,
.load_lut = mdp4_crtc_load_lut,
.atomic_check = mdp4_crtc_atomic_check, .atomic_check = mdp4_crtc_atomic_check,
.atomic_begin = mdp4_crtc_atomic_begin, .atomic_begin = mdp4_crtc_atomic_begin,
.atomic_flush = mdp4_crtc_atomic_flush, .atomic_flush = mdp4_crtc_atomic_flush,
......
...@@ -275,10 +275,6 @@ static void mdp5_crtc_commit(struct drm_crtc *crtc) ...@@ -275,10 +275,6 @@ static void mdp5_crtc_commit(struct drm_crtc *crtc)
mdp5_disable(get_kms(crtc)); mdp5_disable(get_kms(crtc));
} }
static void mdp5_crtc_load_lut(struct drm_crtc *crtc)
{
}
struct plane_state { struct plane_state {
struct drm_plane *plane; struct drm_plane *plane;
struct mdp5_plane_state *state; struct mdp5_plane_state *state;
...@@ -407,7 +403,6 @@ static const struct drm_crtc_helper_funcs mdp5_crtc_helper_funcs = { ...@@ -407,7 +403,6 @@ static const struct drm_crtc_helper_funcs mdp5_crtc_helper_funcs = {
.mode_set_base = drm_helper_crtc_mode_set_base, .mode_set_base = drm_helper_crtc_mode_set_base,
.prepare = mdp5_crtc_prepare, .prepare = mdp5_crtc_prepare,
.commit = mdp5_crtc_commit, .commit = mdp5_crtc_commit,
.load_lut = mdp5_crtc_load_lut,
.atomic_check = mdp5_crtc_atomic_check, .atomic_check = mdp5_crtc_atomic_check,
.atomic_begin = mdp5_crtc_atomic_begin, .atomic_begin = mdp5_crtc_atomic_begin,
.atomic_flush = mdp5_crtc_atomic_flush, .atomic_flush = mdp5_crtc_atomic_flush,
......
...@@ -190,11 +190,6 @@ static int sti_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y, ...@@ -190,11 +190,6 @@ static int sti_drm_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
return ret; return ret;
} }
static void sti_drm_crtc_load_lut(struct drm_crtc *crtc)
{
/* do nothing */
}
static void sti_drm_crtc_disable(struct drm_crtc *crtc) static void sti_drm_crtc_disable(struct drm_crtc *crtc)
{ {
struct sti_mixer *mixer = to_sti_mixer(crtc); struct sti_mixer *mixer = to_sti_mixer(crtc);
...@@ -249,7 +244,6 @@ static struct drm_crtc_helper_funcs sti_crtc_helper_funcs = { ...@@ -249,7 +244,6 @@ static struct drm_crtc_helper_funcs sti_crtc_helper_funcs = {
.mode_fixup = sti_drm_crtc_mode_fixup, .mode_fixup = sti_drm_crtc_mode_fixup,
.mode_set = sti_drm_crtc_mode_set, .mode_set = sti_drm_crtc_mode_set,
.mode_set_base = sti_drm_crtc_mode_set_base, .mode_set_base = sti_drm_crtc_mode_set_base,
.load_lut = sti_drm_crtc_load_lut,
.disable = sti_drm_crtc_disable, .disable = sti_drm_crtc_disable,
}; };
......
...@@ -1095,10 +1095,6 @@ static void tegra_crtc_commit(struct drm_crtc *crtc) ...@@ -1095,10 +1095,6 @@ static void tegra_crtc_commit(struct drm_crtc *crtc)
tegra_dc_commit(dc); tegra_dc_commit(dc);
} }
static void tegra_crtc_load_lut(struct drm_crtc *crtc)
{
}
static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = {
.disable = tegra_crtc_disable, .disable = tegra_crtc_disable,
.mode_fixup = tegra_crtc_mode_fixup, .mode_fixup = tegra_crtc_mode_fixup,
...@@ -1106,7 +1102,6 @@ static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = { ...@@ -1106,7 +1102,6 @@ static const struct drm_crtc_helper_funcs tegra_crtc_helper_funcs = {
.mode_set_base = tegra_crtc_mode_set_base, .mode_set_base = tegra_crtc_mode_set_base,
.prepare = tegra_crtc_prepare, .prepare = tegra_crtc_prepare,
.commit = tegra_crtc_commit, .commit = tegra_crtc_commit,
.load_lut = tegra_crtc_load_lut,
}; };
static irqreturn_t tegra_dc_irq(int irq, void *data) static irqreturn_t tegra_dc_irq(int irq, void *data)
......
...@@ -338,7 +338,7 @@ struct drm_mode_fb_cmd2 { ...@@ -338,7 +338,7 @@ struct drm_mode_fb_cmd2 {
/* /*
* In case of planar formats, this ioctl allows up to 4 * In case of planar formats, this ioctl allows up to 4
* buffer objects with offets and pitches per plane. * buffer objects with offsets and pitches per plane.
* The pitch and offset order is dictated by the fourcc, * The pitch and offset order is dictated by the fourcc,
* e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as: * e.g. NV12 (http://fourcc.org/yuv.php#NV12) is described as:
* *
...@@ -346,9 +346,9 @@ struct drm_mode_fb_cmd2 { ...@@ -346,9 +346,9 @@ struct drm_mode_fb_cmd2 {
* followed by an interleaved U/V plane containing * followed by an interleaved U/V plane containing
* 8 bit 2x2 subsampled colour difference samples. * 8 bit 2x2 subsampled colour difference samples.
* *
* So it would consist of Y as offset[0] and UV as * So it would consist of Y as offsets[0] and UV as
* offeset[1]. Note that offset[0] will generally * offsets[1]. Note that offsets[0] will generally
* be 0. * be 0 (but this is not required).
*/ */
__u32 handles[4]; __u32 handles[4];
__u32 pitches[4]; /* pitch for each plane */ __u32 pitches[4]; /* pitch for each plane */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment