// SPDX-License-Identifier: GPL-2.0 or MIT
/* Copyright 2018 Marty E. Plummer <hanetzer@startmail.com> */
/* Copyright 2019 Linaro, Ltd., Rob Herring <robh@kernel.org> */
/* Copyright 2019 Collabora ltd. */
#include <linux/list.h>
#include <linux/module.h>
#include <linux/of_platform.h>
#include <linux/pagemap.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <drm/drm_auth.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_drv.h>
#include <drm/drm_exec.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_syncobj.h>
#include <drm/drm_utils.h>
#include <drm/gpu_scheduler.h>
#include <drm/panthor_drm.h>
#include "panthor_device.h"
#include "panthor_fw.h"
#include "panthor_gem.h"
#include "panthor_gpu.h"
#include "panthor_heap.h"
#include "panthor_mmu.h"
#include "panthor_regs.h"
#include "panthor_sched.h"
/**
* DOC: user <-> kernel object copy helpers.
*/
/**
* panthor_set_uobj() - Copy kernel object to user object.
* @usr_ptr: Users pointer.
* @usr_size: Size of the user object.
* @min_size: Minimum size for this object.
* @kern_size: Size of the kernel object.
* @in: Address of the kernel object to copy.
*
* Helper automating kernel -> user object copies.
*
* Don't use this function directly, use PANTHOR_UOBJ_SET() instead.
*
* Return: 0 on success, a negative error code otherwise.
*/
static int
panthor_set_uobj(u64 usr_ptr, u32 usr_size