#include <linux/firmware.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/pm_runtime.h>
#include <drm/drm_accel.h>
#include <drm/drm_file.h>
#include <drm/drm_gem.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_prime.h>
#include "vpu_boot_api.h"
#include "ivpu_debugfs.h"
#include "ivpu_drv.h"
#include "ivpu_fw.h"
#include "ivpu_fw_log.h"
#include "ivpu_gem.h"
#include "ivpu_hw.h"
#include "ivpu_ipc.h"
#include "ivpu_job.h"
#include "ivpu_jsm_msg.h"
#include "ivpu_mmu.h"
#include "ivpu_mmu_context.h"
#include "ivpu_ms.h"
#include "ivpu_pm.h"
#include "ivpu_sysfs.h"
#ifndef DRIVER_VERSION_STR
#define DRIVER_VERSION_STR …
#endif
static struct lock_class_key submitted_jobs_xa_lock_class_key;
int ivpu_dbg_mask;
module_param_named(dbg_mask, ivpu_dbg_mask, int, 0644);
MODULE_PARM_DESC(…) …;
int ivpu_test_mode;
module_param_named_unsafe(test_mode, ivpu_test_mode, int, 0644);
MODULE_PARM_DESC(…) …;
u8 ivpu_pll_min_ratio;
module_param_named(pll_min_ratio, ivpu_pll_min_ratio, byte, 0644);
MODULE_PARM_DESC(…) …;
u8 ivpu_pll_max_ratio = …;
module_param_named(pll_max_ratio, ivpu_pll_max_ratio, byte, 0644);
MODULE_PARM_DESC(…) …;
int ivpu_sched_mode;
module_param_named(sched_mode, ivpu_sched_mode, int, 0444);
MODULE_PARM_DESC(…) …;
bool ivpu_disable_mmu_cont_pages;
module_param_named(disable_mmu_cont_pages, ivpu_disable_mmu_cont_pages, bool, 0444);
MODULE_PARM_DESC(…) …;
bool ivpu_force_snoop;
module_param_named(force_snoop, ivpu_force_snoop, bool, 0444);
MODULE_PARM_DESC(…) …;
struct ivpu_file_priv *ivpu_file_priv_get(struct ivpu_file_priv *file_priv)
{ … }
static void file_priv_unbind(struct ivpu_device *vdev, struct ivpu_file_priv *file_priv)
{ … }
static void file_priv_release(struct kref *ref)
{ … }
void ivpu_file_priv_put(struct ivpu_file_priv **link)
{ … }
static int ivpu_get_capabilities(struct ivpu_device *vdev, struct drm_ivpu_param *args)
{ … }
static int ivpu_get_param_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
static int ivpu_set_param_ioctl(struct drm_device *dev, void *data, struct drm_file *file)
{ … }
static int ivpu_open(struct drm_device *dev, struct drm_file *file)
{ … }
static void ivpu_postclose(struct drm_device *dev, struct drm_file *file)
{ … }
static const struct drm_ioctl_desc ivpu_drm_ioctls[] = …;
static int ivpu_wait_for_ready(struct ivpu_device *vdev)
{ … }
static int ivpu_hw_sched_init(struct ivpu_device *vdev)
{ … }
int ivpu_boot(struct ivpu_device *vdev)
{ … }
void ivpu_prepare_for_reset(struct ivpu_device *vdev)
{ … }
int ivpu_shutdown(struct ivpu_device *vdev)
{ … }
static const struct file_operations ivpu_fops = …;
static const struct drm_driver driver = …;
static void ivpu_context_abort_invalid(struct ivpu_device *vdev)
{ … }
static irqreturn_t ivpu_irq_thread_handler(int irq, void *arg)
{ … }
static int ivpu_irq_init(struct ivpu_device *vdev)
{ … }
static int ivpu_pci_init(struct ivpu_device *vdev)
{ … }
static int ivpu_dev_init(struct ivpu_device *vdev)
{ … }
static void ivpu_bo_unbind_all_user_contexts(struct ivpu_device *vdev)
{ … }
static void ivpu_dev_fini(struct ivpu_device *vdev)
{ … }
static struct pci_device_id ivpu_pci_ids[] = …;
MODULE_DEVICE_TABLE(pci, ivpu_pci_ids);
static int ivpu_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
static void ivpu_remove(struct pci_dev *pdev)
{ … }
static const struct dev_pm_ops ivpu_drv_pci_pm = …;
static const struct pci_error_handlers ivpu_drv_pci_err = …;
static struct pci_driver ivpu_pci_driver = …;
module_pci_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;
MODULE_VERSION(…);