linux/drivers/gpu/drm/loongson/lsdc_drv.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (C) 2023 Loongson Technology Corporation Limited
 */

#include <linux/pci.h>
#include <linux/vgaarb.h>

#include <drm/drm_aperture.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_fbdev_ttm.h>
#include <drm/drm_gem_framebuffer_helper.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_modeset_helper.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>

#include "loongson_module.h"
#include "lsdc_drv.h"
#include "lsdc_gem.h"
#include "lsdc_ttm.h"

#define DRIVER_AUTHOR
#define DRIVER_NAME
#define DRIVER_DESC
#define DRIVER_DATE
#define DRIVER_MAJOR
#define DRIVER_MINOR
#define DRIVER_PATCHLEVEL

DEFINE_DRM_GEM_FOPS(lsdc_gem_fops);

static const struct drm_driver lsdc_drm_driver =;

static const struct drm_mode_config_funcs lsdc_mode_config_funcs =;

/* Display related */

static int lsdc_modeset_init(struct lsdc_device *ldev,
			     unsigned int num_crtc,
			     const struct lsdc_kms_funcs *funcs,
			     bool has_vblank)
{}

static const struct drm_mode_config_helper_funcs lsdc_mode_config_helper_funcs =;

static int lsdc_mode_config_init(struct drm_device *ddev,
				 const struct lsdc_desc *descp)
{}

/*
 * The GPU and display controller in the LS7A1000/LS7A2000/LS2K2000 are
 * separated PCIE devices. They are two devices, not one. Bar 2 of the GPU
 * device contains the base address and size of the VRAM, both the GPU and
 * the DC could access the on-board VRAM.
 */
static int lsdc_get_dedicated_vram(struct lsdc_device *ldev,
				   struct pci_dev *pdev_dc,
				   const struct lsdc_desc *descp)
{}

static struct lsdc_device *
lsdc_create_device(struct pci_dev *pdev,
		   const struct lsdc_desc *descp,
		   const struct drm_driver *driver)
{}

/* For multiple GPU driver instance co-exixt in the system */

static unsigned int lsdc_vga_set_decode(struct pci_dev *pdev, bool state)
{}

static int lsdc_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{}

static void lsdc_pci_remove(struct pci_dev *pdev)
{}

static void lsdc_pci_shutdown(struct pci_dev *pdev)
{}

static int lsdc_drm_freeze(struct drm_device *ddev)
{}

static int lsdc_drm_resume(struct device *dev)
{}

static int lsdc_pm_freeze(struct device *dev)
{}

static int lsdc_pm_thaw(struct device *dev)
{}

static int lsdc_pm_suspend(struct device *dev)
{}

static int lsdc_pm_resume(struct device *dev)
{}

static const struct dev_pm_ops lsdc_pm_ops =;

static const struct pci_device_id lsdc_pciid_list[] =;

struct pci_driver lsdc_pci_driver =;

MODULE_DEVICE_TABLE(pci, lsdc_pciid_list);
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();