1 #ifndef __NV_TYPE_H__ 2 #define __NV_TYPE_H__ 3 4 #include <linux/fb.h> 5 #include <linux/types.h> 6 #include <linux/i2c.h> 7 #include <linux/i2c-algo-bit.h> 8 #include <linux/mutex.h> 9 #include <video/vga.h> 10 11 #define NV_ARCH_04 0x04 12 #define NV_ARCH_10 0x10 13 #define NV_ARCH_20 0x20 14 #define NV_ARCH_30 0x30 15 #define NV_ARCH_40 0x40 16 17 #define BITMASK(t,b) (((unsigned)(1U << (((t)-(b)+1)))-1) << (b)) 18 #define MASKEXPAND(mask) BITMASK(1?mask,0?mask) 19 #define SetBF(mask,value) ((value) << (0?mask)) 20 #define GetBF(var,mask) (((unsigned)((var) & MASKEXPAND(mask))) >> (0?mask) ) 21 #define SetBitField(value,from,to) SetBF(to, GetBF(value,from)) 22 #define SetBit(n) (1<<(n)) 23 #define Set8Bits(value) ((value)&0xff) 24 25 #define V_DBLSCAN 1 26 27 typedef struct { 28 int bitsPerPixel; 29 int depth; 30 int displayWidth; 31 int weight; 32 } NVFBLayout; 33 34 #define NUM_SEQ_REGS 0x05 35 #define NUM_CRT_REGS 0x41 36 #define NUM_GRC_REGS 0x09 37 #define NUM_ATC_REGS 0x15 38 39 struct nvidia_par; 40 41 struct nvidia_i2c_chan { 42 struct nvidia_par *par; 43 unsigned long ddc_base; 44 struct i2c_adapter adapter; 45 struct i2c_algo_bit_data algo; 46 }; 47 48 typedef struct _riva_hw_state { 49 u8 attr[NUM_ATC_REGS]; 50 u8 crtc[NUM_CRT_REGS]; 51 u8 gra[NUM_GRC_REGS]; 52 u8 seq[NUM_SEQ_REGS]; 53 u8 misc_output; 54 u32 bpp; 55 u32 width; 56 u32 height; 57 u32 interlace; 58 u32 repaint0; 59 u32 repaint1; 60 u32 screen; 61 u32 scale; 62 u32 dither; 63 u32 extra; 64 u32 fifo; 65 u32 pixel; 66 u32 horiz; 67 u32 arbitration0; 68 u32 arbitration1; 69 u32 pll; 70 u32 pllB; 71 u32 vpll; 72 u32 vpll2; 73 u32 vpllB; 74 u32 vpll2B; 75 u32 pllsel; 76 u32 general; 77 u32 crtcOwner; 78 u32 head; 79 u32 head2; 80 u32 config; 81 u32 cursorConfig; 82 u32 cursor0; 83 u32 cursor1; 84 u32 cursor2; 85 u32 timingH; 86 u32 timingV; 87 u32 displayV; 88 u32 crtcSync; 89 u32 control; 90 } RIVA_HW_STATE; 91 92 struct riva_regs { 93 RIVA_HW_STATE ext; 94 }; 95 96 struct nvidia_par { 97 RIVA_HW_STATE SavedReg; 98 RIVA_HW_STATE ModeReg; 99 RIVA_HW_STATE initial_state; 100 RIVA_HW_STATE *CurrentState; 101 struct vgastate vgastate; 102 struct mutex open_lock; 103 u32 pseudo_palette[16]; 104 struct pci_dev *pci_dev; 105 u32 Architecture; 106 u32 CursorStart; 107 int Chipset; 108 unsigned long FbAddress; 109 u8 __iomem *FbStart; 110 u32 FbMapSize; 111 u32 FbUsableSize; 112 u32 ScratchBufferSize; 113 u32 ScratchBufferStart; 114 int FpScale; 115 u32 MinVClockFreqKHz; 116 u32 MaxVClockFreqKHz; 117 u32 CrystalFreqKHz; 118 u32 RamAmountKBytes; 119 u32 IOBase; 120 NVFBLayout CurrentLayout; 121 int cursor_reset; 122 int lockup; 123 int videoKey; 124 int FlatPanel; 125 int FPDither; 126 int Television; 127 int CRTCnumber; 128 int alphaCursor; 129 int twoHeads; 130 int twoStagePLL; 131 int fpScaler; 132 int fpWidth; 133 int fpHeight; 134 int PanelTweak; 135 int paneltweak; 136 int LVDS; 137 int pm_state; 138 int reverse_i2c; 139 u32 crtcSync_read; 140 u32 fpSyncs; 141 u32 dmaPut; 142 u32 dmaCurrent; 143 u32 dmaFree; 144 u32 dmaMax; 145 u32 __iomem *dmaBase; 146 u32 currentRop; 147 int WaitVSyncPossible; 148 int BlendingPossible; 149 u32 paletteEnabled; 150 u32 forceCRTC; 151 u32 open_count; 152 u8 DDCBase; 153 #ifdef CONFIG_MTRR 154 struct { 155 int vram; 156 int vram_valid; 157 } mtrr; 158 #endif 159 struct nvidia_i2c_chan chan[3]; 160 161 volatile u32 __iomem *REGS; 162 volatile u32 __iomem *PCRTC0; 163 volatile u32 __iomem *PCRTC; 164 volatile u32 __iomem *PRAMDAC0; 165 volatile u32 __iomem *PFB; 166 volatile u32 __iomem *PFIFO; 167 volatile u32 __iomem *PGRAPH; 168 volatile u32 __iomem *PEXTDEV; 169 volatile u32 __iomem *PTIMER; 170 volatile u32 __iomem *PMC; 171 volatile u32 __iomem *PRAMIN; 172 volatile u32 __iomem *FIFO; 173 volatile u32 __iomem *CURSOR; 174 volatile u8 __iomem *PCIO0; 175 volatile u8 __iomem *PCIO; 176 volatile u8 __iomem *PVIO; 177 volatile u8 __iomem *PDIO0; 178 volatile u8 __iomem *PDIO; 179 volatile u32 __iomem *PRAMDAC; 180 }; 181 182 #endif /* __NV_TYPE_H__ */ 183