#include <linux/delay.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/pm_runtime.h>
#include <linux/vga_switcheroo.h>
#include <linux/mmu_notifier.h>
#include <linux/dynamic_debug.h>
#include <drm/drm_aperture.h>
#include <drm/drm_drv.h>
#include <drm/drm_fbdev_ttm.h>
#include <drm/drm_gem_ttm_helper.h>
#include <drm/drm_ioctl.h>
#include <drm/drm_vblank.h>
#include <core/gpuobj.h>
#include <core/option.h>
#include <core/pci.h>
#include <core/tegra.h>
#include <nvif/driver.h>
#include <nvif/fifo.h>
#include <nvif/push006c.h>
#include <nvif/user.h>
#include <nvif/class.h>
#include <nvif/cl0002.h>
#include "nouveau_drv.h"
#include "nouveau_dma.h"
#include "nouveau_ttm.h"
#include "nouveau_gem.h"
#include "nouveau_vga.h"
#include "nouveau_led.h"
#include "nouveau_hwmon.h"
#include "nouveau_acpi.h"
#include "nouveau_bios.h"
#include "nouveau_ioctl.h"
#include "nouveau_abi16.h"
#include "nouveau_fence.h"
#include "nouveau_debugfs.h"
#include "nouveau_usif.h"
#include "nouveau_connector.h"
#include "nouveau_platform.h"
#include "nouveau_svm.h"
#include "nouveau_dmem.h"
#include "nouveau_exec.h"
#include "nouveau_uvmm.h"
#include "nouveau_sched.h"
DECLARE_DYNDBG_CLASSMAP(…);
MODULE_PARM_DESC(…) …;
static char *nouveau_config;
module_param_named(config, nouveau_config, charp, 0400);
MODULE_PARM_DESC(…) …;
static char *nouveau_debug;
module_param_named(debug, nouveau_debug, charp, 0400);
MODULE_PARM_DESC(…) …;
static int nouveau_noaccel = …;
module_param_named(noaccel, nouveau_noaccel, int, 0400);
MODULE_PARM_DESC(…) …;
int nouveau_modeset = …;
module_param_named(modeset, nouveau_modeset, int, 0400);
MODULE_PARM_DESC(…) …;
static int nouveau_atomic = …;
module_param_named(atomic, nouveau_atomic, int, 0400);
MODULE_PARM_DESC(…) …;
static int nouveau_runtime_pm = …;
module_param_named(runpm, nouveau_runtime_pm, int, 0400);
static struct drm_driver driver_stub;
static struct drm_driver driver_pci;
static struct drm_driver driver_platform;
static u64
nouveau_pci_name(struct pci_dev *pdev)
{ … }
static u64
nouveau_platform_name(struct platform_device *platformdev)
{ … }
static u64
nouveau_name(struct drm_device *dev)
{ … }
static inline bool
nouveau_cli_work_ready(struct dma_fence *fence)
{ … }
static void
nouveau_cli_work(struct work_struct *w)
{ … }
static void
nouveau_cli_work_fence(struct dma_fence *fence, struct dma_fence_cb *cb)
{ … }
void
nouveau_cli_work_queue(struct nouveau_cli *cli, struct dma_fence *fence,
struct nouveau_cli_work *work)
{ … }
static void
nouveau_cli_fini(struct nouveau_cli *cli)
{ … }
static int
nouveau_cli_init(struct nouveau_drm *drm, const char *sname,
struct nouveau_cli *cli)
{ … }
static void
nouveau_accel_ce_fini(struct nouveau_drm *drm)
{ … }
static void
nouveau_accel_ce_init(struct nouveau_drm *drm)
{ … }
static void
nouveau_accel_gr_fini(struct nouveau_drm *drm)
{ … }
static void
nouveau_accel_gr_init(struct nouveau_drm *drm)
{ … }
static void
nouveau_accel_fini(struct nouveau_drm *drm)
{ … }
static void
nouveau_accel_init(struct nouveau_drm *drm)
{ … }
static void __printf(2, 3)
nouveau_drm_errorf(struct nvif_object *object, const char *fmt, ...)
{ … }
static void __printf(2, 3)
nouveau_drm_debugf(struct nvif_object *object, const char *fmt, ...)
{ … }
static const struct nvif_parent_func
nouveau_parent = …;
static int
nouveau_drm_device_init(struct drm_device *dev)
{ … }
static void
nouveau_drm_device_fini(struct drm_device *dev)
{ … }
static void quirk_broken_nv_runpm(struct pci_dev *pdev)
{ … }
static int nouveau_drm_probe(struct pci_dev *pdev,
const struct pci_device_id *pent)
{ … }
void
nouveau_drm_device_remove(struct drm_device *dev)
{ … }
static void
nouveau_drm_remove(struct pci_dev *pdev)
{ … }
static int
nouveau_do_suspend(struct drm_device *dev, bool runtime)
{ … }
static int
nouveau_do_resume(struct drm_device *dev, bool runtime)
{ … }
int
nouveau_pmops_suspend(struct device *dev)
{ … }
int
nouveau_pmops_resume(struct device *dev)
{ … }
static int
nouveau_pmops_freeze(struct device *dev)
{ … }
static int
nouveau_pmops_thaw(struct device *dev)
{ … }
bool
nouveau_pmops_runtime(void)
{ … }
static int
nouveau_pmops_runtime_suspend(struct device *dev)
{ … }
static int
nouveau_pmops_runtime_resume(struct device *dev)
{ … }
static int
nouveau_pmops_runtime_idle(struct device *dev)
{ … }
static int
nouveau_drm_open(struct drm_device *dev, struct drm_file *fpriv)
{ … }
static void
nouveau_drm_postclose(struct drm_device *dev, struct drm_file *fpriv)
{ … }
static const struct drm_ioctl_desc
nouveau_ioctls[] = …;
long
nouveau_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ … }
static const struct file_operations
nouveau_driver_fops = …;
static struct drm_driver
driver_stub = …;
static struct pci_device_id
nouveau_drm_pci_table[] = …;
static void nouveau_display_options(void)
{ … }
static const struct dev_pm_ops nouveau_pm_ops = …;
static struct pci_driver
nouveau_drm_pci_driver = …;
struct drm_device *
nouveau_platform_device_create(const struct nvkm_device_tegra_func *func,
struct platform_device *pdev,
struct nvkm_device **pdevice)
{ … }
static int __init
nouveau_drm_init(void)
{ … }
static void __exit
nouveau_drm_exit(void)
{ … }
module_init(…) …;
module_exit(nouveau_drm_exit);
MODULE_DEVICE_TABLE(pci, nouveau_drm_pci_table);
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;