tegrakernel/kernel/nvidia/drivers/video/tegra/nvmap/nv2/nvmap_dev.h

64 lines
1.7 KiB
C
Raw Normal View History

2022-02-16 09:13:02 -06:00
/*
* Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
#ifndef __NVMAP_DEV_H
#define __NVMAP_DEV_H
#include <linux/platform_device.h>
#include <linux/miscdevice.h>
#include <linux/nvmap.h>
#include "nvmap_heap.h"
#include "nvmap_pp.h"
#include "nvmap_structs.h"
struct nvmap_device {
struct rb_root handles;
spinlock_t handle_lock;
struct miscdevice dev_user;
// TODO: heaps should be a double pointer
struct nvmap_carveout_node *heaps;
int nr_heaps;
int nr_carveouts;
#ifdef CONFIG_NVMAP_PAGE_POOLS
struct nvmap_page_pool pool;
#endif
struct list_head clients;
struct rb_root pids;
struct mutex clients_lock;
struct list_head lru_handles;
spinlock_t lru_lock;
struct dentry *handles_by_pid;
struct dentry *debug_root;
struct nvmap_platform_data *plat;
struct rb_root tags;
struct mutex tags_lock;
u32 dynamic_dma_map_mask;
u32 cpu_access_mask;
};
int nvmap_probe(struct platform_device *pdev);
int nvmap_remove(struct platform_device *pdev);
int nvmap_init(struct platform_device *pdev);
extern struct nvmap_device *nvmap_dev;
u32 nvmap_cpu_access_mask(void);
struct nvmap_carveout_node *nvmap_dev_to_carveout(struct nvmap_device *dev, int i);
int nvmap_dmabuf_stash_init(void);
#endif /* __NVMAP_DEV_H */