#ifndef __KMB_DSI_H__
#define __KMB_DSI_H__
#include <drm/drm_encoder.h>
#include <drm/drm_mipi_dsi.h>
#define MIPI_TX_LANE_DATA_RATE_MBPS …
#define MIPI_TX_REF_CLK_KHZ …
#define MIPI_TX_CFG_CLK_KHZ …
#define MIPI_TX_BPP …
#define TEST_CODE_FSM_CONTROL …
#define TEST_CODE_MULTIPLE_PHY_CTRL …
#define TEST_CODE_PLL_PROPORTIONAL_CHARGE_PUMP_CTRL …
#define TEST_CODE_PLL_INTEGRAL_CHARGE_PUMP_CTRL …
#define TEST_CODE_PLL_VCO_CTRL …
#define TEST_CODE_PLL_GMP_CTRL …
#define TEST_CODE_PLL_PHASE_ERR_CTRL …
#define TEST_CODE_PLL_LOCK_FILTER …
#define TEST_CODE_PLL_UNLOCK_FILTER …
#define TEST_CODE_PLL_INPUT_DIVIDER …
#define TEST_CODE_PLL_FEEDBACK_DIVIDER …
#define PLL_FEEDBACK_DIVIDER_HIGH …
#define TEST_CODE_PLL_OUTPUT_CLK_SEL …
#define PLL_N_OVR_EN …
#define PLL_M_OVR_EN …
#define TEST_CODE_VOD_LEVEL …
#define TEST_CODE_PLL_CHARGE_PUMP_BIAS …
#define TEST_CODE_PLL_LOCK_DETECTOR …
#define TEST_CODE_HS_FREQ_RANGE_CFG …
#define TEST_CODE_PLL_ANALOG_PROG …
#define TEST_CODE_SLEW_RATE_OVERRIDE_CTRL …
#define TEST_CODE_SLEW_RATE_DDL_LOOP_CTRL …
#define TEST_CODE_SLEW_RATE_DDL_CYCLES …
#define PLL_N_MIN …
#define PLL_N_MAX …
#define PLL_M_MIN …
#define PLL_M_MAX …
#define PLL_FVCO_MAX …
#define TIMEOUT …
#define MIPI_TX_FRAME_GEN …
#define MIPI_TX_FRAME_GEN_SECTIONS …
#define MIPI_CTRL_VIRTUAL_CHANNELS …
#define MIPI_D_LANES_PER_DPHY …
#define MIPI_CTRL_2LANE_MAX_MC_FIFO_LOC …
#define MIPI_CTRL_4LANE_MAX_MC_FIFO_LOC …
#define MIPI_DPHY_D_LANES …
#define MIPI_DPHY_DEFAULT_BIT_RATES …
#define KMB_MIPI_DEFAULT_CLK …
#define KMB_MIPI_DEFAULT_CFG_CLK …
#define to_kmb_dsi(x) …
struct kmb_dsi { … };
enum mipi_ctrl_num { … };
enum mipi_dphy_num { … };
enum mipi_dir { … };
enum mipi_ctrl_type { … };
enum mipi_data_if { … };
enum mipi_data_mode { … };
enum mipi_dsi_video_mode { … };
enum mipi_dsi_blanking_mode { … };
enum mipi_dsi_eotp { … };
enum mipi_dsi_data_type { … };
enum mipi_tx_hs_tp_sel { … };
enum dphy_mode { … };
enum dphy_tx_fsm { … };
struct mipi_data_type_params { … };
struct mipi_tx_dsi_cfg { … };
struct mipi_tx_frame_section_cfg { … };
struct mipi_tx_frame_timing_cfg { … };
struct mipi_tx_frame_sect_phcfg { … };
struct mipi_tx_frame_cfg { … };
struct mipi_tx_ctrl_cfg { … };
struct mipi_ctrl_cfg { … };
static inline void kmb_write_mipi(struct kmb_dsi *kmb_dsi,
unsigned int reg, u32 value)
{ … }
static inline u32 kmb_read_mipi(struct kmb_dsi *kmb_dsi, unsigned int reg)
{ … }
static inline void kmb_write_bits_mipi(struct kmb_dsi *kmb_dsi,
unsigned int reg, u32 offset,
u32 num_bits, u32 value)
{ … }
static inline void kmb_set_bit_mipi(struct kmb_dsi *kmb_dsi,
unsigned int reg, u32 offset)
{ … }
static inline void kmb_clr_bit_mipi(struct kmb_dsi *kmb_dsi,
unsigned int reg, u32 offset)
{ … }
int kmb_dsi_host_bridge_init(struct device *dev);
struct kmb_dsi *kmb_dsi_init(struct platform_device *pdev);
void kmb_dsi_host_unregister(struct kmb_dsi *kmb_dsi);
int kmb_dsi_mode_set(struct kmb_dsi *kmb_dsi, struct drm_display_mode *mode,
int sys_clk_mhz, struct drm_atomic_state *old_state);
int kmb_dsi_map_mmio(struct kmb_dsi *kmb_dsi);
int kmb_dsi_clk_init(struct kmb_dsi *kmb_dsi);
int kmb_dsi_encoder_init(struct drm_device *dev, struct kmb_dsi *kmb_dsi);
#endif