summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/lcdif-imx233.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/lcdif-imx233.h')
-rw-r--r--firmware/target/arm/imx233/lcdif-imx233.h46
1 files changed, 38 insertions, 8 deletions
diff --git a/firmware/target/arm/imx233/lcdif-imx233.h b/firmware/target/arm/imx233/lcdif-imx233.h
index 1aee72bce4..dabc1f4c71 100644
--- a/firmware/target/arm/imx233/lcdif-imx233.h
+++ b/firmware/target/arm/imx233/lcdif-imx233.h
@@ -28,19 +28,49 @@
28 28
29#include "regs/regs-lcdif.h" 29#include "regs/regs-lcdif.h"
30 30
31void imx233_lcdif_enable_underflow_recover(bool enable); 31typedef void (*lcdif_irq_cb_t)(void);
32void imx233_lcdif_enable_bus_master(bool enable); 32
33void imx233_lcdif_enable(bool enable); 33void imx233_lcdif_enable(bool enable);
34void imx233_lcdif_reset(void);// reset lcdif block 34void imx233_lcdif_init(void);// reset lcdif block
35void imx233_lcdif_reset_lcd(bool enable);// set/clr reset line
35void imx233_lcdif_set_timings(unsigned data_setup, unsigned data_hold, 36void imx233_lcdif_set_timings(unsigned data_setup, unsigned data_hold,
36 unsigned cmd_setup, unsigned cmd_hold); 37 unsigned cmd_setup, unsigned cmd_hold);
37void imx233_lcdif_set_lcd_databus_width(unsigned width);
38void imx233_lcdif_set_word_length(unsigned word_length); 38void imx233_lcdif_set_word_length(unsigned word_length);
39void imx233_lcdif_set_byte_packing_format(unsigned byte_packing);
40void imx233_lcdif_set_data_format(bool data_fmt_16, bool data_fmt_18, bool data_fmt_24);
41unsigned imx233_lcdif_enable_irqs(unsigned irq_bm); /* return old mask */
42void imx233_lcdif_wait_ready(void); 39void imx233_lcdif_wait_ready(void);
43void imx233_lcdif_pio_send(bool data_mode, unsigned len, uint32_t *buf); 40void imx233_lcdif_set_data_swizzle(unsigned swizzle);
41/* This function assumes the data is packed in 8/16-bit mode and unpacked in
42 * 18-bit mode.
43 * WARNING: doesn't support 24-bit mode
44 * WARNING: count must be lower than or equal to 0xffff
45 * Note that this function might affect the byte packing format and bus master.
46 * Note that count is number of pixels, NOT the number of bytes ! */
47void imx233_lcdif_pio_send(bool data_mode, unsigned count, void *buf);
44void imx233_lcdif_dma_send(void *buf, unsigned width, unsigned height); 48void imx233_lcdif_dma_send(void *buf, unsigned width, unsigned height);
49void imx233_lcdif_setup_system_pins(unsigned bus_width);
50void imx233_lcdif_setup_dotclk_pins(unsigned bus_width, bool have_enable);
51
52#if IMX233_SUBTARGET >= 3700
53void imx233_lcdif_set_byte_packing_format(unsigned byte_packing);
54/* low-level function */
55void imx233_lcdif_setup_dotclk(unsigned v_pulse_width, unsigned v_period,
56 unsigned v_wait_cnt, unsigned v_active, unsigned h_pulse_width,
57 unsigned h_period, unsigned h_wait_cnt, unsigned h_active, bool enable_present);
58/* high-level function */
59void imx233_lcdif_setup_dotclk_ex(unsigned v_pulse_width, unsigned v_back_porch,
60 unsigned v_front_porch, unsigned h_pulse_width, unsigned h_back_porch,
61 unsigned h_front_porch, unsigned width, unsigned height, unsigned clk_per_pix,
62 bool enable_present);
63void imx233_lcdif_enable_frame_done_irq(bool en);
64void imx233_lcdif_set_frame_done_cb(lcdif_irq_cb_t cb);
65void imx233_lcdif_enable_vsync_edge_irq(bool en);
66void imx233_lcdif_set_vsync_edge_cb(lcdif_irq_cb_t cb);
67void imx233_lcdif_enable_sync_signals(bool en);
68#endif
69
70#if IMX233_SUBTARGET >= 3780
71void imx233_lcdif_enable_underflow_recover(bool enable);
72void imx233_lcdif_enable_bus_master(bool enable);
73void imx233_lcdif_set_lcd_databus_width(unsigned width);
74#endif
45 75
46#endif /* __LCDIF_IMX233_H__ */ 76#endif /* __LCDIF_IMX233_H__ */