Module Name: src Committed By: riastradh Date: Sun Dec 19 10:24:33 UTC 2021
Added Files: src/sys/external/bsd/drm2/include/drm: drmP.h drm_gem_cma_helper.h Removed Files: src/sys/external/bsd/drm2/dist/include/drm: drmP.h drm_gem_cma_helper.h Log Message: Move files which are gone upstream out of dist/. To generate a diff of this commit: cvs rdiff -u -r1.65 -r0 src/sys/external/bsd/drm2/dist/include/drm/drmP.h cvs rdiff -u -r1.8 -r0 \ src/sys/external/bsd/drm2/dist/include/drm/drm_gem_cma_helper.h cvs rdiff -u -r0 -r1.1 src/sys/external/bsd/drm2/include/drm/drmP.h \ src/sys/external/bsd/drm2/include/drm/drm_gem_cma_helper.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Added files: Index: src/sys/external/bsd/drm2/include/drm/drmP.h diff -u /dev/null src/sys/external/bsd/drm2/include/drm/drmP.h:1.1 --- /dev/null Sun Dec 19 10:24:33 2021 +++ src/sys/external/bsd/drm2/include/drm/drmP.h Sun Dec 19 10:24:33 2021 @@ -0,0 +1,178 @@ +/* $NetBSD: drmP.h,v 1.1 2021/12/19 10:24:33 riastradh Exp $ */ + +/* + * Internal Header for the Direct Rendering Manager + * + * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. + * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + * Copyright (c) 2009-2010, Code Aurora Forum. + * All rights reserved. + * + * Author: Rickard E. (Rik) Faith <fa...@valinux.com> + * Author: Gareth Hughes <gar...@valinux.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef _DRM_P_H_ +#define _DRM_P_H_ + +#include <linux/agp_backend.h> +#include <linux/cdev.h> +#include <linux/dma-mapping.h> +#include <linux/file.h> +#include <linux/fs.h> +#include <linux/highmem.h> +#include <linux/idr.h> +#include <linux/init.h> +#include <linux/io.h> +#include <linux/jiffies.h> +#include <linux/kernel.h> +#include <linux/kref.h> +#include <linux/miscdevice.h> +#include <linux/mm.h> +#include <linux/mutex.h> +#include <linux/pci.h> +#include <linux/platform_device.h> +#include <linux/poll.h> +#include <linux/ratelimit.h> +#include <linux/sched.h> +#include <linux/slab.h> +#include <linux/types.h> +#include <linux/vmalloc.h> +#include <linux/workqueue.h> + +#include <asm/mman.h> +#include <asm/pgalloc.h> +#include <asm/uaccess.h> + +#include <uapi/drm/drm.h> +#include <uapi/drm/drm_mode.h> + +#ifdef __NetBSD__ +#include <drm/drm_os_netbsd.h> +#include <asm/barrier.h> +#include <asm/bug.h> +#include <linux/atomic.h> +#include <linux/delay.h> +#include <linux/err.h> +#include <linux/fence.h> +#include <linux/interrupt.h> +#include <linux/ktime.h> +#include <linux/module.h> +#include <linux/pm.h> +#include <linux/string.h> +#include <linux/timer.h> +#include <linux/uidgid.h> +#else +#include <drm/drm_os_linux.h> +#endif + +#include <drm/drm_agpsupport.h> +#include <drm/drm_crtc.h> +#include <drm/drm_global.h> +#include <drm/drm_hashtab.h> +#include <drm/drm_mem_util.h> +#include <drm/drm_mm.h> +#include <drm/drm_sarea.h> +#include <drm/drm_vma_manager.h> + +struct module; + +struct drm_file; +struct drm_device; +struct drm_agp_head; +struct drm_local_map; +struct drm_device_dma; +struct drm_dma_handle; +struct drm_bus_irq_cookie; + +struct device_node; +struct videomode; +struct reservation_object; +struct dma_buf_attachment; + +/***********************************************************************/ +/** \name Internal types and structures */ +/*@{*/ + +#define DRM_IF_VERSION(maj, min) (maj << 16 | min) + +#ifdef __NetBSD__ /* XXX debugfs */ +struct seq_file; +#endif + +/******************************************************************/ +/** \name Internal function definitions */ +/*@{*/ + + /* Device support (drm_fops.h) */ +extern int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv); + + /* Stub support (drm_stub.h) */ +extern struct drm_master *drm_master_get(struct drm_master *master); +extern void drm_master_put(struct drm_master **master); + +extern void drm_put_dev(struct drm_device *dev); +extern void drm_unplug_dev(struct drm_device *dev); +extern unsigned int drm_debug; +extern bool drm_atomic; + +int drm_pci_set_unique(struct drm_device *dev, + struct drm_master *master, + struct drm_unique *u); +extern struct drm_dma_handle *drm_pci_alloc(struct drm_device *dev, size_t size, + size_t align); +extern void drm_pci_free(struct drm_device *dev, struct drm_dma_handle * dmah); + +#ifdef __NetBSD__ +int drm_limit_dma_space(struct drm_device *, resource_size_t, resource_size_t); +int drm_guarantee_initialized(void); +#endif + +/*@}*/ + +/* platform section */ +extern int drm_platform_init(struct drm_driver *driver, struct platform_device *platform_device); +extern int drm_platform_set_busid(struct drm_device *d, struct drm_master *m); + +#ifdef __NetBSD__ + +/* XXX This is pretty kludgerific. */ + +#include <linux/io-mapping.h> + +static inline struct io_mapping * +drm_io_mapping_create_wc(struct drm_device *dev, resource_size_t addr, + unsigned long size) +{ + return bus_space_io_mapping_create_wc(dev->bst, addr, size); +} + +static inline bool +drm_io_mapping_init_wc(struct drm_device *dev, struct io_mapping *mapping, + resource_size_t addr, unsigned long size) +{ + return bus_space_io_mapping_init_wc(dev->bst, mapping, addr, size); +} + +#endif /* defined(__NetBSD__) */ + +#endif Index: src/sys/external/bsd/drm2/include/drm/drm_gem_cma_helper.h diff -u /dev/null src/sys/external/bsd/drm2/include/drm/drm_gem_cma_helper.h:1.1 --- /dev/null Sun Dec 19 10:24:33 2021 +++ src/sys/external/bsd/drm2/include/drm/drm_gem_cma_helper.h Sun Dec 19 10:24:33 2021 @@ -0,0 +1,155 @@ +/* $NetBSD: drm_gem_cma_helper.h,v 1.1 2021/12/19 10:24:33 riastradh Exp $ */ + +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __DRM_GEM_CMA_HELPER_H__ +#define __DRM_GEM_CMA_HELPER_H__ + +#include <drm/drm_file.h> +#include <drm/drm_ioctl.h> +#include <drm/drm_gem.h> + +struct drm_mode_create_dumb; + +/** + * struct drm_gem_cma_object - GEM object backed by CMA memory allocations + * @base: base GEM object + * @paddr: physical address of the backing memory + * @sgt: scatter/gather table for imported PRIME buffers. The table can have + * more than one entry but they are guaranteed to have contiguous + * DMA addresses. + * @vaddr: kernel virtual address of the backing memory + */ +struct drm_gem_cma_object { + struct drm_gem_object base; +#ifdef __NetBSD__ + bus_dma_tag_t dmat; + bus_dma_segment_t dmasegs[1]; + bus_size_t dmasize; + bus_dmamap_t dmamap; + vmem_t *vmem_pool; + vmem_addr_t vmem_addr; +#else + dma_addr_t paddr; +#endif + struct sg_table *sgt; + + /* For objects with DMA memory allocated by GEM CMA */ + void *vaddr; +}; + +#define to_drm_gem_cma_obj(gem_obj) \ + container_of(gem_obj, struct drm_gem_cma_object, base) + +#ifndef CONFIG_MMU +#define DRM_GEM_CMA_UNMAPPED_AREA_FOPS \ + .get_unmapped_area = drm_gem_cma_get_unmapped_area, +#else +#define DRM_GEM_CMA_UNMAPPED_AREA_FOPS +#endif + +/** + * DEFINE_DRM_GEM_CMA_FOPS() - macro to generate file operations for CMA drivers + * @name: name for the generated structure + * + * This macro autogenerates a suitable &struct file_operations for CMA based + * drivers, which can be assigned to &drm_driver.fops. Note that this structure + * cannot be shared between drivers, because it contains a reference to the + * current module using THIS_MODULE. + * + * Note that the declaration is already marked as static - if you need a + * non-static version of this you're probably doing it wrong and will break the + * THIS_MODULE reference by accident. + */ +#define DEFINE_DRM_GEM_CMA_FOPS(name) \ + static const struct file_operations name = {\ + .owner = THIS_MODULE,\ + .open = drm_open,\ + .release = drm_release,\ + .unlocked_ioctl = drm_ioctl,\ + .compat_ioctl = drm_compat_ioctl,\ + .poll = drm_poll,\ + .read = drm_read,\ + .llseek = noop_llseek,\ + .mmap = drm_gem_cma_mmap,\ + DRM_GEM_CMA_UNMAPPED_AREA_FOPS \ + } + +/* free GEM object */ +void drm_gem_cma_free_object(struct drm_gem_object *gem_obj); + +/* create memory region for DRM framebuffer */ +int drm_gem_cma_dumb_create_internal(struct drm_file *file_priv, + struct drm_device *drm, + struct drm_mode_create_dumb *args); + +/* create memory region for DRM framebuffer */ +int drm_gem_cma_dumb_create(struct drm_file *file_priv, + struct drm_device *drm, + struct drm_mode_create_dumb *args); + +/* set vm_flags and we can change the VM attribute to other one at here */ +#ifndef __NetBSD__ +int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma); +#endif + +/* allocate physical memory */ +struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, + size_t size); + +#ifdef __NetBSD__ +extern const struct uvm_pagerops drm_gem_cma_uvm_ops; +#else +extern const struct vm_operations_struct drm_gem_cma_vm_ops; +#endif + +#ifndef CONFIG_MMU +unsigned long drm_gem_cma_get_unmapped_area(struct file *filp, + unsigned long addr, + unsigned long len, + unsigned long pgoff, + unsigned long flags); +#endif + +void drm_gem_cma_print_info(struct drm_printer *p, unsigned int indent, + const struct drm_gem_object *obj); + +struct sg_table *drm_gem_cma_prime_get_sg_table(struct drm_gem_object *obj); +struct drm_gem_object * +drm_gem_cma_prime_import_sg_table(struct drm_device *dev, + struct dma_buf_attachment *attach, + struct sg_table *sgt); +#ifdef __NetBSD__ +int drm_gem_cma_prime_mmap(struct drm_gem_object *, off_t *, size_t, int, + int *, int *, struct uvm_object **, int *); +#else +int drm_gem_cma_prime_mmap(struct drm_gem_object *obj, + struct vm_area_struct *vma); +#endif +void *drm_gem_cma_prime_vmap(struct drm_gem_object *obj); +void drm_gem_cma_prime_vunmap(struct drm_gem_object *obj, void *vaddr); + +struct drm_gem_object * +drm_cma_gem_create_object_default_funcs(struct drm_device *dev, size_t size); + +/** + * DRM_GEM_CMA_VMAP_DRIVER_OPS - CMA GEM driver operations ensuring a virtual + * address on the buffer + * + * This macro provides a shortcut for setting the default GEM operations in the + * &drm_driver structure for drivers that need the virtual address also on + * imported buffers. + */ +#define DRM_GEM_CMA_VMAP_DRIVER_OPS \ + .gem_create_object = drm_cma_gem_create_object_default_funcs, \ + .dumb_create = drm_gem_cma_dumb_create, \ + .prime_handle_to_fd = drm_gem_prime_handle_to_fd, \ + .prime_fd_to_handle = drm_gem_prime_fd_to_handle, \ + .gem_prime_import_sg_table = drm_gem_cma_prime_import_sg_table_vmap, \ + .gem_prime_mmap = drm_gem_prime_mmap + +struct drm_gem_object * +drm_gem_cma_prime_import_sg_table_vmap(struct drm_device *drm, + struct dma_buf_attachment *attach, + struct sg_table *sgt); + +#endif /* __DRM_GEM_CMA_HELPER_H__ */