162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2023 Loongson Technology Corporation Limited
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef __LSDC_GEM_H__
762306a36Sopenharmony_ci#define __LSDC_GEM_H__
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <drm/drm_device.h>
1062306a36Sopenharmony_ci#include <drm/drm_gem.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cistruct drm_gem_object *
1362306a36Sopenharmony_cilsdc_prime_import_sg_table(struct drm_device *ddev,
1462306a36Sopenharmony_ci			   struct dma_buf_attachment *attach,
1562306a36Sopenharmony_ci			   struct sg_table *sg);
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciint lsdc_dumb_map_offset(struct drm_file *file,
1862306a36Sopenharmony_ci			 struct drm_device *dev,
1962306a36Sopenharmony_ci			 u32 handle,
2062306a36Sopenharmony_ci			 uint64_t *offset);
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciint lsdc_dumb_create(struct drm_file *file,
2362306a36Sopenharmony_ci		     struct drm_device *ddev,
2462306a36Sopenharmony_ci		     struct drm_mode_create_dumb *args);
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_civoid lsdc_gem_init(struct drm_device *ddev);
2762306a36Sopenharmony_ciint lsdc_show_buffer_object(struct seq_file *m, void *arg);
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cistruct drm_gem_object *
3062306a36Sopenharmony_cilsdc_gem_object_create(struct drm_device *ddev,
3162306a36Sopenharmony_ci		       u32 domain,
3262306a36Sopenharmony_ci		       size_t size,
3362306a36Sopenharmony_ci		       bool kerenl,
3462306a36Sopenharmony_ci		       struct sg_table *sg,
3562306a36Sopenharmony_ci		       struct dma_resv *resv);
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#endif
38