162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci#ifndef TRIDENTFB_DEBUG
462306a36Sopenharmony_ci#define TRIDENTFB_DEBUG 0
562306a36Sopenharmony_ci#endif
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#if TRIDENTFB_DEBUG
862306a36Sopenharmony_ci#define debug(f, a...)	printk("%s:" f,  __func__ , ## a);
962306a36Sopenharmony_ci#else
1062306a36Sopenharmony_ci#define debug(f, a...)
1162306a36Sopenharmony_ci#endif
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define output(f, a...) pr_info("tridentfb: " f, ## a)
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#define Kb	(1024)
1662306a36Sopenharmony_ci#define Mb	(Kb*Kb)
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* PCI IDS of supported cards temporarily here */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#define CYBER9320	0x9320
2162306a36Sopenharmony_ci#define CYBER9388	0x9388
2262306a36Sopenharmony_ci#define CYBER9382	0x9382		/* the real PCI id for this is 9660 */
2362306a36Sopenharmony_ci#define CYBER9385	0x9385		/* ditto */
2462306a36Sopenharmony_ci#define CYBER9397	0x9397
2562306a36Sopenharmony_ci#define CYBER9397DVD	0x939A
2662306a36Sopenharmony_ci#define CYBER9520	0x9520
2762306a36Sopenharmony_ci#define CYBER9525DVD	0x9525
2862306a36Sopenharmony_ci#define TGUI9440	0x9440
2962306a36Sopenharmony_ci#define TGUI9660	0x9660
3062306a36Sopenharmony_ci#define PROVIDIA9685	0x9685
3162306a36Sopenharmony_ci#define IMAGE975	0x9750
3262306a36Sopenharmony_ci#define IMAGE985	0x9850
3362306a36Sopenharmony_ci#define BLADE3D		0x9880
3462306a36Sopenharmony_ci#define CYBERBLADEE4	0x9540
3562306a36Sopenharmony_ci#define CYBERBLADEi7	0x8400
3662306a36Sopenharmony_ci#define CYBERBLADEi7D	0x8420
3762306a36Sopenharmony_ci#define CYBERBLADEi1	0x8500
3862306a36Sopenharmony_ci#define CYBERBLADEi1D	0x8520
3962306a36Sopenharmony_ci#define CYBERBLADEAi1	0x8600
4062306a36Sopenharmony_ci#define CYBERBLADEAi1D	0x8620
4162306a36Sopenharmony_ci#define CYBERBLADEXPAi1 0x8820
4262306a36Sopenharmony_ci#define CYBERBLADEXPm8  0x9910
4362306a36Sopenharmony_ci#define CYBERBLADEXPm16 0x9930
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci/* these defines are for 'lcd' variable */
4662306a36Sopenharmony_ci#define LCD_STRETCH	0
4762306a36Sopenharmony_ci#define LCD_CENTER	1
4862306a36Sopenharmony_ci#define LCD_BIOS	2
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/* General Registers */
5162306a36Sopenharmony_ci#define SPR	0x1F		/* Software Programming Register (videoram) */
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci/* 3C4 */
5462306a36Sopenharmony_ci#define RevisionID 0x09
5562306a36Sopenharmony_ci#define OldOrNew 0x0B
5662306a36Sopenharmony_ci#define ConfPort1 0x0C
5762306a36Sopenharmony_ci#define ConfPort2 0x0C
5862306a36Sopenharmony_ci#define NewMode2 0x0D
5962306a36Sopenharmony_ci#define NewMode1 0x0E
6062306a36Sopenharmony_ci#define Protection 0x11
6162306a36Sopenharmony_ci#define MCLKLow 0x16
6262306a36Sopenharmony_ci#define MCLKHigh 0x17
6362306a36Sopenharmony_ci#define ClockLow 0x18
6462306a36Sopenharmony_ci#define ClockHigh 0x19
6562306a36Sopenharmony_ci#define SSetup 0x20
6662306a36Sopenharmony_ci#define SKey 0x37
6762306a36Sopenharmony_ci#define SPKey 0x57
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci/* 3x4 */
7062306a36Sopenharmony_ci#define CRTCModuleTest 0x1E
7162306a36Sopenharmony_ci#define FIFOControl 0x20
7262306a36Sopenharmony_ci#define LinearAddReg 0x21
7362306a36Sopenharmony_ci#define DRAMTiming 0x23
7462306a36Sopenharmony_ci#define New32 0x23
7562306a36Sopenharmony_ci#define RAMDACTiming 0x25
7662306a36Sopenharmony_ci#define CRTHiOrd 0x27
7762306a36Sopenharmony_ci#define AddColReg 0x29
7862306a36Sopenharmony_ci#define InterfaceSel 0x2A
7962306a36Sopenharmony_ci#define HorizOverflow 0x2B
8062306a36Sopenharmony_ci#define GETest 0x2D
8162306a36Sopenharmony_ci#define Performance 0x2F
8262306a36Sopenharmony_ci#define GraphEngReg 0x36
8362306a36Sopenharmony_ci#define I2C 0x37
8462306a36Sopenharmony_ci#define PixelBusReg 0x38
8562306a36Sopenharmony_ci#define PCIReg 0x39
8662306a36Sopenharmony_ci#define DRAMControl 0x3A
8762306a36Sopenharmony_ci#define MiscContReg 0x3C
8862306a36Sopenharmony_ci#define CursorXLow 0x40
8962306a36Sopenharmony_ci#define CursorXHigh 0x41
9062306a36Sopenharmony_ci#define CursorYLow 0x42
9162306a36Sopenharmony_ci#define CursorYHigh 0x43
9262306a36Sopenharmony_ci#define CursorLocLow 0x44
9362306a36Sopenharmony_ci#define CursorLocHigh 0x45
9462306a36Sopenharmony_ci#define CursorXOffset 0x46
9562306a36Sopenharmony_ci#define CursorYOffset 0x47
9662306a36Sopenharmony_ci#define CursorFG1 0x48
9762306a36Sopenharmony_ci#define CursorFG2 0x49
9862306a36Sopenharmony_ci#define CursorFG3 0x4A
9962306a36Sopenharmony_ci#define CursorFG4 0x4B
10062306a36Sopenharmony_ci#define CursorBG1 0x4C
10162306a36Sopenharmony_ci#define CursorBG2 0x4D
10262306a36Sopenharmony_ci#define CursorBG3 0x4E
10362306a36Sopenharmony_ci#define CursorBG4 0x4F
10462306a36Sopenharmony_ci#define CursorControl 0x50
10562306a36Sopenharmony_ci#define PCIRetry 0x55
10662306a36Sopenharmony_ci#define PreEndControl 0x56
10762306a36Sopenharmony_ci#define PreEndFetch 0x57
10862306a36Sopenharmony_ci#define PCIMaster 0x60
10962306a36Sopenharmony_ci#define Enhancement0 0x62
11062306a36Sopenharmony_ci#define NewEDO 0x64
11162306a36Sopenharmony_ci#define TVinterface 0xC0
11262306a36Sopenharmony_ci#define TVMode 0xC1
11362306a36Sopenharmony_ci#define ClockControl 0xCF
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci/* 3CE */
11762306a36Sopenharmony_ci#define MiscExtFunc 0x0F
11862306a36Sopenharmony_ci#define PowerStatus 0x23
11962306a36Sopenharmony_ci#define MiscIntContReg 0x2F
12062306a36Sopenharmony_ci#define CyberControl 0x30
12162306a36Sopenharmony_ci#define CyberEnhance 0x31
12262306a36Sopenharmony_ci#define FPConfig     0x33
12362306a36Sopenharmony_ci#define VertStretch  0x52
12462306a36Sopenharmony_ci#define HorStretch   0x53
12562306a36Sopenharmony_ci#define BiosMode     0x5c
12662306a36Sopenharmony_ci#define BiosReg      0x5d
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci/* Graphics Engine */
12962306a36Sopenharmony_ci#define STATUS	0x2120
13062306a36Sopenharmony_ci#define OLDCMD	0x2124
13162306a36Sopenharmony_ci#define DRAWFL	0x2128
13262306a36Sopenharmony_ci#define OLDCLR	0x212C
13362306a36Sopenharmony_ci#define OLDDST	0x2138
13462306a36Sopenharmony_ci#define OLDSRC	0x213C
13562306a36Sopenharmony_ci#define OLDDIM	0x2140
13662306a36Sopenharmony_ci#define CMD	0x2144
13762306a36Sopenharmony_ci#define ROP	0x2148
13862306a36Sopenharmony_ci#define COLOR	0x2160
13962306a36Sopenharmony_ci#define BGCOLOR	0x2164
14062306a36Sopenharmony_ci#define SRC1	0x2100
14162306a36Sopenharmony_ci#define SRC2	0x2104
14262306a36Sopenharmony_ci#define DST1	0x2108
14362306a36Sopenharmony_ci#define DST2	0x210C
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci#define ROP_S	0xCC
14662306a36Sopenharmony_ci#define ROP_P	0xF0
14762306a36Sopenharmony_ci#define ROP_X	0x66
148