#include <linux/clk.h>
#include <linux/component.h>
#include <linux/mod_devicetable.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_drv.h>
#include <drm/drm_edid.h>
#include <drm/drm_fb_dma_helper.h>
#include <drm/drm_fourcc.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_panel.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_vblank.h>
#include <drm/drm_writeback.h>
#include "vc4_drv.h"
#include "vc4_regs.h"
#define TXP_DST_PTR …
#define TXP_DST_PITCH …
#define TXP_T_TILE_WIDTH_SHIFT …
#define TXP_LT_TILE_WIDTH_SHIFT …
#define TXP_DIM …
#define TXP_HEIGHT_SHIFT …
#define TXP_HEIGHT_MASK …
#define TXP_WIDTH_SHIFT …
#define TXP_WIDTH_MASK …
#define TXP_DST_CTRL …
#define TXP_PILOT_SHIFT …
#define TXP_PILOT_MASK …
#define TXP_VERSION_SHIFT …
#define TXP_VERSION_MASK …
#define TXP_POWERDOWN …
#define TXP_ALPHA_ENABLE …
#define TXP_BYTE_ENABLE_SHIFT …
#define TXP_BYTE_ENABLE_MASK …
#define TXP_VSTART_AT_EOF …
#define TXP_ABORT …
#define TXP_DITHER …
#define TXP_ALPHA_INVERT …
#define TXP_FORMAT_SHIFT …
#define TXP_FORMAT_MASK …
#define TXP_FORMAT_ABGR4444 …
#define TXP_FORMAT_ARGB4444 …
#define TXP_FORMAT_BGRA4444 …
#define TXP_FORMAT_RGBA4444 …
#define TXP_FORMAT_BGR565 …
#define TXP_FORMAT_RGB565 …
#define TXP_FORMAT_BGR888 …
#define TXP_FORMAT_RGB888 …
#define TXP_FORMAT_ABGR8888 …
#define TXP_FORMAT_ARGB8888 …
#define TXP_FORMAT_BGRA8888 …
#define TXP_FORMAT_RGBA8888 …
#define TXP_LINEAR_UTILE …
#define TXP_TRANSPOSE …
#define TXP_TFORMAT …
#define TXP_TEST_MODE …
#define TXP_FIELD …
#define TXP_EI …
#define TXP_BUSY …
#define TXP_GO …
#define TXP_PROGRESS …
#define TXP_READ(offset) …
#define TXP_WRITE(offset, val) …
struct vc4_txp { … };
#define encoder_to_vc4_txp(_encoder) …
#define connector_to_vc4_txp(_connector) …
static const struct debugfs_reg32 txp_regs[] = …;
static int vc4_txp_connector_get_modes(struct drm_connector *connector)
{ … }
static enum drm_mode_status
vc4_txp_connector_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode)
{ … }
static const u32 drm_fmts[] = …;
static const u32 txp_fmts[] = …;
static void vc4_txp_armed(struct drm_crtc_state *state)
{ … }
static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
struct drm_atomic_state *state)
{ … }
static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
struct drm_atomic_state *state)
{ … }
static const struct drm_connector_helper_funcs vc4_txp_connector_helper_funcs = …;
static enum drm_connector_status
vc4_txp_connector_detect(struct drm_connector *connector, bool force)
{ … }
static const struct drm_connector_funcs vc4_txp_connector_funcs = …;
static void vc4_txp_encoder_disable(struct drm_encoder *encoder)
{ … }
static const struct drm_encoder_helper_funcs vc4_txp_encoder_helper_funcs = …;
static int vc4_txp_enable_vblank(struct drm_crtc *crtc)
{ … }
static void vc4_txp_disable_vblank(struct drm_crtc *crtc) { … }
static const struct drm_crtc_funcs vc4_txp_crtc_funcs = …;
static int vc4_txp_atomic_check(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static void vc4_txp_atomic_enable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static void vc4_txp_atomic_disable(struct drm_crtc *crtc,
struct drm_atomic_state *state)
{ … }
static const struct drm_crtc_helper_funcs vc4_txp_crtc_helper_funcs = …;
static irqreturn_t vc4_txp_interrupt(int irq, void *data)
{ … }
const struct vc4_crtc_data vc4_txp_crtc_data = …;
static int vc4_txp_bind(struct device *dev, struct device *master, void *data)
{ … }
static void vc4_txp_unbind(struct device *dev, struct device *master,
void *data)
{ … }
static const struct component_ops vc4_txp_ops = …;
static int vc4_txp_probe(struct platform_device *pdev)
{ … }
static void vc4_txp_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id vc4_txp_dt_match[] = …;
struct platform_driver vc4_txp_driver = …;