#include "vigs_irq.h"
#include "vigs_fence.h"
#include "vigs_file.h"
+#include "vigs_plane.h"
#include "vigs_mman.h"
#include "drmP.h"
#include "drm.h"
DRM_IOCTL_DEF_DRV(VIGS_FENCE_SIGNALED, vigs_fence_signaled_ioctl,
DRM_UNLOCKED | DRM_AUTH),
DRM_IOCTL_DEF_DRV(VIGS_FENCE_UNREF, vigs_fence_unref_ioctl,
- DRM_UNLOCKED | DRM_AUTH)
+ DRM_UNLOCKED | DRM_AUTH),
+ DRM_IOCTL_DEF_DRV(VIGS_PLANE_SET_ZPOS, vigs_plane_set_zpos_ioctl,
+ DRM_UNLOCKED | DRM_AUTH)
};
static const struct file_operations vigs_drm_driver_fops =
#include "vigs_framebuffer.h"
#include "vigs_surface.h"
#include "vigs_comm.h"
+#include <drm/vigs_drm.h>
static const uint32_t formats[] =
{
return 0;
}
+
+int vigs_plane_set_zpos_ioctl(struct drm_device *drm_dev,
+ void *data,
+ struct drm_file *file_priv)
+{
+ struct drm_vigs_plane_set_zpos *args = data;
+ struct drm_mode_object *obj;
+ struct drm_plane *plane;
+ struct vigs_plane *vigs_plane;
+ int ret;
+
+ mutex_lock(&drm_dev->mode_config.mutex);
+
+ obj = drm_mode_object_find(drm_dev,
+ args->plane_id,
+ DRM_MODE_OBJECT_PLANE);
+ if (!obj) {
+ ret = -EINVAL;
+ goto out;
+ }
+
+ plane = obj_to_plane(obj);
+ vigs_plane = plane_to_vigs_plane(plane);
+
+ vigs_plane->z_pos = args->zpos;
+
+ ret = 0;
+
+out:
+ mutex_unlock(&drm_dev->mode_config.mutex);
+
+ return ret;
+}
int vigs_plane_init(struct vigs_device *vigs_dev, u32 index);
+/*
+ * IOCTLs
+ * @{
+ */
+
+int vigs_plane_set_zpos_ioctl(struct drm_device *drm_dev,
+ void *data,
+ struct drm_file *file_priv);
+
+/*
+ * @}
+ */
+
#endif
/*
* Bump this whenever driver interface changes.
*/
-#define DRM_VIGS_DRIVER_VERSION 11
+#define DRM_VIGS_DRIVER_VERSION 12
/*
* Surface access flags.
uint32_t handle;
};
+struct drm_vigs_plane_set_zpos
+{
+ uint32_t plane_id;
+ int zpos;
+};
+
#define DRM_VIGS_GET_PROTOCOL_VERSION 0x00
#define DRM_VIGS_CREATE_SURFACE 0x01
#define DRM_VIGS_CREATE_EXECBUFFER 0x02
#define DRM_VIGS_FENCE_WAIT 0x0B
#define DRM_VIGS_FENCE_SIGNALED 0x0C
#define DRM_VIGS_FENCE_UNREF 0x0D
+#define DRM_VIGS_PLANE_SET_ZPOS 0x0E
#define DRM_IOCTL_VIGS_GET_PROTOCOL_VERSION DRM_IOR(DRM_COMMAND_BASE + \
DRM_VIGS_GET_PROTOCOL_VERSION, struct drm_vigs_get_protocol_version)
DRM_VIGS_FENCE_SIGNALED, struct drm_vigs_fence_signaled)
#define DRM_IOCTL_VIGS_FENCE_UNREF DRM_IOW(DRM_COMMAND_BASE + \
DRM_VIGS_FENCE_UNREF, struct drm_vigs_fence_unref)
+#define DRM_IOCTL_VIGS_PLANE_SET_ZPOS DRM_IOW(DRM_COMMAND_BASE + \
+ DRM_VIGS_PLANE_SET_ZPOS, struct drm_vigs_plane_set_zpos)
#endif