#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 …
#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(…) …;