#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include <soc/tegra/common.h>
#include "drm.h"
#include "gem.h"
#include "gr2d.h"
enum { … };
struct gr2d_soc { … };
struct gr2d { … };
static inline struct gr2d *to_gr2d(struct tegra_drm_client *client)
{ … }
static int gr2d_init(struct host1x_client *client)
{ … }
static int gr2d_exit(struct host1x_client *client)
{ … }
static const struct host1x_client_ops gr2d_client_ops = …;
static int gr2d_open_channel(struct tegra_drm_client *client,
struct tegra_drm_context *context)
{ … }
static void gr2d_close_channel(struct tegra_drm_context *context)
{ … }
static int gr2d_is_addr_reg(struct device *dev, u32 class, u32 offset)
{ … }
static int gr2d_is_valid_class(u32 class)
{ … }
static const struct tegra_drm_client_ops gr2d_ops = …;
static const struct gr2d_soc tegra20_gr2d_soc = …;
static const struct gr2d_soc tegra30_gr2d_soc = …;
static const struct gr2d_soc tegra114_gr2d_soc = …;
static const struct of_device_id gr2d_match[] = …;
MODULE_DEVICE_TABLE(of, gr2d_match);
static const u32 gr2d_addr_regs[] = …;
static int gr2d_get_resets(struct device *dev, struct gr2d *gr2d)
{ … }
static int gr2d_probe(struct platform_device *pdev)
{ … }
static void gr2d_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused gr2d_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused gr2d_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops tegra_gr2d_pm = …;
struct platform_driver tegra_gr2d_driver = …;