linux/drivers/gpu/drm/bridge/tc358762.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2020 Marek Vasut <[email protected]>
 *
 * Based on tc358764.c by
 *  Andrzej Hajda <[email protected]>
 *  Maciej Purski <[email protected]>
 *
 * Based on rpi_touchscreen.c by
 *  Eric Anholt <[email protected]>
 */

#include <linux/delay.h>
#include <linux/gpio/consumer.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/of_graph.h>
#include <linux/regulator/consumer.h>

#include <video/mipi_display.h>

#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>

/* PPI layer registers */
#define PPI_STARTPPI
#define PPI_LPTXTIMECNT
#define PPI_D0S_ATMR
#define PPI_D1S_ATMR
#define PPI_D0S_CLRSIPOCOUNT
#define PPI_D1S_CLRSIPOCOUNT
#define PPI_START_FUNCTION

/* DSI layer registers */
#define DSI_STARTDSI
#define DSI_LANEENABLE
#define DSI_RX_START

/* LCDC/DPI Host Registers, based on guesswork that this matches TC358764 */
#define LCDCTRL
#define LCDCTRL_MSF
#define LCDCTRL_VTGEN
#define LCDCTRL_UNK6
#define LCDCTRL_EVTMODE
#define LCDCTRL_RGB888
#define LCDCTRL_HSPOL
#define LCDCTRL_DEPOL
#define LCDCTRL_VSPOL
#define LCDCTRL_VSDELAY(v)

/* SPI Master Registers */
#define SPICMR
#define SPITCR

/* System Controller Registers */
#define SYSCTRL

/* System registers */
#define LPX_PERIOD

/* Lane enable PPI and DSI register bits */
#define LANEENABLE_CLEN
#define LANEENABLE_L0EN
#define LANEENABLE_L1EN

struct tc358762 {};

static int tc358762_clear_error(struct tc358762 *ctx)
{}

static void tc358762_write(struct tc358762 *ctx, u16 addr, u32 val)
{}

static inline struct tc358762 *bridge_to_tc358762(struct drm_bridge *bridge)
{}

static int tc358762_init(struct tc358762 *ctx)
{}

static void tc358762_post_disable(struct drm_bridge *bridge, struct drm_bridge_state *state)
{}

static void tc358762_pre_enable(struct drm_bridge *bridge, struct drm_bridge_state *state)
{}

static void tc358762_enable(struct drm_bridge *bridge, struct drm_bridge_state *state)
{}

static int tc358762_attach(struct drm_bridge *bridge,
			   enum drm_bridge_attach_flags flags)
{}

static void tc358762_bridge_mode_set(struct drm_bridge *bridge,
				     const struct drm_display_mode *mode,
				     const struct drm_display_mode *adj)
{}

static const struct drm_bridge_funcs tc358762_bridge_funcs =;

static int tc358762_parse_dt(struct tc358762 *ctx)
{}

static int tc358762_configure_regulators(struct tc358762 *ctx)
{}

static int tc358762_probe(struct mipi_dsi_device *dsi)
{}

static void tc358762_remove(struct mipi_dsi_device *dsi)
{}

static const struct of_device_id tc358762_of_match[] =;
MODULE_DEVICE_TABLE(of, tc358762_of_match);

static struct mipi_dsi_driver tc358762_driver =;
module_mipi_dsi_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();