aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/hisilicon/hi3620_fb.h
blob: 676ff8e2e8f74b4aac21dbd9b0bb9c45ca16f098 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#ifndef __HI3620FB_H
#define __HI3620FB_H

#define EDC_ID				0x000

/* Channel 1 */
#define	EDC_GRAPH_CHAN_ADDR		0x004
#define EDC_GRAPH_CHAN_STRIDE		0x00c
#define EDC_GRAPH_CHAN_XY		0x010
#define EDC_GRAPH_CHAN_SIZE		0x014
#define EDC_GRAPH_CHAN_CTRL		0x018
#define EDC_GRAPH_CHAN_CKEY_MIN		0x01c
#define EDC_GRAPH_CHAN_CKEY_MAX		0x020

/* Channel 2 */
#define EDC_VIDEO_CHAN_ADDR		0x024
#define EDC_VIDEO_CHAN_STRIDE		0x02c
#define EDC_VIDEO_CHAN_XY		0x030
#define EDC_VIDEO_CHAN_SIZE		0x034
#define EDC_VIDEO_CHAN_CTRL		0x038
#define EDC_VIDEO_CHAN_CKEY_MIN		0x03c
#define EDC_VIDEO_CHAN_CKEY_MAX		0x040

#define EDC_GRAPH_CHAN_CTRL_EN		(1 << 24)
#define EDC_VIDEO_CHAN_CTRL_EN		(1 << 22)
#define EDC_CHAN_CTRL_BGR		(1 << 19)

#define EDC_DISP_CTL			0x094
#define EDC_DISP_DPD			0x098
#define	EDC_STS				0x09c
#define	EDC_INTS			0x0a0
#define EDC_INTE			0x0a4

#define LDI_HRZ_CTRL0			0x800
#define LDI_HRZ_CTRL1			0x804
#define LDI_VRT_CTRL0			0x808
#define LDI_VRT_CTRL1			0x80c
#define LDI_PLR_CTRL			0x810
#define LDI_DSP_SIZE			0x814
#define LDI_INT_EN			0x81c
#define LDI_CTRL			0x820
#define LDI_ORG_INT			0x824
#define LDI_MSK_INT			0x828
#define LDI_INT_CLR			0x82c
#define LDI_WORK_MODE			0x830
#define LDI_HDMI_DSI_GT			0x834

#define DSI_CMD_MOD_CTRL		0x83c
#define DSI_TE_CTRL			0x840
#define DSI_TE_HS_NUM			0x844
#define	DSI_TE_HS_WD			0x848
#define DSI_TE_VS_WD			0x84c

#define DSI_PWR_UP			0x904
#define DSI_CLKMGR_CFG			0x908
#define DSI_DPI_CFG			0x90c
#define DSI_PCKHDL_CFG			0x918
#define DSI_VID_MODE_CFG		0x91c
#define DSI_VID_PKT_CFG			0x920
#define DSI_CMD_MODE_CFG		0x924
#define DSI_TMR_LINE_CFG		0x928
#define DSI_VTIMING_CFG			0x92c
#define DSI_PHY_TMR_CFG			0x930
#define DSI_GEN_HDR			0x934
#define DSI_GEN_PLD_DATA		0x938
#define DSI_ERROR_ST0			0x944
#define DSI_ERROR_ST1			0x948
#define DSI_ERROR_MSK0			0x94c
#define DSI_ERROR_MSK1			0x950
#define DSI_PHY_RSTZ			0x954
#define DSI_PHY_IF_CFG			0x958
#define DSI_PHY_IF_CTRL			0x95c
#define DSI_PHY_TST_CTRL0		0x964
#define DSI_PHY_TST_CTRL1		0x968

/* bits field of EDC_DISP_CTL register */
#define EDC_CFG_OK			(1 << 1)

/* bits field of LDI_PLT_CTRL register */
#define LDI_POLARITY_MASK		0xf
#define LDI_DATAEN_POLARITY		(1 << 3)
#define LDI_PIXELCLK_POLARITY		(1 << 2)
#define LDI_HSYNC_POLARITY		(1 << 1)
#define LDI_VSYNC_POLARITY		(1 << 0)

/* bits field of DSI_DPI_CFG register */
#define DSI_DPI_POLARITY_MASK		(0x1f << 5)
#define DSI_DPI_COLORM_POLARITY		(1 << 9)
#define DSI_DPI_SHUTD_POLARITY		(1 << 8)
#define DSI_DPI_HSYNC_POLARITY		(1 << 7)
#define DSI_DPI_VSYNC_POLARITY		(1 << 6)
#define DSI_DPI_DATAEN_POLARITY		(1 << 5)

enum {
	IMG_PIXEL_FORMAT_ARGB1555 = 0,
	IMG_PIXEL_FORMAT_RGB555,
	IMG_PIXEL_FORMAT_RGB565,
	IMG_PIXEL_FORMAT_RGB888,
	IMG_PIXEL_FORMAT_ARGB8888,
};

struct hi3620fb_info {
	struct fb_info		*fb;
	struct device		*dev;
	void __iomem		*reg_base;
	struct clk		*clk_ldi;
	struct clk		*clk_edc;
	struct clk		*clk_dsi;
	struct clk		*clk_lane;
	int			irq_edc;
	int			irq_ldi;
	int			irq_dsi;
	struct regulator	*vedc;
	dma_addr_t		fb_start_dma;
	int			pix_fmt;
	int			dsi_rate;	/* dsi bit clock rate */
	const char		*mipi_mode_name;
	int			lane_cnt;
	int			color_mode;
};

extern int hi3620_mipi_enable(struct hi3620fb_info *info);
extern int hi3620_mipi_disable(struct hi3620fb_info *info);
extern int send_generic_packet(u8 *cmd, int len);
#endif	/* __HI3620FB_H */