#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/host1x.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/reset.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_blend.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_probe_helper.h>
#include "drm.h"
#include "dc.h"
#include "plane.h"
#define NFB …
static const u32 tegra_shared_plane_formats[] = …;
static const u64 tegra_shared_plane_modifiers[] = …;
static inline unsigned int tegra_plane_offset(struct tegra_plane *plane,
unsigned int offset)
{ … }
static inline u32 tegra_plane_readl(struct tegra_plane *plane,
unsigned int offset)
{ … }
static inline void tegra_plane_writel(struct tegra_plane *plane, u32 value,
unsigned int offset)
{ … }
static int tegra_windowgroup_enable(struct tegra_windowgroup *wgrp)
{ … }
static void tegra_windowgroup_disable(struct tegra_windowgroup *wgrp)
{ … }
int tegra_display_hub_prepare(struct tegra_display_hub *hub)
{ … }
void tegra_display_hub_cleanup(struct tegra_display_hub *hub)
{ … }
static void tegra_shared_plane_update(struct tegra_plane *plane)
{ … }
static void tegra_shared_plane_activate(struct tegra_plane *plane)
{ … }
static unsigned int
tegra_shared_plane_get_owner(struct tegra_plane *plane, struct tegra_dc *dc)
{ … }
static bool tegra_dc_owns_shared_plane(struct tegra_dc *dc,
struct tegra_plane *plane)
{ … }
static int tegra_shared_plane_set_owner(struct tegra_plane *plane,
struct tegra_dc *new)
{ … }
static void tegra_shared_plane_setup_scaler(struct tegra_plane *plane)
{ … }
static void tegra_dc_assign_shared_plane(struct tegra_dc *dc,
struct tegra_plane *plane)
{ … }
static void tegra_dc_remove_shared_plane(struct tegra_dc *dc,
struct tegra_plane *plane)
{ … }
static int tegra_shared_plane_atomic_check(struct drm_plane *plane,
struct drm_atomic_state *state)
{ … }
static void tegra_shared_plane_atomic_disable(struct drm_plane *plane,
struct drm_atomic_state *state)
{ … }
static inline u32 compute_phase_incr(fixed20_12 in, unsigned int out)
{ … }
static void tegra_shared_plane_atomic_update(struct drm_plane *plane,
struct drm_atomic_state *state)
{ … }
static const struct drm_plane_helper_funcs tegra_shared_plane_helper_funcs = …;
struct drm_plane *tegra_shared_plane_create(struct drm_device *drm,
struct tegra_dc *dc,
unsigned int wgrp,
unsigned int index)
{ … }
static struct drm_private_state *
tegra_display_hub_duplicate_state(struct drm_private_obj *obj)
{ … }
static void tegra_display_hub_destroy_state(struct drm_private_obj *obj,
struct drm_private_state *state)
{ … }
static const struct drm_private_state_funcs tegra_display_hub_state_funcs = …;
static struct tegra_display_hub_state *
tegra_display_hub_get_state(struct tegra_display_hub *hub,
struct drm_atomic_state *state)
{ … }
int tegra_display_hub_atomic_check(struct drm_device *drm,
struct drm_atomic_state *state)
{ … }
static void tegra_display_hub_update(struct tegra_dc *dc)
{ … }
void tegra_display_hub_atomic_commit(struct drm_device *drm,
struct drm_atomic_state *state)
{ … }
static int tegra_display_hub_init(struct host1x_client *client)
{ … }
static int tegra_display_hub_exit(struct host1x_client *client)
{ … }
static int tegra_display_hub_runtime_suspend(struct host1x_client *client)
{ … }
static int tegra_display_hub_runtime_resume(struct host1x_client *client)
{ … }
static const struct host1x_client_ops tegra_display_hub_ops = …;
static int tegra_display_hub_probe(struct platform_device *pdev)
{ … }
static void tegra_display_hub_remove(struct platform_device *pdev)
{ … }
static const struct tegra_display_hub_soc tegra186_display_hub = …;
static const struct tegra_display_hub_soc tegra194_display_hub = …;
static const struct of_device_id tegra_display_hub_of_match[] = …;
MODULE_DEVICE_TABLE(of, tegra_display_hub_of_match);
struct platform_driver tegra_display_hub_driver = …;