summaryrefslogtreecommitdiff
path: root/sys/dev/pci/igmareg.h
blob: 4d4292a8cac60b70d0a671856d98359795ed1038 (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/*	$NetBSD: igmareg.h,v 1.1 2014/01/21 14:52:07 mlelstv Exp $	*/

/*
 * Copyright (c) 2014 Michael van Elst
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef IGMAREG_H
#define IGMAREG_H

/* North display */

#define CPU_VGA_CNTRL   0x41000
#define PCH_VGA_CNTRL   0x71400
#define   VGA_CNTRL_DISABLE     (1L << 31)
#define   VGA_2X_MODE           (1L << 29)
#define   VGA_PIPE_B_SELECT     (1L << 29)

#define PF_WINPOS(i)    (0x68070+i*0x800)
#define   PF_WINPOS_VAL(x,y) ((x) << 16 | (y))
#define PF_WINSZ(i)     (0x68074+i*0x800)
#define   PF_WINSZ_VAL(w,h)      ((w) << 16 | (h))
#define   PF_WINSZ_GET_WIDTH(r)  (((r) >> 16) & 0x1fff)
#define   PF_WINSZ_GET_HEIGHT(r) (((r) >>  0) & 0xfff)
#define PF_CTRL(i)      (0x68080+i*0x800)
#define PF_CTRL_I965    (0x61230)
#define   PF_ENABLE            (1L << 31)

#define PIPE_HTOTAL(i)   (0x60000+i*0x1000)
#define   PIPE_HOTAL_VAL(t,a)       (((t)-1) << 16 | ((a)-1))
#define   PIPE_HTOTAL_GET_TOTAL(r)  ((((r) >> 16) & 0x1fff)+1)
#define   PIPE_HTOTAL_GET_ACTIVE(r) ((((r) >> 0) & 0x1fff)+1)
#define PIPE_HBLANK(i)   (0x60004+i*0x1000)
#define   PIPE_HBLANK_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define PIPE_HSYNC(i)    (0x60008+i*0x1000)
#define   PIPE_HSYNC_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define PIPE_VTOTAL(i)   (0x6000c+i*0x1000)
#define   PIPE_VTOTAL_VAL(t,a)      (((t)-1) << 16 | ((a)-1))
#define   PIPE_VTOTAL_GET_TOTAL(r)  ((((r) >> 16) & 0xfff)+1)
#define   PIPE_VTOTAL_GET_ACTIVE(r) ((((r) >> 0) & 0xfff)+1)
#define PIPE_VBLANK(i)   (0x60010+i*0x1000)
#define   PIPE_VBLANK_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define PIPE_VSYNC(i)    (0x60014+i*0x1000)
#define   PIPE_VSYNC_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define PIPE_SRCSZ(i)    (0x6001c+i*0x1000)
#define   PIPE_SRCSZ_VAL(w,h) (((w)-1) << 16 | ((h)-1))
#define PIPE_VSHIFT(i)   (0x60028+i*0x1000)
#define PIPE_DATAM1(i)   (0x60030+i*0x1000)
#define PIPE_DATAM2(i)   (0x60034+i*0x1000)
#define PIPE_DATAN1(i)   (0x60038+i*0x1000)
#define PIPE_DATAN2(i)   (0x6003c+i*0x1000)
#define PIPE_DPLINKM1(i) (0x60040+i*0x1000)
#define PIPE_DPLINKM2(i) (0x60044+i*0x1000)
#define PIPE_DPLINKN1(i) (0x60048+i*0x1000)
#define PIPE_DPLINKN2(i) (0x6004c+i*0x1000)
#define PIPE_CONF(i)     (0x70080+i*0x1000)
#define   PIPE_CONF_ENABLE     (1L << 31)
#define   PIPE_CONF_STATE      (1L << 30)
#define   PIPE_CONF_GAMMA8     (0L << 24)
#define   PIPE_CONF_GAMMA10    (1L << 24)
#define   PIPE_CONF_GAMMA12    (2L << 24)
#define   PIPE_CONF_PFPD       (0L << 21)
#define   PIPE_CONF_PFID       (1L << 21)
#define   PIPE_CONF_IFID       (3L << 21)
#define   PIPE_CONF_IFID_DBL   (4L << 21)
#define   PIPE_CONF_PFID_DBL   (5L << 21)
#define   PIPE_CONF_POWERSAVE  (1L << 20)
#define   PIPE_CONF_MSA1       (0L << 18)
#define   PIPE_CONF_MSA2       (1L << 18)
#define   PIPE_CONF_MSA3       (2L << 18)
#define   PIPE_CONF_MSA4       (3L << 18)
#define   PIPE_CONF_ROT0       (0L << 14)
#define   PIPE_CONF_ROT90      (1L << 14)
#define   PIPE_CONF_ROT180     (2L << 14)
#define   PIPE_CONF_ROT270     (3L << 14)
#define   PIPE_CONF_CE         (1L << 13)
#define   PIPE_CONF_8BPP       (0L << 5)
#define   PIPE_CONF_6BPP       (2L << 5)
#define   PIPE_CONF_DITHER     (4L << 2)
#define   PIPE_CONF_DITHERST1  (5L << 2)
#define   PIPE_CONF_DITHERST2  (6L << 2)
#define   PIPE_CONF_DITHERT    (7L << 2)
#define CUR_CNTR(i)      (0x70080+i*0x1000)
#define CUR_BASE(i)      (0x70084+i*0x1000)
#define PRI_CTRL(i)      (0x70180+i*0x1000)
#define   PRI_CTRL_ENABLE     (1L << 31)
#define   PRI_CTRL_GAMMA      (1L << 30)
#define   PRI_CTRL_IND8       (2L << 26)
#define   PRI_CTRL_BGR565     (5L << 26)
#define   PRI_CTRL_BGR        (6L << 26)
#define   PRI_CTRL_RGB10      (8L << 26)
#define   PRI_CTRL_BGR10      (10L << 26)
#define   PRI_CTRL_RGBFP      (12L << 26)
#define   PRI_CTRL_RGB        (14L << 26)
#define   PRI_CTRL_PIXFMTMSK  (31L << 26)
#define   PRI_CTRL_CSC        (1L << 24)
#define   PRI_CTRL_ROT180     (1L << 15)
#define   PRI_CTRL_NOTRICKLE  (1L << 14)
#define   PRI_CTRL_TILED      (1L << 10)
#define   PRI_CTRL_ASYNC      (1L << 9)
#define PRI_LINOFF(i)    (0x70184+i*0x1000)
#define PRI_STRIDE(i)    (0x70188+i*0x1000)
#define PRI_SURF(i)      (0x7019c+i*0x1000)
#define PRI_TILEOFF(i)   (0x701a4+i*0x1000)
#define FDI_TX_CTL(i)    (0x60100+i*0x1000)

#define FW_BLC_SELF     (0x20e0)
#define FW_BLC_SELF_EN  (1L << 15)

/* South display */

#define DREF_CTL        (0xc6200)
#define RAWCLK_FREQ     (0xc6204)
#define DPLL_SEL        (0xc7000)

#define DAC_CTL         (0xe1100)
#define HDMI_CTL        (0xe1140)
#define HDMI_BUF_CTL    (0xfd024)
#define LVDS_CTL        (0xe1180)
#define PCH_DP_CTL(i)	(0xe4100+i*0x100)

#define PCH_DPLL_CTL(i)    (0xc6014+i*0x0008)
#define PCH_DPLL_FP0(i)    (0xc6040+i*0x0008)
#define PCH_DPLL_FP1(i)    (0xc6044+i*0x0008)
#define TRANS_HTOTAL(i)    (0xe0000+i*0x1000)
#define   TRANS_HOTAL_VAL(t,a) (((t)-1) << 16 | ((a)-1))
#define TRANS_HBLANK(i)    (0xe0004+i*0x1000)
#define   TRANS_HBLANK_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define TRANS_HSYNC(i)     (0xe0008+i*0x1000)
#define   TRANS_HSYNC_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define TRANS_VTOTAL(i)    (0xe000c+i*0x1000)
#define   TRANS_VTOTAL_VAL(t,a) (((t)-1) << 16 | ((a)-1))
#define TRANS_VBLANK(i)    (0xe0010+i*0x1000)
#define   TRANS_VBLANK_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define TRANS_VSYNC(i)     (0xe0014+i*0x1000)
#define   TRANS_VSYNC_VAL(e,s) (((e)-1) << 16 | ((s)-1))
#define TRANS_CONF(i)      (0xf0008+i*0x1000)
#define FDI_RX_CTL(i)      (0xf000c+i*0x1000)

#define OLD_BLC_PWM_CTL2   (0x61250)
#define OLD_BLC_PWM_CTL    (0x61254)
#define   BLM_PWM_ENABLE          (1L << 31)
#define   BLM_PIPE(p)             ((p) << 29)
#define   BLM_PHASEIN_INTST       (1L << 26)
#define   BLM_PHASEIN_ENABLE      (1L << 25)
#define   BLM_PHASEIN_INTEN       (1L << 24)
#define   BLM_PHASEIN_TIME(t)     ((t) << 16)
#define   BLM_PHASEIN_COUNT(c)    ((c) << 8)
#define   BLM_PHASEIN_INCR(i)     ((i) << 0)
#define CPU_BLC_PWM_CTL2   (0x48250)
#define CPU_BLC_PWM_CTL    (0x48254)
#define HSW_BLC_PWM_CTL    (0x48350)
#define   BACKLIGHT_VAL(f,l,v)    ((f) << 17 | (l) << 16 | (v))
#define   BACKLIGHT_GET_FREQ(r)   (((r) >> 17) & 0x7fff)
#define   BACKLIGHT_GET_LEGACY(r) (((r) >> 16) & 0x1)
#define   BACKLIGHT_GET_CYCLE(r)  (((r) >>  0) & 0xffff)

#define GMBUS_NUM_PORTS    6
#define OLD_GPIOA          (0x5010)
#define OLD_GPIOB          (0x5014)
#define OLD_GPIOC          (0x5018)
#define OLD_GPIOD          (0x501c)
#define OLD_GPIOE          (0x5020)
#define OLD_GPIOF          (0x5024)
#define PCH_GPIOA          (0xc5010)
#define PCH_GPIOB          (0xc5014)
#define PCH_GPIOC          (0xc5018)
#define PCH_GPIOD          (0xc501c)
#define PCH_GPIOE          (0xc5020)
#define PCH_GPIOF          (0xc5024)
#define   GPIO_CLOCK_DIR_MASK            (1 << 0)
#define   GPIO_CLOCK_DIR_IN              (0 << 1)
#define   GPIO_CLOCK_DIR_OUT             (1 << 1)
#define   GPIO_CLOCK_VAL_MASK            (1 << 2)
#define   GPIO_CLOCK_VAL_OUT             (1 << 3)
#define   GPIO_CLOCK_VAL_IN              (1 << 4)
#define   GPIO_CLOCK_PULLUP_DISABLE      (1 << 5)
#define   GPIO_DATA_DIR_MASK             (1 << 8)  
#define   GPIO_DATA_DIR_IN               (0 << 9)
#define   GPIO_DATA_DIR_OUT              (1 << 9)
#define   GPIO_DATA_VAL_MASK             (1 << 10)
#define   GPIO_DATA_VAL_OUT              (1 << 11)
#define   GPIO_DATA_VAL_IN               (1 << 12)
#define   GPIO_DATA_PULLUP_DISABLE       (1 << 13)

#endif