2 drivers/video/rockchip/transmitter/mipi_dsi.h
7 #ifdef CONFIG_MIPI_DSI_FT
8 #include "..\..\common\config.h"
13 #include <linux/of_device.h>
14 #include <linux/of_gpio.h>
15 #include <dt-bindings/gpio/gpio.h>
17 #ifdef CONFIG_RK_3288_DSI_UBOOT
18 #include <linux/list.h>
23 #define DTYPE_DCS_SWRITE_0P 0x05
24 #define DTYPE_DCS_SWRITE_1P 0x15
25 #define DTYPE_DCS_LWRITE 0x39
26 #define DTYPE_GEN_LWRITE 0x29
27 #define DTYPE_GEN_SWRITE_2P 0x23
28 #define DTYPE_GEN_SWRITE_1P 0x13
29 #define DTYPE_GEN_SWRITE_0P 0x03
31 //command transmit mode
36 #define DATA_TYPE_DCS 0x00
37 #define DATA_TYPE_GEN 0x01
41 #define VM_NBMWSP 0x00 //Non burst mode with sync pulses
42 #define VM_NBMWSE 0x01 //Non burst mode with sync events
43 #define VM_BM 0x02 //Burst mode
46 #define VPF_16BPP 0x00
47 #define VPF_18BPP 0x01 //packed
48 #define VPF_18BPPL 0x02 //loosely packed
49 #define VPF_24BPP 0x03
52 #define dcs_enter_idle_mode 0x39
53 #define dcs_enter_invert_mode 0x21
54 #define dcs_enter_normal_mode 0x13
55 #define dcs_enter_partial_mode 0x12
56 #define dcs_enter_sleep_mode 0x10
57 #define dcs_exit_idle_mode 0x38
58 #define dcs_exit_invert_mode 0x20
59 #define dcs_exit_sleep_mode 0x11
60 #define dcs_get_address_mode 0x0b
61 #define dcs_get_blue_channel 0x08
62 #define dcs_get_diagnostic_result 0x0f
63 #define dcs_get_display_mode 0x0d
64 #define dcs_get_green_channel 0x07
65 #define dcs_get_pixel_format 0x0c
66 #define dcs_get_power_mode 0x0a
67 #define dcs_get_red_channel 0x06
68 #define dcs_get_scanline 0x45
69 #define dcs_get_signal_mode 0x0e
71 #define dcs_read_DDB_continue 0xa8
72 #define dcs_read_DDB_start 0xa1
73 #define dcs_read_memory_continue 0x3e
74 #define dcs_read_memory_start 0x2e
75 #define dcs_set_address_mode 0x36
76 #define dcs_set_column_address 0x2a
77 #define dcs_set_display_off 0x28
78 #define dcs_set_display_on 0x29
79 #define dcs_set_gamma_curve 0x26
80 #define dcs_set_page_address 0x2b
81 #define dcs_set_partial_area 0x30
82 #define dcs_set_pixel_format 0x3a
83 #define dcs_set_scroll_area 0x33
84 #define dcs_set_scroll_start 0x37
85 #define dcs_set_tear_off 0x34
86 #define dcs_set_tear_on 0x35
87 #define dcs_set_tear_scanline 0x44
88 #define dcs_soft_reset 0x01
89 #define dcs_write_LUT 0x2d
90 #define dcs_write_memory_continue 0x3c
91 #define dcs_write_memory_start 0x2c
99 typedef signed char s8;
100 typedef unsigned char u8;
102 typedef signed short s16;
103 typedef unsigned short u16;
105 typedef signed int s32;
106 typedef unsigned int u32;
108 typedef signed long s64;
109 typedef unsigned long u64;
114 #define OLD_RK_IOMUX 0
136 int enable_pin; //gpio that control power
145 int (*enable)(void *);
146 int (*disable)(void *);
150 int reset_pin; //gpio that control reset
157 u32 time_before_reset; //ms
158 u32 time_after_reset;
160 int (*do_reset)(void *);
165 struct reset_t reset;
167 struct power_t vddio;
168 struct power_t vdd_mipi;
169 struct i2c_client *client;
170 int (*gpio_init)(void *);
171 int (*gpio_deinit)(void *);
172 int (*power_up)(void);
173 int (*power_down)(void);
179 struct reset_t reset;
181 struct power_t vddio;
182 struct power_t vdd_mipi;
185 int (*gpio_init)(void *);
186 int (*gpio_deinit)(void *);
187 int (*power_up)(void);
188 int (*power_down)(void);
191 struct mipi_dsi_ops {
195 int (*get_id)(void *);
196 int (*dsi_init)(void *, u32 n);
197 int (*dsi_set_regs)(void *, void *, u32 n);
198 int (*dsi_enable_video_mode)(void *, u32 enable);
199 int (*dsi_enable_command_mode)(void *, u32 enable);
200 int (*dsi_enable_hs_clk)(void *, u32 enable);
201 int (*dsi_send_dcs_packet)(void *, unsigned char *, u32 n);
202 int (*dsi_read_dcs_packet)(void *, unsigned char *, u32 n);
203 int (*dsi_send_packet)(void *, unsigned char *, u32 n);
204 int (*dsi_is_enable)(void *, u32 enable);
205 int (*dsi_is_active)(void *);
206 int (*power_up)(void *);
207 int (*power_down)(void *);
210 /* Screen description */
211 struct mipi_dsi_screen {
242 struct rk_screen *screen;
244 /* Operation function*/
246 int (*standby)(u8 enable);
250 #define INVALID_GPIO -1
262 struct mipi_dcs_cmd_ctr_list {
263 struct list_head list;
264 struct dcs_cmd dcs_cmd;
286 struct list_head cmdlist_head;
289 int register_dsi_ops(unsigned int id, struct mipi_dsi_ops *ops);
290 int del_dsi_ops(struct mipi_dsi_ops *ops);
291 int dsi_power_up(unsigned int id);
292 int dsi_power_off(unsigned int id);
293 int dsi_probe_current_chip(unsigned int id);
294 int dsi_init(unsigned int id, u32 n);
295 int dsi_is_active(unsigned int id);
296 int dsi_enable_video_mode(unsigned int id, u32 enable);
297 int dsi_enable_command_mode(unsigned int id, u32 enable);
298 int dsi_enable_hs_clk(unsigned int id, u32 enable);
299 int dsi_set_virtual_channel(unsigned int id, u32 channel);
301 int dsi_set_regs(unsigned int id, void *array, u32 n);
302 int dsi_send_dcs_packet(unsigned int id, unsigned char *packet, u32 n);
303 int dsi_read_dcs_packet(unsigned int id, unsigned char *packet, u32 n);
304 int dsi_send_packet(unsigned int id, unsigned char *packet, u32 n);
305 int dsi_is_enable(unsigned int id, u32 enable);
307 #endif /* end of MIPI_DSI_H_ */