#include <linux/clk.h>
#include <linux/component.h>
#include <linux/delay.h>
#include <linux/io.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
#include <video/mipi_display.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_bridge.h>
#include <drm/drm_device.h>
#include <drm/drm_drv.h>
#include <drm/drm_encoder.h>
#include <drm/drm_mipi_dsi.h>
#include <drm/drm_modeset_helper_vtables.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include "mcde_drm.h"
#include "mcde_dsi_regs.h"
#define DSI_DEFAULT_LP_FREQ_HZ …
#define DSI_DEFAULT_HS_FREQ_HZ …
#define PRCM_DSI_SW_RESET …
#define PRCM_DSI_SW_RESET_DSI0_SW_RESETN …
#define PRCM_DSI_SW_RESET_DSI1_SW_RESETN …
#define PRCM_DSI_SW_RESET_DSI2_SW_RESETN …
struct mcde_dsi { … };
static inline struct mcde_dsi *bridge_to_mcde_dsi(struct drm_bridge *bridge)
{ … }
static inline struct mcde_dsi *host_to_mcde_dsi(struct mipi_dsi_host *h)
{ … }
bool mcde_dsi_irq(struct mipi_dsi_device *mdsi)
{ … }
static void mcde_dsi_attach_to_mcde(struct mcde_dsi *d)
{ … }
static int mcde_dsi_host_attach(struct mipi_dsi_host *host,
struct mipi_dsi_device *mdsi)
{ … }
static int mcde_dsi_host_detach(struct mipi_dsi_host *host,
struct mipi_dsi_device *mdsi)
{ … }
#define MCDE_DSI_HOST_IS_READ(type) …
static int mcde_dsi_execute_transfer(struct mcde_dsi *d,
const struct mipi_dsi_msg *msg)
{ … }
static ssize_t mcde_dsi_host_transfer(struct mipi_dsi_host *host,
const struct mipi_dsi_msg *msg)
{ … }
static const struct mipi_dsi_host_ops mcde_dsi_host_ops = …;
void mcde_dsi_te_request(struct mipi_dsi_device *mdsi)
{ … }
static void mcde_dsi_setup_video_mode(struct mcde_dsi *d,
const struct drm_display_mode *mode)
{ … }
static void mcde_dsi_start(struct mcde_dsi *d)
{ … }
void mcde_dsi_enable(struct drm_bridge *bridge)
{ … }
static void mcde_dsi_bridge_mode_set(struct drm_bridge *bridge,
const struct drm_display_mode *mode,
const struct drm_display_mode *adj)
{ … }
static void mcde_dsi_wait_for_command_mode_stop(struct mcde_dsi *d)
{ … }
static void mcde_dsi_wait_for_video_mode_stop(struct mcde_dsi *d)
{ … }
void mcde_dsi_disable(struct drm_bridge *bridge)
{ … }
static int mcde_dsi_bridge_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
{ … }
static const struct drm_bridge_funcs mcde_dsi_bridge_funcs = …;
static int mcde_dsi_bind(struct device *dev, struct device *master,
void *data)
{ … }
static void mcde_dsi_unbind(struct device *dev, struct device *master,
void *data)
{ … }
static const struct component_ops mcde_dsi_component_ops = …;
static int mcde_dsi_probe(struct platform_device *pdev)
{ … }
static void mcde_dsi_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id mcde_dsi_of_match[] = …;
struct platform_driver mcde_dsi_driver = …;