linux/drivers/gpu/drm/bridge/imx/imx-ldb-helper.h

/* SPDX-License-Identifier: GPL-2.0+ */

/*
 * Copyright 2019,2020,2022 NXP
 */

#ifndef __IMX_LDB_HELPER__
#define __IMX_LDB_HELPER__

#include <linux/device.h>
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/regmap.h>

#include <drm/drm_atomic.h>
#include <drm/drm_bridge.h>
#include <drm/drm_device.h>
#include <drm/drm_encoder.h>
#include <drm/drm_modeset_helper_vtables.h>

#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 MAX_LDB_CHAN_NUM

enum ldb_channel_link_type {};

struct ldb;

struct ldb_channel {};

struct ldb {};

#define bridge_to_ldb_ch(b)

bool ldb_channel_is_single_link(struct ldb_channel *ldb_ch);
bool ldb_channel_is_split_link(struct ldb_channel *ldb_ch);

int ldb_bridge_atomic_check_helper(struct drm_bridge *bridge,
				   struct drm_bridge_state *bridge_state,
				   struct drm_crtc_state *crtc_state,
				   struct drm_connector_state *conn_state);

void ldb_bridge_mode_set_helper(struct drm_bridge *bridge,
				const struct drm_display_mode *mode,
				const struct drm_display_mode *adjusted_mode);

void ldb_bridge_enable_helper(struct drm_bridge *bridge);

void ldb_bridge_disable_helper(struct drm_bridge *bridge);

int ldb_bridge_attach_helper(struct drm_bridge *bridge,
			     enum drm_bridge_attach_flags flags);

int ldb_init_helper(struct ldb *ldb);

int ldb_find_next_bridge_helper(struct ldb *ldb);

void ldb_add_bridge_helper(struct ldb *ldb,
			   const struct drm_bridge_funcs *bridge_funcs);

void ldb_remove_bridge_helper(struct ldb *ldb);

#endif /* __IMX_LDB_HELPER__ */