linux/drivers/gpu/drm/imx/ipuv3/imx-ldb.c

// SPDX-License-Identifier: GPL-2.0+
/*
 * i.MX drm driver - LVDS display bridge
 *
 * Copyright (C) 2012 Sascha Hauer, Pengutronix
 */

#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] =;

/*
 * For a device declaring compatible = "fsl,imx6q-ldb", "fsl,imx53-ldb",
 * of_match_device will walk through this list and take the first entry
 * matching any of its compatible values. Therefore, the more generic
 * entries (in this case fsl,imx53-ldb) need to be ordered last.
 */
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();