#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/host1x.h>
#include <linux/iommu.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/pm_domain.h>
#include <linux/pm_opp.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include <soc/tegra/common.h>
#include <soc/tegra/pmc.h>
#include "drm.h"
#include "gem.h"
#include "gr3d.h"
enum { … };
struct gr3d_soc { … };
struct gr3d { … };
static inline struct gr3d *to_gr3d(struct tegra_drm_client *client)
{ … }
static int gr3d_init(struct host1x_client *client)
{ … }
static int gr3d_exit(struct host1x_client *client)
{ … }
static const struct host1x_client_ops gr3d_client_ops = …;
static int gr3d_open_channel(struct tegra_drm_client *client,
struct tegra_drm_context *context)
{ … }
static void gr3d_close_channel(struct tegra_drm_context *context)
{ … }
static int gr3d_is_addr_reg(struct device *dev, u32 class, u32 offset)
{ … }
static const struct tegra_drm_client_ops gr3d_ops = …;
static const struct gr3d_soc tegra20_gr3d_soc = …;
static const struct gr3d_soc tegra30_gr3d_soc = …;
static const struct gr3d_soc tegra114_gr3d_soc = …;
static const struct of_device_id tegra_gr3d_match[] = …;
MODULE_DEVICE_TABLE(of, tegra_gr3d_match);
static const u32 gr3d_addr_regs[] = …;
static int gr3d_power_up_legacy_domain(struct device *dev, const char *name,
unsigned int id)
{ … }
static void gr3d_del_link(void *link)
{ … }
static int gr3d_init_power(struct device *dev, struct gr3d *gr3d)
{ … }
static int gr3d_get_clocks(struct device *dev, struct gr3d *gr3d)
{ … }
static int gr3d_get_resets(struct device *dev, struct gr3d *gr3d)
{ … }
static int gr3d_probe(struct platform_device *pdev)
{ … }
static void gr3d_remove(struct platform_device *pdev)
{ … }
static int __maybe_unused gr3d_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused gr3d_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops tegra_gr3d_pm = …;
struct platform_driver tegra_gr3d_driver = …;