#include <linux/export.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <video/imx-ipu-v3.h>
#include "ipu-prv.h"
#define DC_MAP_CONF_PTR(n) …
#define DC_MAP_CONF_VAL(n) …
#define DC_EVT_NF …
#define DC_EVT_NL …
#define DC_EVT_EOF …
#define DC_EVT_NFIELD …
#define DC_EVT_EOL …
#define DC_EVT_EOFIELD …
#define DC_EVT_NEW_ADDR …
#define DC_EVT_NEW_CHAN …
#define DC_EVT_NEW_DATA …
#define DC_EVT_NEW_ADDR_W_0 …
#define DC_EVT_NEW_ADDR_W_1 …
#define DC_EVT_NEW_CHAN_W_0 …
#define DC_EVT_NEW_CHAN_W_1 …
#define DC_EVT_NEW_DATA_W_0 …
#define DC_EVT_NEW_DATA_W_1 …
#define DC_EVT_NEW_ADDR_R_0 …
#define DC_EVT_NEW_ADDR_R_1 …
#define DC_EVT_NEW_CHAN_R_0 …
#define DC_EVT_NEW_CHAN_R_1 …
#define DC_EVT_NEW_DATA_R_0 …
#define DC_EVT_NEW_DATA_R_1 …
#define DC_WR_CH_CONF …
#define DC_WR_CH_ADDR …
#define DC_RL_CH(evt) …
#define DC_GEN …
#define DC_DISP_CONF1(disp) …
#define DC_DISP_CONF2(disp) …
#define DC_STAT …
#define WROD(lf) …
#define WRG …
#define WCLK …
#define SYNC_WAVE …
#define NULL_WAVE …
#define DC_GEN_SYNC_1_6_SYNC …
#define DC_GEN_SYNC_PRIORITY_1 …
#define DC_WR_CH_CONF_WORD_SIZE_8 …
#define DC_WR_CH_CONF_WORD_SIZE_16 …
#define DC_WR_CH_CONF_WORD_SIZE_24 …
#define DC_WR_CH_CONF_WORD_SIZE_32 …
#define DC_WR_CH_CONF_DISP_ID_PARALLEL(i) …
#define DC_WR_CH_CONF_DISP_ID_SERIAL …
#define DC_WR_CH_CONF_DISP_ID_ASYNC …
#define DC_WR_CH_CONF_FIELD_MODE …
#define DC_WR_CH_CONF_PROG_TYPE_NORMAL …
#define DC_WR_CH_CONF_PROG_TYPE_MASK …
#define DC_WR_CH_CONF_PROG_DI_ID …
#define DC_WR_CH_CONF_PROG_DISP_ID(i) …
#define IPU_DC_NUM_CHANNELS …
struct ipu_dc_priv;
enum ipu_dc_map { … };
struct ipu_dc { … };
struct ipu_dc_priv { … };
static void dc_link_event(struct ipu_dc *dc, int event, int addr, int priority)
{ … }
static void dc_write_tmpl(struct ipu_dc *dc, int word, u32 opcode, u32 operand,
int map, int wave, int glue, int sync, int stop)
{ … }
static int ipu_bus_format_to_map(u32 fmt)
{ … }
int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced,
u32 bus_format, u32 width)
{ … }
EXPORT_SYMBOL_GPL(…);
void ipu_dc_enable(struct ipu_soc *ipu)
{ … }
EXPORT_SYMBOL_GPL(…);
void ipu_dc_enable_channel(struct ipu_dc *dc)
{ … }
EXPORT_SYMBOL_GPL(…);
void ipu_dc_disable_channel(struct ipu_dc *dc)
{ … }
EXPORT_SYMBOL_GPL(…);
void ipu_dc_disable(struct ipu_soc *ipu)
{ … }
EXPORT_SYMBOL_GPL(…);
static void ipu_dc_map_config(struct ipu_dc_priv *priv, enum ipu_dc_map map,
int byte_num, int offset, int mask)
{ … }
static void ipu_dc_map_clear(struct ipu_dc_priv *priv, int map)
{ … }
struct ipu_dc *ipu_dc_get(struct ipu_soc *ipu, int channel)
{ … }
EXPORT_SYMBOL_GPL(…);
void ipu_dc_put(struct ipu_dc *dc)
{ … }
EXPORT_SYMBOL_GPL(…);
int ipu_dc_init(struct ipu_soc *ipu, struct device *dev,
unsigned long base, unsigned long template_base)
{ … }
void ipu_dc_exit(struct ipu_soc *ipu)
{ … }