drm/exynos: gem code cleanup
This cleans codes of exynos gem - indents and order function and so on. Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
This commit is contained in:
Родитель
5c2a5ce689
Коммит
ee5e770ef4
|
@ -73,7 +73,7 @@ struct exynos_drm_gem_buf *exynos_drm_buf_create(struct drm_device *dev,
|
|||
buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
|
||||
if (!buffer) {
|
||||
DRM_ERROR("failed to allocate exynos_drm_gem_buf.\n");
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
buffer->size = size;
|
||||
|
@ -84,8 +84,7 @@ struct exynos_drm_gem_buf *exynos_drm_buf_create(struct drm_device *dev,
|
|||
*/
|
||||
if (lowlevel_buffer_allocate(dev, buffer) < 0) {
|
||||
kfree(buffer);
|
||||
buffer = NULL;
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
|
|
|
@ -150,8 +150,8 @@ exynos_drm_fb_init(struct drm_file *file_priv, struct drm_device *dev,
|
|||
* for default framebuffer.
|
||||
*/
|
||||
buffer = exynos_drm_buf_create(dev, size);
|
||||
if (IS_ERR(buffer)) {
|
||||
ret = PTR_ERR(buffer);
|
||||
if (!buffer) {
|
||||
ret = -ENOMEM;
|
||||
goto err_buffer;
|
||||
}
|
||||
|
||||
|
|
|
@ -62,10 +62,9 @@ static unsigned int get_gem_mmap_offset(struct drm_gem_object *obj)
|
|||
return (unsigned int)obj->map_list.hash.key << PAGE_SHIFT;
|
||||
}
|
||||
|
||||
static struct exynos_drm_gem_obj
|
||||
*exynos_drm_gem_init(struct drm_device *drm_dev,
|
||||
struct drm_file *file_priv, unsigned int *handle,
|
||||
unsigned int size)
|
||||
static struct exynos_drm_gem_obj *
|
||||
exynos_drm_gem_init(struct drm_device *drm_dev, struct drm_file *file_priv,
|
||||
unsigned int *handle, unsigned int size)
|
||||
{
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
struct drm_gem_object *obj;
|
||||
|
@ -83,7 +82,7 @@ static struct exynos_drm_gem_obj
|
|||
if (ret < 0) {
|
||||
DRM_ERROR("failed to initialize gem object.\n");
|
||||
ret = -EINVAL;
|
||||
goto err_object_init;
|
||||
goto err;
|
||||
}
|
||||
|
||||
DRM_DEBUG_KMS("created file object = 0x%x\n", (unsigned int)obj->filp);
|
||||
|
@ -91,7 +90,7 @@ static struct exynos_drm_gem_obj
|
|||
ret = drm_gem_create_mmap_offset(obj);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("failed to allocate mmap offset.\n");
|
||||
goto err_create_mmap_offset;
|
||||
goto err_release;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -100,7 +99,7 @@ static struct exynos_drm_gem_obj
|
|||
*/
|
||||
ret = drm_gem_handle_create(file_priv, obj, handle);
|
||||
if (ret)
|
||||
goto err_handle_create;
|
||||
goto err_free_mmap_offset;
|
||||
|
||||
DRM_DEBUG_KMS("gem handle = 0x%x\n", *handle);
|
||||
|
||||
|
@ -109,34 +108,32 @@ static struct exynos_drm_gem_obj
|
|||
|
||||
return exynos_gem_obj;
|
||||
|
||||
err_handle_create:
|
||||
err_free_mmap_offset:
|
||||
drm_gem_free_mmap_offset(obj);
|
||||
|
||||
err_create_mmap_offset:
|
||||
err_release:
|
||||
drm_gem_object_release(obj);
|
||||
|
||||
err_object_init:
|
||||
err:
|
||||
kfree(exynos_gem_obj);
|
||||
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
|
||||
struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
|
||||
struct drm_file *file_priv,
|
||||
unsigned int *handle, unsigned long size)
|
||||
struct drm_file *file_priv,
|
||||
unsigned int *handle,
|
||||
unsigned long size)
|
||||
{
|
||||
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj = NULL;
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
struct exynos_drm_gem_buf *buffer;
|
||||
|
||||
size = roundup(size, PAGE_SIZE);
|
||||
|
||||
DRM_DEBUG_KMS("%s: size = 0x%lx\n", __FILE__, size);
|
||||
|
||||
buffer = exynos_drm_buf_create(dev, size);
|
||||
if (IS_ERR(buffer)) {
|
||||
return ERR_CAST(buffer);
|
||||
}
|
||||
if (!buffer)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
exynos_gem_obj = exynos_drm_gem_init(dev, file_priv, handle, size);
|
||||
if (IS_ERR(exynos_gem_obj)) {
|
||||
|
@ -150,15 +147,15 @@ struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
|
|||
}
|
||||
|
||||
int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
struct drm_exynos_gem_create *args = data;
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj = NULL;
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
|
||||
DRM_DEBUG_KMS("%s\n", __FILE__);
|
||||
|
||||
exynos_gem_obj = exynos_drm_gem_create(dev, file_priv,
|
||||
&args->handle, args->size);
|
||||
exynos_gem_obj = exynos_drm_gem_create(dev, file_priv, &args->handle,
|
||||
args->size);
|
||||
if (IS_ERR(exynos_gem_obj))
|
||||
return PTR_ERR(exynos_gem_obj);
|
||||
|
||||
|
@ -166,7 +163,7 @@ int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,
|
|||
}
|
||||
|
||||
int exynos_drm_gem_map_offset_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
struct drm_exynos_gem_map_off *args = data;
|
||||
|
||||
|
@ -185,7 +182,7 @@ int exynos_drm_gem_map_offset_ioctl(struct drm_device *dev, void *data,
|
|||
}
|
||||
|
||||
static int exynos_drm_gem_mmap_buffer(struct file *filp,
|
||||
struct vm_area_struct *vma)
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
struct drm_gem_object *obj = filp->private_data;
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj = to_exynos_gem_obj(obj);
|
||||
|
@ -232,7 +229,7 @@ static const struct file_operations exynos_drm_gem_fops = {
|
|||
};
|
||||
|
||||
int exynos_drm_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv)
|
||||
struct drm_file *file_priv)
|
||||
{
|
||||
struct drm_exynos_gem_mmap *args = data;
|
||||
struct drm_gem_object *obj;
|
||||
|
@ -278,30 +275,31 @@ int exynos_drm_gem_init_object(struct drm_gem_object *obj)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void exynos_drm_gem_free_object(struct drm_gem_object *gem_obj)
|
||||
void exynos_drm_gem_free_object(struct drm_gem_object *obj)
|
||||
{
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
|
||||
DRM_DEBUG_KMS("%s\n", __FILE__);
|
||||
|
||||
DRM_DEBUG_KMS("handle count = %d\n",
|
||||
atomic_read(&gem_obj->handle_count));
|
||||
atomic_read(&obj->handle_count));
|
||||
|
||||
if (gem_obj->map_list.map)
|
||||
drm_gem_free_mmap_offset(gem_obj);
|
||||
if (obj->map_list.map)
|
||||
drm_gem_free_mmap_offset(obj);
|
||||
|
||||
/* release file pointer to gem object. */
|
||||
drm_gem_object_release(gem_obj);
|
||||
drm_gem_object_release(obj);
|
||||
|
||||
exynos_gem_obj = to_exynos_gem_obj(gem_obj);
|
||||
exynos_gem_obj = to_exynos_gem_obj(obj);
|
||||
|
||||
exynos_drm_buf_destroy(gem_obj->dev, exynos_gem_obj->buffer);
|
||||
exynos_drm_buf_destroy(obj->dev, exynos_gem_obj->buffer);
|
||||
|
||||
kfree(exynos_gem_obj);
|
||||
}
|
||||
|
||||
int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
|
||||
struct drm_device *dev, struct drm_mode_create_dumb *args)
|
||||
struct drm_device *dev,
|
||||
struct drm_mode_create_dumb *args)
|
||||
{
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
|
||||
|
@ -317,7 +315,7 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
|
|||
args->size = args->pitch * args->height;
|
||||
|
||||
exynos_gem_obj = exynos_drm_gem_create(dev, file_priv, &args->handle,
|
||||
args->size);
|
||||
args->size);
|
||||
if (IS_ERR(exynos_gem_obj))
|
||||
return PTR_ERR(exynos_gem_obj);
|
||||
|
||||
|
@ -325,7 +323,8 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
|
|||
}
|
||||
|
||||
int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv,
|
||||
struct drm_device *dev, uint32_t handle, uint64_t *offset)
|
||||
struct drm_device *dev, uint32_t handle,
|
||||
uint64_t *offset)
|
||||
{
|
||||
struct exynos_drm_gem_obj *exynos_gem_obj;
|
||||
struct drm_gem_object *obj;
|
||||
|
@ -360,6 +359,28 @@ int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv,
|
||||
struct drm_device *dev,
|
||||
unsigned int handle)
|
||||
{
|
||||
int ret;
|
||||
|
||||
DRM_DEBUG_KMS("%s\n", __FILE__);
|
||||
|
||||
/*
|
||||
* obj->refcount and obj->handle_count are decreased and
|
||||
* if both them are 0 then exynos_drm_gem_free_object()
|
||||
* would be called by callback to release resources.
|
||||
*/
|
||||
ret = drm_gem_handle_delete(file_priv, handle);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("failed to delete drm_gem_handle.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
||||
{
|
||||
struct drm_gem_object *obj = vma->vm_private_data;
|
||||
|
@ -403,28 +424,6 @@ int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv,
|
||||
struct drm_device *dev, unsigned int handle)
|
||||
{
|
||||
int ret;
|
||||
|
||||
DRM_DEBUG_KMS("%s\n", __FILE__);
|
||||
|
||||
/*
|
||||
* obj->refcount and obj->handle_count are decreased and
|
||||
* if both them are 0 then exynos_drm_gem_free_object()
|
||||
* would be called by callback to release resources.
|
||||
*/
|
||||
ret = drm_gem_handle_delete(file_priv, handle);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("failed to delete drm_gem_handle.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
MODULE_AUTHOR("Inki Dae <inki.dae@samsung.com>");
|
||||
MODULE_DESCRIPTION("Samsung SoC DRM GEM Module");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
|
|
@ -60,14 +60,15 @@ struct exynos_drm_gem_buf {
|
|||
* user can access the buffer through kms_bo.handle.
|
||||
*/
|
||||
struct exynos_drm_gem_obj {
|
||||
struct drm_gem_object base;
|
||||
struct exynos_drm_gem_buf *buffer;
|
||||
struct drm_gem_object base;
|
||||
struct exynos_drm_gem_buf *buffer;
|
||||
};
|
||||
|
||||
/* create a new buffer and get a new gem handle. */
|
||||
struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
|
||||
struct drm_file *file_priv,
|
||||
unsigned int *handle, unsigned long size);
|
||||
struct drm_file *file_priv,
|
||||
unsigned int *handle,
|
||||
unsigned long size);
|
||||
|
||||
/*
|
||||
* request gem object creation and buffer allocation as the size
|
||||
|
@ -75,15 +76,18 @@ struct exynos_drm_gem_obj *exynos_drm_gem_create(struct drm_device *dev,
|
|||
* height and bpp.
|
||||
*/
|
||||
int exynos_drm_gem_create_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* get buffer offset to map to user space. */
|
||||
int exynos_drm_gem_map_offset_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* unmap a buffer from user space. */
|
||||
int exynos_drm_gem_munmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
/*
|
||||
* mmap the physically continuous memory that a gem object contains
|
||||
* to user space.
|
||||
*/
|
||||
int exynos_drm_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* initialize gem object. */
|
||||
int exynos_drm_gem_init_object(struct drm_gem_object *obj);
|
||||
|
@ -93,24 +97,13 @@ void exynos_drm_gem_free_object(struct drm_gem_object *gem_obj);
|
|||
|
||||
/* create memory region for drm framebuffer. */
|
||||
int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
|
||||
struct drm_device *dev, struct drm_mode_create_dumb *args);
|
||||
struct drm_device *dev,
|
||||
struct drm_mode_create_dumb *args);
|
||||
|
||||
/* map memory region for drm framebuffer to user space. */
|
||||
int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv,
|
||||
struct drm_device *dev, uint32_t handle, uint64_t *offset);
|
||||
|
||||
/* page fault handler and mmap fault address(virtual) to physical memory. */
|
||||
int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
|
||||
|
||||
/*
|
||||
* mmap the physically continuous memory that a gem object contains
|
||||
* to user space.
|
||||
*/
|
||||
int exynos_drm_gem_mmap_ioctl(struct drm_device *dev, void *data,
|
||||
struct drm_file *file_priv);
|
||||
|
||||
/* set vm_flags and we can change the vm attribute to other one at here. */
|
||||
int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
||||
struct drm_device *dev, uint32_t handle,
|
||||
uint64_t *offset);
|
||||
|
||||
/*
|
||||
* destroy memory region allocated.
|
||||
|
@ -118,6 +111,13 @@ int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
|||
* would be released by drm_gem_handle_delete().
|
||||
*/
|
||||
int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv,
|
||||
struct drm_device *dev, unsigned int handle);
|
||||
struct drm_device *dev,
|
||||
unsigned int handle);
|
||||
|
||||
/* page fault handler and mmap fault address(virtual) to physical memory. */
|
||||
int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
|
||||
|
||||
/* set vm_flags and we can change the vm attribute to other one at here. */
|
||||
int exynos_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче