#include <linux/clk.h>
#include <linux/component.h>
#include <linux/i2c.h>
#include <linux/media-bus-format.h>
#include <linux/mfd/syscon.h>
#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>
#include <linux/videodev2.h>
#include <video/of_display_timing.h>
#include <video/of_videomode.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_bridge.h>
#include <drm/drm_edid.h>
#include <drm/drm_managed.h>
#include <drm/drm_of.h>
#include <drm/drm_panel.h>
#include <drm/drm_print.h>
#include <drm/drm_probe_helper.h>
#include <drm/drm_simple_kms_helper.h>
#include "imx-drm.h"
#define DRIVER_NAME …
#define LDB_CH0_MODE_EN_TO_DI0 …
#define LDB_CH0_MODE_EN_TO_DI1 …
#define LDB_CH0_MODE_EN_MASK …
#define LDB_CH1_MODE_EN_TO_DI0 …
#define LDB_CH1_MODE_EN_TO_DI1 …
#define LDB_CH1_MODE_EN_MASK …
#define LDB_SPLIT_MODE_EN …
#define LDB_DATA_WIDTH_CH0_24 …
#define LDB_BIT_MAP_CH0_JEIDA …
#define LDB_DATA_WIDTH_CH1_24 …
#define LDB_BIT_MAP_CH1_JEIDA …
#define LDB_DI0_VS_POL_ACT_LOW …
#define LDB_DI1_VS_POL_ACT_LOW …
#define LDB_BGREF_RMODE_INT …
struct imx_ldb_channel;
struct imx_ldb_encoder { … };
struct imx_ldb;
struct imx_ldb_channel { … };
static inline struct imx_ldb_channel *con_to_imx_ldb_ch(struct drm_connector *c)
{ … }
static inline struct imx_ldb_channel *enc_to_imx_ldb_ch(struct drm_encoder *e)
{ … }
struct bus_mux { … };
struct imx_ldb { … };
static void imx_ldb_ch_set_bus_format(struct imx_ldb_channel *imx_ldb_ch,
u32 bus_format)
{ … }
static int imx_ldb_connector_get_modes(struct drm_connector *connector)
{ … }
static void imx_ldb_set_clock(struct imx_ldb *ldb, int mux, int chno,
unsigned long serial_clk, unsigned long di_clk)
{ … }
static void imx_ldb_encoder_enable(struct drm_encoder *encoder)
{ … }
static void
imx_ldb_encoder_atomic_mode_set(struct drm_encoder *encoder,
struct drm_crtc_state *crtc_state,
struct drm_connector_state *connector_state)
{ … }
static void imx_ldb_encoder_disable(struct drm_encoder *encoder)
{ … }
static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
struct drm_crtc_state *crtc_state,
struct drm_connector_state *conn_state)
{ … }
static const struct drm_connector_funcs imx_ldb_connector_funcs = …;
static const struct drm_connector_helper_funcs imx_ldb_connector_helper_funcs = …;
static const struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = …;
static int imx_ldb_get_clk(struct imx_ldb *ldb, int chno)
{ … }
static int imx_ldb_register(struct drm_device *drm,
struct imx_ldb_channel *imx_ldb_ch)
{ … }
struct imx_ldb_bit_mapping { … };
static const struct imx_ldb_bit_mapping imx_ldb_bit_mappings[] = …;
static u32 of_get_bus_format(struct device *dev, struct device_node *np)
{ … }
static struct bus_mux imx6q_lvds_mux[2] = …;
static const struct of_device_id imx_ldb_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, imx_ldb_dt_ids);
static int imx_ldb_panel_ddc(struct device *dev,
struct imx_ldb_channel *channel, struct device_node *child)
{ … }
static int imx_ldb_bind(struct device *dev, struct device *master, void *data)
{ … }
static const struct component_ops imx_ldb_ops = …;
static int imx_ldb_probe(struct platform_device *pdev)
{ … }
static void imx_ldb_remove(struct platform_device *pdev)
{ … }
static struct platform_driver imx_ldb_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;