linux/drivers/accel/ivpu/ivpu_drv.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (C) 2020-2024 Intel Corporation
 */

#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)
{}

/**
 * ivpu_boot() - Start VPU firmware
 * @vdev: VPU device
 *
 * This function is paired with ivpu_shutdown() but it doesn't power up the
 * VPU because power up has to be called very early in ivpu_probe().
 */
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();