linux/drivers/gpu/drm/bridge/fsl-ldb.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2022 Marek Vasut <[email protected]>
 */

#include <linux/clk.h>
#include <linux/media-bus-format.h>
#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/regmap.h>

#include <drm/drm_atomic_helper.h>
#include <drm/drm_bridge.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>

#define LDB_CTRL_CH0_ENABLE
#define LDB_CTRL_CH0_DI_SELECT
#define LDB_CTRL_CH1_ENABLE
#define LDB_CTRL_CH1_DI_SELECT
#define LDB_CTRL_SPLIT_MODE
#define LDB_CTRL_CH0_DATA_WIDTH
#define LDB_CTRL_CH0_BIT_MAPPING
#define LDB_CTRL_CH1_DATA_WIDTH
#define LDB_CTRL_CH1_BIT_MAPPING
#define LDB_CTRL_DI0_VSYNC_POLARITY
#define LDB_CTRL_DI1_VSYNC_POLARITY
#define LDB_CTRL_REG_CH0_FIFO_RESET
#define LDB_CTRL_REG_CH1_FIFO_RESET
#define LDB_CTRL_ASYNC_FIFO_ENABLE
#define LDB_CTRL_ASYNC_FIFO_THRESHOLD_MASK

#define LVDS_CTRL_CH0_EN
#define LVDS_CTRL_CH1_EN
/*
 * LVDS_CTRL_LVDS_EN bit is poorly named in i.MX93 reference manual.
 * Clear it to enable LVDS and set it to disable LVDS.
 */
#define LVDS_CTRL_LVDS_EN
#define LVDS_CTRL_VBG_EN
#define LVDS_CTRL_HS_EN
#define LVDS_CTRL_PRE_EMPH_EN
#define LVDS_CTRL_PRE_EMPH_ADJ(n)
#define LVDS_CTRL_PRE_EMPH_ADJ_MASK
#define LVDS_CTRL_CM_ADJ(n)
#define LVDS_CTRL_CM_ADJ_MASK
#define LVDS_CTRL_CC_ADJ(n)
#define LVDS_CTRL_CC_ADJ_MASK
#define LVDS_CTRL_SLEW_ADJ(n)
#define LVDS_CTRL_SLEW_ADJ_MASK
#define LVDS_CTRL_VBG_ADJ(n)
#define LVDS_CTRL_VBG_ADJ_MASK

enum fsl_ldb_devtype {};

struct fsl_ldb_devdata {};

static const struct fsl_ldb_devdata fsl_ldb_devdata[] =;

struct fsl_ldb {};

static bool fsl_ldb_is_dual(const struct fsl_ldb *fsl_ldb)
{}

static inline struct fsl_ldb *to_fsl_ldb(struct drm_bridge *bridge)
{}

static unsigned long fsl_ldb_link_frequency(struct fsl_ldb *fsl_ldb, int clock)
{}

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

static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
				  struct drm_bridge_state *old_bridge_state)
{}

static void fsl_ldb_atomic_disable(struct drm_bridge *bridge,
				   struct drm_bridge_state *old_bridge_state)
{}

#define MAX_INPUT_SEL_FORMATS
static u32 *
fsl_ldb_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
				  struct drm_bridge_state *bridge_state,
				  struct drm_crtc_state *crtc_state,
				  struct drm_connector_state *conn_state,
				  u32 output_fmt,
				  unsigned int *num_input_fmts)
{}

static enum drm_mode_status
fsl_ldb_mode_valid(struct drm_bridge *bridge,
		   const struct drm_display_info *info,
		   const struct drm_display_mode *mode)
{}

static const struct drm_bridge_funcs funcs =;

static int fsl_ldb_probe(struct platform_device *pdev)
{}

static void fsl_ldb_remove(struct platform_device *pdev)
{}

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

static struct platform_driver fsl_ldb_driver =;
module_platform_driver();

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