GNU Linux-libre 4.9.309-gnu1
[releases.git] / drivers / staging / sm750fb / ddk750_display.h
1 #ifndef DDK750_DISPLAY_H__
2 #define DDK750_DISPLAY_H__
3
4 /* panel path select
5  *      80000[29:28]
6  */
7
8 #define PNL_2_OFFSET 0
9 #define PNL_2_MASK (3 << PNL_2_OFFSET)
10 #define PNL_2_USAGE     (PNL_2_MASK << 16)
11 #define PNL_2_PRI       ((0 << PNL_2_OFFSET) | PNL_2_USAGE)
12 #define PNL_2_SEC       ((2 << PNL_2_OFFSET) | PNL_2_USAGE)
13
14
15 /* primary timing & plane enable bit
16  *      1: 80000[8] & 80000[2] on
17  *      0: both off
18  */
19 #define PRI_TP_OFFSET 4
20 #define PRI_TP_MASK BIT(PRI_TP_OFFSET)
21 #define PRI_TP_USAGE (PRI_TP_MASK << 16)
22 #define PRI_TP_ON ((0x1 << PRI_TP_OFFSET) | PRI_TP_USAGE)
23 #define PRI_TP_OFF ((0x0 << PRI_TP_OFFSET) | PRI_TP_USAGE)
24
25
26 /* panel sequency status
27  *      80000[27:24]
28  */
29 #define PNL_SEQ_OFFSET 6
30 #define PNL_SEQ_MASK BIT(PNL_SEQ_OFFSET)
31 #define PNL_SEQ_USAGE (PNL_SEQ_MASK << 16)
32 #define PNL_SEQ_ON (BIT(PNL_SEQ_OFFSET) | PNL_SEQ_USAGE)
33 #define PNL_SEQ_OFF ((0 << PNL_SEQ_OFFSET) | PNL_SEQ_USAGE)
34
35 /* dual digital output
36  *      80000[19]
37  */
38 #define DUAL_TFT_OFFSET 8
39 #define DUAL_TFT_MASK BIT(DUAL_TFT_OFFSET)
40 #define DUAL_TFT_USAGE (DUAL_TFT_MASK << 16)
41 #define DUAL_TFT_ON (BIT(DUAL_TFT_OFFSET) | DUAL_TFT_USAGE)
42 #define DUAL_TFT_OFF ((0 << DUAL_TFT_OFFSET) | DUAL_TFT_USAGE)
43
44 /* secondary timing & plane enable bit
45  *      1:80200[8] & 80200[2] on
46  *      0: both off
47  */
48 #define SEC_TP_OFFSET 5
49 #define SEC_TP_MASK BIT(SEC_TP_OFFSET)
50 #define SEC_TP_USAGE (SEC_TP_MASK << 16)
51 #define SEC_TP_ON  ((0x1 << SEC_TP_OFFSET) | SEC_TP_USAGE)
52 #define SEC_TP_OFF ((0x0 << SEC_TP_OFFSET) | SEC_TP_USAGE)
53
54 /* crt path select
55  *      80200[19:18]
56  */
57 #define CRT_2_OFFSET 2
58 #define CRT_2_MASK (3 << CRT_2_OFFSET)
59 #define CRT_2_USAGE (CRT_2_MASK << 16)
60 #define CRT_2_PRI ((0x0 << CRT_2_OFFSET) | CRT_2_USAGE)
61 #define CRT_2_SEC ((0x2 << CRT_2_OFFSET) | CRT_2_USAGE)
62
63
64 /* DAC affect both DVI and DSUB
65  *      4[20]
66  */
67 #define DAC_OFFSET 7
68 #define DAC_MASK BIT(DAC_OFFSET)
69 #define DAC_USAGE (DAC_MASK << 16)
70 #define DAC_ON ((0x0 << DAC_OFFSET) | DAC_USAGE)
71 #define DAC_OFF ((0x1 << DAC_OFFSET) | DAC_USAGE)
72
73 /* DPMS only affect D-SUB head
74  *      0[31:30]
75  */
76 #define DPMS_OFFSET 9
77 #define DPMS_MASK (3 << DPMS_OFFSET)
78 #define DPMS_USAGE (DPMS_MASK << 16)
79 #define DPMS_OFF ((3 << DPMS_OFFSET) | DPMS_USAGE)
80 #define DPMS_ON ((0 << DPMS_OFFSET) | DPMS_USAGE)
81
82
83
84 /* LCD1 means panel path TFT1  & panel path DVI (so enable DAC)
85  * CRT means crt path DSUB
86  */
87 typedef enum _disp_output_t {
88         do_LCD1_PRI = PNL_2_PRI | PRI_TP_ON | PNL_SEQ_ON | DAC_ON,
89         do_LCD1_SEC = PNL_2_SEC | SEC_TP_ON | PNL_SEQ_ON | DAC_ON,
90         do_LCD2_PRI = CRT_2_PRI | PRI_TP_ON | DUAL_TFT_ON,
91         do_LCD2_SEC = CRT_2_SEC | SEC_TP_ON | DUAL_TFT_ON,
92         /* do_DSUB_PRI = CRT_2_PRI | PRI_TP_ON | DPMS_ON|DAC_ON,
93          * do_DSUB_SEC = CRT_2_SEC | SEC_TP_ON | DPMS_ON|DAC_ON,
94          */
95         do_CRT_PRI = CRT_2_PRI | PRI_TP_ON | DPMS_ON | DAC_ON,
96         do_CRT_SEC = CRT_2_SEC | SEC_TP_ON | DPMS_ON | DAC_ON,
97 }
98 disp_output_t;
99
100 void ddk750_setLogicalDispOut(disp_output_t);
101
102 #endif