Commit b0925249 authored by James Simmons's avatar James Simmons

Updates to the NVIDIA driver. We now support more cards. I still have more hacking to do.

parent 8d7c2813
#
# Makefile for the Intel 810/815 framebuffer driver
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
# Note 2! The CFLAGS definitions are now in the main makefile...
obj-$(CONFIG_FB_I810) += i810fb.o
i810fb-objs := i810_main.o i810_accel.o
ifdef CONFIG_FB_I810_GTF
i810fb-objs += i810_gtf.o
else
i810fb-objs += i810_dvt.o
endif
include $(TOPDIR)/Rules.make
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
#endif #endif
/* version number of this driver */ /* version number of this driver */
#define RIVAFB_VERSION "0.9.3" #define RIVAFB_VERSION "0.9.4"
/* ------------------------------------------------------------------------- * /* ------------------------------------------------------------------------- *
* *
...@@ -114,23 +114,43 @@ enum riva_chips { ...@@ -114,23 +114,43 @@ enum riva_chips {
CH_RIVA_128 = 0, CH_RIVA_128 = 0,
CH_RIVA_TNT, CH_RIVA_TNT,
CH_RIVA_TNT2, CH_RIVA_TNT2,
CH_RIVA_UTNT2, /* UTNT2 */ CH_RIVA_UTNT2,
CH_RIVA_VTNT2, /* VTNT2 */ CH_RIVA_VTNT2,
CH_RIVA_UVTNT2, /* VTNT2 */ CH_RIVA_UVTNT2,
CH_RIVA_ITNT2, /* ITNT2 */ CH_RIVA_ITNT2,
CH_GEFORCE_SDR, CH_GEFORCE_SDR,
CH_GEFORCE_DDR, CH_GEFORCE_DDR,
CH_QUADRO, CH_QUADRO,
CH_GEFORCE2_MX, CH_GEFORCE2_MX,
CH_GEFORCE2_MX2,
CH_GEFORCE2_GO,
CH_QUADRO2_MXR, CH_QUADRO2_MXR,
CH_GEFORCE2_GTS, CH_GEFORCE2_GTS,
CH_GEFORCE2_GTS2,
CH_GEFORCE2_ULTRA, CH_GEFORCE2_ULTRA,
CH_QUADRO2_PRO, CH_QUADRO2_PRO,
CH_GEFORCE2_GO, CH_GEFORCE4_MX_460,
CH_GEFORCE3, CH_GEFORCE4_MX_440,
CH_GEFORCE3_1, CH_GEFORCE4_MX_420,
CH_GEFORCE3_2, CH_GEFORCE4_440_GO,
CH_QUADRO_DDC CH_GEFORCE4_420_GO,
CH_GEFORCE4_420_GO_M32,
CH_QUADRO4_500XGL,
CH_GEFORCE4_440_GO_M64,
CH_QUADRO4_200,
CH_QUADRO4_550XGL,
CH_QUADRO4_500_GOGL,
CH_IGEFORCE2,
CH_GEFORCE3,
CH_GEFORCE3_1,
CH_GEFORCE3_2,
CH_QUADRO_DDC,
CH_GEFORCE4_TI_4600,
CH_GEFORCE4_TI_4400,
CH_GEFORCE4_TI_4200,
CH_QUADRO4_900XGL,
CH_QUADRO4_750XGL,
CH_QUADRO4_700XGL
}; };
/* directly indexed by riva_chips enum, above */ /* directly indexed by riva_chips enum, above */
...@@ -149,15 +169,35 @@ static struct riva_chip_info { ...@@ -149,15 +169,35 @@ static struct riva_chip_info {
{ "GeForce-DDR", NV_ARCH_10}, { "GeForce-DDR", NV_ARCH_10},
{ "Quadro", NV_ARCH_10}, { "Quadro", NV_ARCH_10},
{ "GeForce2-MX", NV_ARCH_10}, { "GeForce2-MX", NV_ARCH_10},
{ "GeForce2-MX", NV_ARCH_10},
{ "GeForce2-Go", NV_ARCH_10},
{ "Quadro2-MXR", NV_ARCH_10}, { "Quadro2-MXR", NV_ARCH_10},
{ "GeForce2-GTS", NV_ARCH_10}, { "GeForce2-GTS", NV_ARCH_10},
{ "GeForce2-GTS", NV_ARCH_10},
{ "GeForce2-ULTRA", NV_ARCH_10}, { "GeForce2-ULTRA", NV_ARCH_10},
{ "Quadro2-PRO", NV_ARCH_10}, { "Quadro2-PRO", NV_ARCH_10},
{ "GeForce2-Go", NV_ARCH_10}, { "GeForce4-MX-460", NV_ARCH_20 },
{ "GeForce3", NV_ARCH_20}, { "GeForce4-MX-440", NV_ARCH_20 },
{ "GeForce4-MX-420", NV_ARCH_20 },
{ "GeForce4-440-GO", NV_ARCH_20 },
{ "GeForce4-420-GO", NV_ARCH_20 },
{ "GeForce4-420-GO-M32", NV_ARCH_20 },
{ "Quadro4-500-XGL", NV_ARCH_20 },
{ "GeForce4-440-GO-M64", NV_ARCH_20 },
{ "Quadro4-200", NV_ARCH_20 },
{ "Quadro4-550-XGL", NV_ARCH_20 },
{ "Quadro4-500-GOGL", NV_ARCH_20 },
{ "GeForce2", NV_ARCH_20 },
{ "GeForce3", NV_ARCH_20},
{ "GeForce3 Ti 200", NV_ARCH_20}, { "GeForce3 Ti 200", NV_ARCH_20},
{ "GeForce3 Ti 500", NV_ARCH_20}, { "GeForce3 Ti 500", NV_ARCH_20},
{ "Quadro DDC", NV_ARCH_20} { "Quadro DDC", NV_ARCH_20},
{ "GeForce4 Ti 4600", NV_ARCH_20 },
{ "GeForce4 Ti 4400", NV_ARCH_20 },
{ "GeForce4 Ti 4200", NV_ARCH_20 },
{ "Quadro4-900-XGL", NV_ARCH_20 },
{ "Quadro4-750-XGL", NV_ARCH_20 },
{ "Quadro4-700-XGL", NV_ARCH_20 }
}; };
static struct pci_device_id rivafb_pci_tbl[] __devinitdata = { static struct pci_device_id rivafb_pci_tbl[] __devinitdata = {
...@@ -184,56 +224,67 @@ static struct pci_device_id rivafb_pci_tbl[] __devinitdata = { ...@@ -184,56 +224,67 @@ static struct pci_device_id rivafb_pci_tbl[] __devinitdata = {
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_MX2 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GO },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_MXR }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_MXR },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS2 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_ULTRA }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_ULTRA },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_PRO }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_PRO },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GO }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_MX_460 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3 }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_MX_440 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_1, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_1 }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_MX_420 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_2, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_2 }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_440_GO },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_DDC, { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO_DDC }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_420_GO },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO_M32,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_420_GO_M32 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_500XGL },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO_M64,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_440_GO_M64 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_200,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_200 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_550XGL },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_500_GOGL },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_IGEFORCE2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_IGEFORCE2 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_1,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_1 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE3_2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE3_2 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO_DDC,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO_DDC },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4600,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4600 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4400,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4400 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE4_TI_4200 },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_900XGL },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_750XGL },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO4_700XGL },
{ 0, } /* terminate list */ { 0, } /* terminate list */
}; };
MODULE_DEVICE_TABLE(pci, rivafb_pci_tbl); MODULE_DEVICE_TABLE(pci, rivafb_pci_tbl);
/* ------------------------------------------------------------------------- *
*
* framebuffer related structures
*
* ------------------------------------------------------------------------- */
extern struct display_switch fbcon_riva8;
extern struct display_switch fbcon_riva16;
extern struct display_switch fbcon_riva32;
struct riva_cursor {
int enable;
int on;
int vbl_cnt;
int last_move_delay;
int blink_rate;
struct {
u16 x, y;
} pos, size;
unsigned short image[MAX_CURS*MAX_CURS];
struct timer_list *timer;
};
/* ------------------------------------------------------------------------- * /* ------------------------------------------------------------------------- *
* *
* global variables * global variables
...@@ -243,7 +294,7 @@ struct riva_cursor { ...@@ -243,7 +294,7 @@ struct riva_cursor {
/* command line data, set in rivafb_setup() */ /* command line data, set in rivafb_setup() */
static u32 pseudo_palette[17]; static u32 pseudo_palette[17];
#ifdef CONFIG_MTRR #ifdef CONFIG_MTRR
static char nomtrr __initdata = 0; static int nomtrr __initdata = 0;
#endif #endif
#ifndef MODULE #ifndef MODULE
...@@ -581,6 +632,7 @@ static void riva_load_video_mode(struct fb_info *info) ...@@ -581,6 +632,7 @@ static void riva_load_video_mode(struct fb_info *info)
{ {
int bpp, width, hDisplaySize, hDisplay, hStart, int bpp, width, hDisplaySize, hDisplay, hStart,
hEnd, hTotal, height, vDisplay, vStart, vEnd, vTotal, dotClock; hEnd, hTotal, height, vDisplay, vStart, vEnd, vTotal, dotClock;
int hBlankStart, hBlankEnd, vBlankStart, vBlankEnd;
struct riva_par *par = (struct riva_par *) info->par; struct riva_par *par = (struct riva_par *) info->par;
struct riva_regs newmode; struct riva_regs newmode;
...@@ -598,7 +650,10 @@ static void riva_load_video_mode(struct fb_info *info) ...@@ -598,7 +650,10 @@ static void riva_load_video_mode(struct fb_info *info)
hEnd = (hDisplaySize + info->var.right_margin + hEnd = (hDisplaySize + info->var.right_margin +
info->var.hsync_len) / 8 - 1; info->var.hsync_len) / 8 - 1;
hTotal = (hDisplaySize + info->var.right_margin + hTotal = (hDisplaySize + info->var.right_margin +
info->var.hsync_len + info->var.left_margin) / 8 - 1; info->var.hsync_len + info->var.left_margin) / 8 - 5;
hBlankStart = hDisplay;
hBlankEnd = hTotal + 4;
height = info->var.yres_virtual; height = info->var.yres_virtual;
vDisplay = info->var.yres - 1; vDisplay = info->var.yres - 1;
vStart = info->var.yres + info->var.lower_margin - 1; vStart = info->var.yres + info->var.lower_margin - 1;
...@@ -606,47 +661,92 @@ static void riva_load_video_mode(struct fb_info *info) ...@@ -606,47 +661,92 @@ static void riva_load_video_mode(struct fb_info *info)
info->var.vsync_len - 1; info->var.vsync_len - 1;
vTotal = info->var.yres + info->var.lower_margin + vTotal = info->var.yres + info->var.lower_margin +
info->var.vsync_len + info->var.upper_margin + 2; info->var.vsync_len + info->var.upper_margin + 2;
vBlankStart = vDisplay;
vBlankEnd = vTotal + 1;
dotClock = 1000000000 / info->var.pixclock; dotClock = 1000000000 / info->var.pixclock;
memcpy(&newmode, &reg_template, sizeof(struct riva_regs)); memcpy(&newmode, &reg_template, sizeof(struct riva_regs));
newmode.crtc[0x0] = Set8Bits (hTotal - 4); if (par->FlatPanel) {
vStart = vTotal - 3;
vEnd = vTotal - 2;
vBlankStart = vStart;
hStart = hTotal - 3;
hEnd = hTotal - 2;
hBlankEnd = hTotal + 4;
}
newmode.crtc[0x0] = Set8Bits (hTotal);
newmode.crtc[0x1] = Set8Bits (hDisplay); newmode.crtc[0x1] = Set8Bits (hDisplay);
newmode.crtc[0x2] = Set8Bits (hDisplay); newmode.crtc[0x2] = Set8Bits (hBlankStart);
newmode.crtc[0x3] = SetBitField (hTotal, 4: 0, 4:0) | SetBit (7); newmode.crtc[0x3] = SetBitField (hBlankEnd, 4: 0, 4:0) | SetBit (7);
newmode.crtc[0x4] = Set8Bits (hStart); newmode.crtc[0x4] = Set8Bits (hStart);
newmode.crtc[0x5] = SetBitField (hTotal, 5: 5, 7:7) newmode.crtc[0x5] = SetBitField (hBlankEnd, 5: 5, 7:7)
| SetBitField (hEnd, 4: 0, 4:0); | SetBitField (hEnd, 4: 0, 4:0);
newmode.crtc[0x6] = SetBitField (vTotal, 7: 0, 7:0); newmode.crtc[0x6] = SetBitField (vTotal, 7: 0, 7:0);
newmode.crtc[0x7] = SetBitField (vTotal, 8: 8, 0:0) newmode.crtc[0x7] = SetBitField (vTotal, 8: 8, 0:0)
| SetBitField (vDisplay, 8: 8, 1:1) | SetBitField (vDisplay, 8: 8, 1:1)
| SetBitField (vStart, 8: 8, 2:2) | SetBitField (vStart, 8: 8, 2:2)
| SetBitField (vDisplay, 8: 8, 3:3) | SetBitField (vBlankStart, 8: 8, 3:3)
| SetBit (4) | SetBit (4)
| SetBitField (vTotal, 9: 9, 5:5) | SetBitField (vTotal, 9: 9, 5:5)
| SetBitField (vDisplay, 9: 9, 6:6) | SetBitField (vDisplay, 9: 9, 6:6)
| SetBitField (vStart, 9: 9, 7:7); | SetBitField (vStart, 9: 9, 7:7);
newmode.crtc[0x9] = SetBitField (vDisplay, 9: 9, 5:5) newmode.crtc[0x9] = SetBitField (vBlankStart, 9: 9, 5:5)
| SetBit (6); | SetBit (6);
newmode.crtc[0x10] = Set8Bits (vStart); newmode.crtc[0x10] = Set8Bits (vStart);
newmode.crtc[0x11] = SetBitField (vEnd, 3: 0, 3:0) newmode.crtc[0x11] = SetBitField (vEnd, 3: 0, 3:0)
| SetBit (5); | SetBit (5);
newmode.crtc[0x12] = Set8Bits (vDisplay); newmode.crtc[0x12] = Set8Bits (vDisplay);
newmode.crtc[0x13] = ((width / 8) * ((bpp + 1) / 8)) & 0xFF; newmode.crtc[0x13] = (width / 8) * ((bpp + 1) / 8);
newmode.crtc[0x15] = Set8Bits (vDisplay); newmode.crtc[0x15] = Set8Bits (vBlankStart);
newmode.crtc[0x16] = Set8Bits (vTotal + 1); newmode.crtc[0x16] = Set8Bits (vBlankEnd);
newmode.ext.screen = SetBitField(hBlankEnd,6:6,4:4)
| SetBitField(vBlankStart,10:10,3:3)
| SetBitField(vStart,10:10,2:2)
| SetBitField(vDisplay,10:10,1:1)
| SetBitField(vTotal,10:10,0:0);
newmode.ext.horiz = SetBitField(hTotal,8:8,0:0)
| SetBitField(hDisplay,8:8,1:1)
| SetBitField(hBlankStart,8:8,2:2)
| SetBitField(hStart,8:8,3:3);
newmode.ext.extra = SetBitField(vTotal,11:11,0:0)
| SetBitField(vDisplay,11:11,2:2)
| SetBitField(vStart,11:11,4:4)
| SetBitField(vBlankStart,11:11,6:6);
newmode.ext.bpp = bpp; newmode.ext.bpp = bpp;
newmode.ext.width = width; newmode.ext.width = width;
newmode.ext.height = height; newmode.ext.height = height;
newmode.ext.interlace = 0xff; /* interlace off */
par->riva.CalcStateExt(&par->riva, &newmode.ext, bpp, width, par->riva.CalcStateExt(&par->riva, &newmode.ext, bpp, width,
hDisplaySize, hDisplay, hStart, hEnd, hDisplaySize, hDisplay, hStart, hEnd,
hTotal, height, vDisplay, vStart, vEnd, hTotal, height, vDisplay, vStart, vEnd,
vTotal, dotClock); vTotal, dotClock);
if (par->SecondCRTC) {
newmode.ext.head = par->riva.PCRTC0[0x00000860/4] & ~0x00001000;
newmode.ext.head2 = par->riva.PCRTC0[0x00002860/4] | 0x00001000;
newmode.ext.crtcOwner = 3;
newmode.ext.pllsel |= 0x20000800;
newmode.ext.vpll2 = newmode.ext.vpll;
} else if (par->riva.twoHeads) {
newmode.ext.head = par->riva.PCRTC0[0x00000860/4] | 0x00001000;
newmode.ext.head2 = par->riva.PCRTC0[0x00002860/4] & ~0x00001000;
newmode.ext.crtcOwner = 0;
newmode.ext.vpll2 = par->riva.PRAMDAC0[0x00000520/4];
}
if (par->FlatPanel == 1) {
newmode.ext.pixel |= (1 << 7);
newmode.ext.scale |= (1 << 8) ;
}
newmode.ext.cursorConfig = 0x02000100;
par->current_state = newmode; par->current_state = newmode;
riva_load_state(par, &par->current_state); riva_load_state(par, &par->current_state);
par->riva.LockUnlock(&par->riva, 0); /* important for HW cursor */
rivafb_blank(0, info);
} }
/** /**
...@@ -916,6 +1016,7 @@ static void rivafb_imageblit(struct fb_info *info, struct fb_image *image) ...@@ -916,6 +1016,7 @@ static void rivafb_imageblit(struct fb_info *info, struct fb_image *image)
size = width * h; size = width * h;
dat = cdat; dat = cdat;
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
*dat = byte_rev[*dat]; *dat = byte_rev[*dat];
dat++; dat++;
...@@ -923,17 +1024,11 @@ static void rivafb_imageblit(struct fb_info *info, struct fb_image *image) ...@@ -923,17 +1024,11 @@ static void rivafb_imageblit(struct fb_info *info, struct fb_image *image)
switch (info->var.bits_per_pixel) { switch (info->var.bits_per_pixel) {
case 8: case 8:
fgx = image->fg_color | ~((1 << 8) - 1); fgx = image->fg_color;
bgx = image->bg_color | ~((1 << 8) - 1); bgx = image->bg_color;
break; break;
case 16: case 16:
/* set alpha bit */
if (info->var.green.length == 5) {
fgx = 1 << 15;
bgx = fgx;
}
/* Fall through... */
case 32: case 32:
fgx |= par->riva_palette[image->fg_color]; fgx |= par->riva_palette[image->fg_color];
bgx |= par->riva_palette[image->bg_color]; bgx |= par->riva_palette[image->bg_color];
...@@ -1168,7 +1263,10 @@ static int rivafb_open(struct fb_info *info, int user) ...@@ -1168,7 +1263,10 @@ static int rivafb_open(struct fb_info *info, int user)
par->state.flags |= VGA_SAVE_CMAP; par->state.flags |= VGA_SAVE_CMAP;
save_vga(&par->state); save_vga(&par->state);
RivaGetConfig(&par->riva); RivaGetConfig(&par->riva);
CRTCout(par, 0x11, 0xFF); /* vgaHWunlock() + riva unlock (0x7F) */
par->riva.LockUnlock(&par->riva, 0);
riva_save_state(par, &par->initial_state); riva_save_state(par, &par->initial_state);
} }
...@@ -1288,7 +1386,6 @@ static int rivafb_set_par(struct fb_info *info) ...@@ -1288,7 +1386,6 @@ static int rivafb_set_par(struct fb_info *info)
{ {
struct riva_par *par = (struct riva_par *) info->par; struct riva_par *par = (struct riva_par *) info->par;
//rivafb_create_cursor(info, fontwidth(dsp), fontheight(dsp));
riva_load_video_mode(info); riva_load_video_mode(info);
if (info->var.accel_flags) { if (info->var.accel_flags) {
riva_setup_accel(par); riva_setup_accel(par);
...@@ -1554,13 +1651,14 @@ static int __devinit riva_set_fbinfo(struct fb_info *info) ...@@ -1554,13 +1651,14 @@ static int __devinit riva_set_fbinfo(struct fb_info *info)
info->display_fg = NULL; info->display_fg = NULL;
info->pseudo_palette = pseudo_palette; info->pseudo_palette = pseudo_palette;
cmap_len = riva_get_cmap_len(&info->var);
fb_alloc_cmap(&info->cmap, cmap_len, 0);
#ifndef MODULE #ifndef MODULE
if (mode_option) if (mode_option)
fb_find_mode(&info->var, info, mode_option, fb_find_mode(&info->var, info, mode_option,
NULL, 0, NULL, 8); NULL, 0, NULL, 8);
#endif #endif
cmap_len = riva_get_cmap_len(&info->var);
fb_alloc_cmap(&info->cmap, cmap_len, 0);
return 0; return 0;
} }
...@@ -1713,13 +1811,6 @@ static int __devinit rivafb_init_one(struct pci_dev *pd, ...@@ -1713,13 +1811,6 @@ static int __devinit rivafb_init_one(struct pci_dev *pd,
goto err_out_free_base1; goto err_out_free_base1;
} }
info->screen_base = ioremap(rivafb_fix.smem_start,
rivafb_fix.smem_len);
if (!info->screen_base) {
printk(KERN_ERR PFX "cannot ioremap FB base\n");
goto err_out_iounmap_ctrl;
}
default_par->riva.EnableIRQ = 0; default_par->riva.EnableIRQ = 0;
default_par->riva.PRAMDAC = (unsigned *)(default_par->ctrl_base + default_par->riva.PRAMDAC = (unsigned *)(default_par->ctrl_base +
0x00680000); 0x00680000);
...@@ -1744,6 +1835,25 @@ static int __devinit rivafb_init_one(struct pci_dev *pd, ...@@ -1744,6 +1835,25 @@ static int __devinit rivafb_init_one(struct pci_dev *pd,
default_par->riva.IO = (MISCin(default_par) & 0x01) ? 0x3D0 : 0x3B0; default_par->riva.IO = (MISCin(default_par) & 0x01) ? 0x3D0 : 0x3B0;
if (default_par->riva.Architecture == NV_ARCH_03) {
/*
* We have to map the full BASE_1 aperture for Riva128's
* because they use the PRAMIN set in "framebuffer" space
*/
if (!request_mem_region(rivafb_fix.smem_start,
rivafb_fix.smem_len, "rivafb")) {
printk(KERN_ERR PFX "cannot reserve FB region\n");
goto err_out_free_base0;
}
info->screen_base = ioremap(rivafb_fix.smem_start,
rivafb_fix.smem_len);
if (!info->screen_base) {
printk(KERN_ERR PFX "cannot ioremap FB base\n");
goto err_out_iounmap_ctrl;
}
}
switch (default_par->riva.Architecture) { switch (default_par->riva.Architecture) {
case NV_ARCH_03: case NV_ARCH_03:
default_par->riva.PRAMIN = (unsigned *)(info->screen_base + default_par->riva.PRAMIN = (unsigned *)(info->screen_base +
...@@ -1767,17 +1877,23 @@ static int __devinit rivafb_init_one(struct pci_dev *pd, ...@@ -1767,17 +1877,23 @@ static int __devinit rivafb_init_one(struct pci_dev *pd,
info->par = default_par; info->par = default_par;
if (!request_mem_region(rivafb_fix.smem_start, if (default_par->riva.Architecture != NV_ARCH_03) {
rivafb_fix.smem_len, "rivafb")) { /*
printk(KERN_ERR PFX "cannot reserve FB region\n"); * Now the _normal_ chipsets can just map the amount of
goto err_out_free_base0; * real physical ram instead of the whole aperture
} */
if (!request_mem_region(rivafb_fix.smem_start,
rivafb_fix.smem_len, "rivafb")) {
printk(KERN_ERR PFX "cannot reserve FB region\n");
goto err_out_free_base0;
}
info->screen_base = ioremap(rivafb_fix.smem_start, info->screen_base = ioremap(rivafb_fix.smem_start,
rivafb_fix.smem_len); rivafb_fix.smem_len);
if (!info->screen_base) { if (!info->screen_base) {
printk(KERN_ERR PFX "cannot ioremap FB base\n"); printk(KERN_ERR PFX "cannot ioremap FB base\n");
goto err_out_iounmap_ctrl; goto err_out_iounmap_ctrl;
}
} }
#ifdef CONFIG_MTRR #ifdef CONFIG_MTRR
......
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/nv_type.h,v 1.35 2002/08/05 20:47:06 mvojkovi Exp $ */
#ifndef __NV_STRUCT_H__
#define __NV_STRUCT_H__
#define NV_CHIP_RIVA_128 ((PCI_VENDOR_ID_NVIDIA_SGS << 16)| PCI_DEVICE_ID_NVIDIA_RIVA128)
#define NV_CHIP_TNT ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_TNT)
#define NV_CHIP_TNT2 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_TNT2)
#define NV_CHIP_UTNT2 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_UTNT2)
#define NV_CHIP_VTNT2 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_VTNT2)
#define NV_CHIP_UVTNT2 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_UVTNT2)
#define NV_CHIP_ITNT2 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_ITNT2)
#define NV_CHIP_GEFORCE_256 ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_GEFORCE_256)
#define NV_CHIP_GEFORCE_DDR ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR)
#define NV_CHIP_QUADRO ((PCI_VENDOR_ID_NVIDIA << 16)| PCI_DEVICE_ID_NVIDIA_QUADRO)
#define NV_CHIP_GEFORCE2_MX ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX)
#define NV_CHIP_GEFORCE2_MX_100 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX_100)
#define NV_CHIP_QUADRO2_MXR ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR)
#define NV_CHIP_GEFORCE2_GO ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO)
#define NV_CHIP_GEFORCE2_GTS ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS)
#define NV_CHIP_GEFORCE2_TI ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_TI)
#define NV_CHIP_GEFORCE2_ULTRA ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA)
#define NV_CHIP_QUADRO2_PRO ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO)
#define NV_CHIP_GEFORCE4_MX_460 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460)
#define NV_CHIP_GEFORCE4_MX_440 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440)
#define NV_CHIP_GEFORCE4_MX_420 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420)
#define NV_CHIP_GEFORCE4_440_GO ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO)
#define NV_CHIP_GEFORCE4_420_GO ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO)
#define NV_CHIP_GEFORCE4_420_GO_M32 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO_M32)
#define NV_CHIP_QUADRO4_500XGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL)
#define NV_CHIP_GEFORCE4_440_GO_M64 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO_M64)
#define NV_CHIP_QUADRO4_200 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_200)
#define NV_CHIP_QUADRO4_550XGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL)
#define NV_CHIP_QUADRO4_500_GOGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL)
#define NV_CHIP_0x0180 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0180)
#define NV_CHIP_0x0181 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0181)
#define NV_CHIP_0x0182 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0182)
#define NV_CHIP_0x0188 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0188)
#define NV_CHIP_0x018A ((PCI_VENDOR_ID_NVIDIA << 16) | 0x018A)
#define NV_CHIP_0x018B ((PCI_VENDOR_ID_NVIDIA << 16) | 0x018B)
#define NV_CHIP_IGEFORCE2 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_IGEFORCE2)
#define NV_CHIP_0x01F0 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x01F0)
#define NV_CHIP_GEFORCE3 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE3)
#define NV_CHIP_GEFORCE3_TI_200 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI_200)
#define NV_CHIP_GEFORCE3_TI_500 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE3_TI_500)
#define NV_CHIP_QUADRO_DCC ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO_DCC)
#define NV_CHIP_GEFORCE4_TI_4600 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4600)
#define NV_CHIP_GEFORCE4_TI_4400 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4400)
#define NV_CHIP_GEFORCE4_TI_4200 ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200)
#define NV_CHIP_QUADRO4_900XGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL)
#define NV_CHIP_QUADRO4_750XGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL)
#define NV_CHIP_QUADRO4_700XGL ((PCI_VENDOR_ID_NVIDIA << 16) | PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL)
#define NV_CHIP_0x0280 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0280)
#define NV_CHIP_0x0281 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0281)
#define NV_CHIP_0x0288 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0288)
#define NV_CHIP_0x0289 ((PCI_VENDOR_ID_NVIDIA << 16) | 0x0289)
#endif /* __NV_STRUCT_H__ */
...@@ -46,8 +46,12 @@ ...@@ -46,8 +46,12 @@
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c,v 1.8 2000/02/08 17:19:11 dawes Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_hw.c,v 1.8 2000/02/08 17:19:11 dawes Exp $ */
#include <linux/pci_ids.h>
#include <linux/pci.h>
#include "riva_hw.h" #include "riva_hw.h"
#include "riva_tbl.h" #include "riva_tbl.h"
#include "nv_type.h"
/* /*
* This file is an OS-agnostic file used to make RIVA 128 and RIVA TNT * This file is an OS-agnostic file used to make RIVA 128 and RIVA TNT
* operate identically (except TNT has more memory and better 3D quality. * operate identically (except TNT has more memory and better 3D quality.
...@@ -76,29 +80,29 @@ static int nv10Busy ...@@ -76,29 +80,29 @@ static int nv10Busy
static void nv3LockUnlock static void nv3LockUnlock
( (
RIVA_HW_INST *chip, RIVA_HW_INST *chip,
int LockUnlock int Lock
) )
{ {
VGA_WR08(chip->PVIO, 0x3C4, 0x06); VGA_WR08(chip->PVIO, 0x3C4, 0x06);
VGA_WR08(chip->PVIO, 0x3C5, LockUnlock ? 0x99 : 0x57); VGA_WR08(chip->PVIO, 0x3C5, Lock ? 0x99 : 0x57);
} }
static void nv4LockUnlock static void nv4LockUnlock
( (
RIVA_HW_INST *chip, RIVA_HW_INST *chip,
int LockUnlock int Lock
) )
{ {
VGA_WR08(chip->PCIO, 0x3D4, 0x1F); VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57); VGA_WR08(chip->PCIO, 0x3D5, Lock ? 0x99 : 0x57);
} }
static void nv10LockUnlock static void nv10LockUnlock
( (
RIVA_HW_INST *chip, RIVA_HW_INST *chip,
int LockUnlock int Lock
) )
{ {
VGA_WR08(chip->PCIO, 0x3D4, 0x1F); VGA_WR08(chip->PCIO, 0x3D4, 0x1F);
VGA_WR08(chip->PCIO, 0x3D5, LockUnlock ? 0x99 : 0x57); VGA_WR08(chip->PCIO, 0x3D5, Lock ? 0x99 : 0x57);
} }
static int ShowHideCursor static int ShowHideCursor
...@@ -107,13 +111,13 @@ static int ShowHideCursor ...@@ -107,13 +111,13 @@ static int ShowHideCursor
int ShowHide int ShowHide
) )
{ {
int current; int cursor;
current = chip->CurrentState->cursor1; cursor = chip->CurrentState->cursor1;
chip->CurrentState->cursor1 = (chip->CurrentState->cursor1 & 0xFE) | chip->CurrentState->cursor1 = (chip->CurrentState->cursor1 & 0xFE) |
(ShowHide & 0x01); (ShowHide & 0x01);
VGA_WR08(chip->PCIO, 0x3D4, 0x31); VGA_WR08(chip->PCIO, 0x3D4, 0x31);
VGA_WR08(chip->PCIO, 0x3D5, chip->CurrentState->cursor1); VGA_WR08(chip->PCIO, 0x3D5, chip->CurrentState->cursor1);
return (current & 0x01); return (cursor & 0x01);
} }
/****************************************************************************\ /****************************************************************************\
...@@ -1285,6 +1289,7 @@ static void UpdateFifoState ...@@ -1285,6 +1289,7 @@ static void UpdateFifoState
chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]); chip->Tri05 = (RivaTexturedTriangle05 *)&(chip->FIFO[0x0000E000/4]);
break; break;
case NV_ARCH_10: case NV_ARCH_10:
case NV_ARCH_20:
/* /*
* Initialize state for the RivaTriangle3D05 routines. * Initialize state for the RivaTriangle3D05 routines.
*/ */
......
...@@ -49,6 +49,20 @@ ...@@ -49,6 +49,20 @@
#define __RIVA_HW_H__ #define __RIVA_HW_H__
#define RIVA_SW_VERSION 0x00010003 #define RIVA_SW_VERSION 0x00010003
#ifndef Bool
typedef int Bool;
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
/* /*
* Typedefs to force certain sized values. * Typedefs to force certain sized values.
*/ */
...@@ -59,8 +73,14 @@ typedef unsigned int U032; ...@@ -59,8 +73,14 @@ typedef unsigned int U032;
/* /*
* HW access macros. * HW access macros.
*/ */
#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d)) #if defined(__powerpc__)
#define NV_RD08(p,i) (((U008 *)(p))[i]) #include <asm/io.h>
#define NV_WR08(p,i,d) out_8(p+i, d)
#define NV_RD08(p,i) in_8(p+i)
#else
#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d))
#define NV_RD08(p,i) (((U008 *)(p))[i])
#endif
#define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d)) #define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d))
#define NV_RD16(p,i) (((U016 *)(p))[(i)/2]) #define NV_RD16(p,i) (((U016 *)(p))[(i)/2])
#define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d)) #define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d))
...@@ -75,6 +95,7 @@ typedef unsigned int U032; ...@@ -75,6 +95,7 @@ typedef unsigned int U032;
#define NV_ARCH_04 0x04 #define NV_ARCH_04 0x04
#define NV_ARCH_10 0x10 #define NV_ARCH_10 0x10
#define NV_ARCH_20 0x20 #define NV_ARCH_20 0x20
/***************************************************************************\ /***************************************************************************\
* * * *
* FIFO registers. * * FIFO registers. *
...@@ -87,8 +108,12 @@ typedef unsigned int U032; ...@@ -87,8 +108,12 @@ typedef unsigned int U032;
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BB]; U032 reserved01[0x0BB];
U032 Rop3; U032 Rop3;
} RivaRop; } RivaRop;
...@@ -98,8 +123,12 @@ typedef volatile struct ...@@ -98,8 +123,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BD]; U032 reserved01[0x0BD];
U032 Shape; U032 Shape;
U032 reserved03[0x001]; U032 reserved03[0x001];
...@@ -113,8 +142,12 @@ typedef volatile struct ...@@ -113,8 +142,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BB]; U032 reserved01[0x0BB];
U032 TopLeft; U032 TopLeft;
U032 WidthHeight; U032 WidthHeight;
...@@ -125,8 +158,12 @@ typedef volatile struct ...@@ -125,8 +158,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop[1]; U016 Nop[1];
#endif
U032 reserved01[0x0BC]; U032 reserved01[0x0BC];
U032 Color; U032 Color;
U032 reserved03[0x03E]; U032 reserved03[0x03E];
...@@ -139,8 +176,12 @@ typedef volatile struct ...@@ -139,8 +176,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BB]; U032 reserved01[0x0BB];
U032 TopLeftSrc; U032 TopLeftSrc;
U032 TopLeftDst; U032 TopLeftDst;
...@@ -152,8 +193,12 @@ typedef volatile struct ...@@ -152,8 +193,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop[1]; U016 Nop[1];
#endif
U032 reserved01[0x0BC]; U032 reserved01[0x0BC];
U032 TopLeft; U032 TopLeft;
U032 WidthHeight; U032 WidthHeight;
...@@ -167,8 +212,12 @@ typedef volatile struct ...@@ -167,8 +212,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BB]; U032 reserved01[0x0BB];
U032 reserved03[(0x040)-1]; U032 reserved03[(0x040)-1];
U032 Color1A; U032 Color1A;
...@@ -229,8 +278,12 @@ typedef volatile struct ...@@ -229,8 +278,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BC]; U032 reserved01[0x0BC];
U032 TextureOffset; U032 TextureOffset;
U032 TextureFormat; U032 TextureFormat;
...@@ -255,8 +308,12 @@ typedef volatile struct ...@@ -255,8 +308,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BB]; U032 reserved01[0x0BB];
U032 ColorKey; U032 ColorKey;
U032 TextureOffset; U032 TextureOffset;
...@@ -289,8 +346,12 @@ typedef volatile struct ...@@ -289,8 +346,12 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop[1]; U016 Nop[1];
#endif
U032 reserved01[0x0BC]; U032 reserved01[0x0BC];
U032 Color; /* source color 0304-0307*/ U032 Color; /* source color 0304-0307*/
U032 Reserved02[0x03e]; U032 Reserved02[0x03e];
...@@ -320,16 +381,24 @@ typedef volatile struct ...@@ -320,16 +381,24 @@ typedef volatile struct
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BE]; U032 reserved01[0x0BE];
U032 Offset; U032 Offset;
} RivaSurface; } RivaSurface;
typedef volatile struct typedef volatile struct
{ {
U032 reserved00[4]; U032 reserved00[4];
#ifdef __BIG_ENDIAN
U032 FifoFree;
#else
U016 FifoFree; U016 FifoFree;
U016 Nop; U016 Nop;
#endif
U032 reserved01[0x0BD]; U032 reserved01[0x0BD];
U032 Pitch; U032 Pitch;
U032 RenderBufferOffset; U032 RenderBufferOffset;
...@@ -342,6 +411,9 @@ typedef volatile struct ...@@ -342,6 +411,9 @@ typedef volatile struct
* * * *
\***************************************************************************/ \***************************************************************************/
#define FP_ENABLE 1
#define FP_DITHER 2
struct _riva_hw_inst; struct _riva_hw_inst;
struct _riva_hw_state; struct _riva_hw_state;
/* /*
...@@ -354,6 +426,7 @@ typedef struct _riva_hw_inst ...@@ -354,6 +426,7 @@ typedef struct _riva_hw_inst
*/ */
U032 Architecture; U032 Architecture;
U032 Version; U032 Version;
U032 Chipset;
U032 CrystalFreqKHz; U032 CrystalFreqKHz;
U032 RamAmountKBytes; U032 RamAmountKBytes;
U032 MaxVClockFreqKHz; U032 MaxVClockFreqKHz;
...@@ -363,11 +436,15 @@ typedef struct _riva_hw_inst ...@@ -363,11 +436,15 @@ typedef struct _riva_hw_inst
U032 VBlankBit; U032 VBlankBit;
U032 FifoFreeCount; U032 FifoFreeCount;
U032 FifoEmptyCount; U032 FifoEmptyCount;
U032 CursorStart;
U032 flatPanel;
Bool twoHeads;
/* /*
* Non-FIFO registers. * Non-FIFO registers.
*/ */
volatile U032 *PCRTC0;
volatile U032 *PCRTC; volatile U032 *PCRTC;
volatile U032 *PRAMDAC; volatile U032 *PRAMDAC0;
volatile U032 *PFB; volatile U032 *PFB;
volatile U032 *PFIFO; volatile U032 *PFIFO;
volatile U032 *PGRAPH; volatile U032 *PGRAPH;
...@@ -380,9 +457,12 @@ typedef struct _riva_hw_inst ...@@ -380,9 +457,12 @@ typedef struct _riva_hw_inst
volatile U032 *CURSORPOS; volatile U032 *CURSORPOS;
volatile U032 *VBLANKENABLE; volatile U032 *VBLANKENABLE;
volatile U032 *VBLANK; volatile U032 *VBLANK;
volatile U008 *PCIO0;
volatile U008 *PCIO; volatile U008 *PCIO;
volatile U008 *PVIO; volatile U008 *PVIO;
volatile U008 *PDIO0;
volatile U008 *PDIO; volatile U008 *PDIO;
volatile U032 *PRAMDAC;
/* /*
* Common chip functions. * Common chip functions.
*/ */
...@@ -420,17 +500,26 @@ typedef struct _riva_hw_state ...@@ -420,17 +500,26 @@ typedef struct _riva_hw_state
U032 bpp; U032 bpp;
U032 width; U032 width;
U032 height; U032 height;
U032 interlace;
U032 repaint0; U032 repaint0;
U032 repaint1; U032 repaint1;
U032 screen; U032 screen;
U032 scale;
U032 dither;
U032 extra;
U032 pixel; U032 pixel;
U032 horiz; U032 horiz;
U032 arbitration0; U032 arbitration0;
U032 arbitration1; U032 arbitration1;
U032 vpll; U032 vpll;
U032 vpll2;
U032 pllsel; U032 pllsel;
U032 general; U032 general;
U032 crtcOwner;
U032 head;
U032 head2;
U032 config; U032 config;
U032 cursorConfig;
U032 cursor0; U032 cursor0;
U032 cursor1; U032 cursor1;
U032 cursor2; U032 cursor2;
......
...@@ -44,7 +44,9 @@ ...@@ -44,7 +44,9 @@
* from this source. -- Jeff Garzik <jgarzik@pobox.com>, 01/Nov/99 * from this source. -- Jeff Garzik <jgarzik@pobox.com>, 01/Nov/99
*/ */
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h,v 1.5 2000/02/08 17:19:12 dawes Exp $ */ /* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nv/riva_tbl.h,v 1.9 2002/01/30 01:35:03 mvojkovi Exp $ */
/* /*
* RIVA Fixed Functionality Init Tables. * RIVA Fixed Functionality Init Tables.
*/ */
...@@ -69,6 +71,7 @@ static unsigned RivaTableFIFO[][2] = ...@@ -69,6 +71,7 @@ static unsigned RivaTableFIFO[][2] =
{0x00001800, 0x80000010}, {0x00001800, 0x80000010},
{0x00002000, 0x80000011}, {0x00002000, 0x80000011},
{0x00002800, 0x80000012}, {0x00002800, 0x80000012},
{0x00003000, 0x80000016},
{0x00003800, 0x80000013} {0x00003800, 0x80000013}
}; };
static unsigned nv3TablePFIFO[][2] = static unsigned nv3TablePFIFO[][2] =
...@@ -174,6 +177,8 @@ static unsigned nv3TablePRAMIN[][2] = ...@@ -174,6 +177,8 @@ static unsigned nv3TablePRAMIN[][2] =
{0x00000249, 0x00CC0346}, {0x00000249, 0x00CC0346},
{0x0000024C, 0x80000013}, {0x0000024C, 0x80000013},
{0x0000024D, 0x00D70347}, {0x0000024D, 0x00D70347},
{0x00000258, 0x80000016},
{0x00000259, 0x00CA034C},
{0x00000D05, 0x00000000}, {0x00000D05, 0x00000000},
{0x00000D06, 0x00000000}, {0x00000D06, 0x00000000},
{0x00000D07, 0x00000000}, {0x00000D07, 0x00000000},
...@@ -210,7 +215,10 @@ static unsigned nv3TablePRAMIN[][2] = ...@@ -210,7 +215,10 @@ static unsigned nv3TablePRAMIN[][2] =
{0x00000D2C, 0x10830200}, {0x00000D2C, 0x10830200},
{0x00000D2D, 0x00000000}, {0x00000D2D, 0x00000000},
{0x00000D2E, 0x00000000}, {0x00000D2E, 0x00000000},
{0x00000D2F, 0x00000000} {0x00000D2F, 0x00000000},
{0x00000D31, 0x00000000},
{0x00000D32, 0x00000000},
{0x00000D33, 0x00000000}
}; };
static unsigned nv3TablePRAMIN_8BPP[][2] = static unsigned nv3TablePRAMIN_8BPP[][2] =
{ {
...@@ -222,7 +230,8 @@ static unsigned nv3TablePRAMIN_8BPP[][2] = ...@@ -222,7 +230,8 @@ static unsigned nv3TablePRAMIN_8BPP[][2] =
{0x00000D10, 0x10118203}, {0x00000D10, 0x10118203},
{0x00000D14, 0x10110203}, {0x00000D14, 0x10110203},
{0x00000D18, 0x10110203}, {0x00000D18, 0x10110203},
{0x00000D1C, 0x10419208} {0x00000D1C, 0x10419208},
{0x00000D30, 0x10118203}
}; };
static unsigned nv3TablePRAMIN_15BPP[][2] = static unsigned nv3TablePRAMIN_15BPP[][2] =
{ {
...@@ -234,7 +243,8 @@ static unsigned nv3TablePRAMIN_15BPP[][2] = ...@@ -234,7 +243,8 @@ static unsigned nv3TablePRAMIN_15BPP[][2] =
{0x00000D10, 0x10118200}, {0x00000D10, 0x10118200},
{0x00000D14, 0x10110200}, {0x00000D14, 0x10110200},
{0x00000D18, 0x10110200}, {0x00000D18, 0x10110200},
{0x00000D1C, 0x10419208} {0x00000D1C, 0x10419208},
{0x00000D30, 0x10118200}
}; };
static unsigned nv3TablePRAMIN_32BPP[][2] = static unsigned nv3TablePRAMIN_32BPP[][2] =
{ {
...@@ -246,7 +256,8 @@ static unsigned nv3TablePRAMIN_32BPP[][2] = ...@@ -246,7 +256,8 @@ static unsigned nv3TablePRAMIN_32BPP[][2] =
{0x00000D10, 0x10118201}, {0x00000D10, 0x10118201},
{0x00000D14, 0x10110201}, {0x00000D14, 0x10110201},
{0x00000D18, 0x10110201}, {0x00000D18, 0x10110201},
{0x00000D1C, 0x10419208} {0x00000D1C, 0x10419208},
{0x00000D30, 0x10118201}
}; };
static unsigned nv4TableFIFO[][2] = static unsigned nv4TableFIFO[][2] =
{ {
...@@ -370,6 +381,8 @@ static unsigned nv4TablePRAMIN[][2] = ...@@ -370,6 +381,8 @@ static unsigned nv4TablePRAMIN[][2] =
{0x00000009, 0x80011149}, {0x00000009, 0x80011149},
{0x0000000A, 0x80000015}, {0x0000000A, 0x80000015},
{0x0000000B, 0x8001114A}, {0x0000000B, 0x8001114A},
{0x0000000C, 0x80000016},
{0x0000000D, 0x8001114F},
{0x00000020, 0x80000000}, {0x00000020, 0x80000000},
{0x00000021, 0x80011142}, {0x00000021, 0x80011142},
{0x00000022, 0x80000001}, {0x00000022, 0x80000001},
...@@ -437,7 +450,10 @@ static unsigned nv4TablePRAMIN[][2] = ...@@ -437,7 +450,10 @@ static unsigned nv4TablePRAMIN[][2] =
{0x00000537, 0x00000000}, {0x00000537, 0x00000000},
{0x00000538, 0x0000005B}, {0x00000538, 0x0000005B},
{0x0000053A, 0x11401140}, {0x0000053A, 0x11401140},
{0x0000053B, 0x00000000} {0x0000053B, 0x00000000},
{0x0000053C, 0x0300A01C},
{0x0000053E, 0x11401140},
{0x0000053F, 0x00000000}
}; };
static unsigned nv4TablePRAMIN_8BPP[][2] = static unsigned nv4TablePRAMIN_8BPP[][2] =
{ {
...@@ -452,7 +468,8 @@ static unsigned nv4TablePRAMIN_8BPP[][2] = ...@@ -452,7 +468,8 @@ static unsigned nv4TablePRAMIN_8BPP[][2] =
{0x0000052D, 0x00000302}, {0x0000052D, 0x00000302},
{0x0000052E, 0x00000302}, {0x0000052E, 0x00000302},
{0x00000535, 0x00000000}, {0x00000535, 0x00000000},
{0x00000539, 0x00000000} {0x00000539, 0x00000000},
{0x0000053D, 0x00000302}
}; };
static unsigned nv4TablePRAMIN_15BPP[][2] = static unsigned nv4TablePRAMIN_15BPP[][2] =
{ {
...@@ -467,7 +484,8 @@ static unsigned nv4TablePRAMIN_15BPP[][2] = ...@@ -467,7 +484,8 @@ static unsigned nv4TablePRAMIN_15BPP[][2] =
{0x0000052D, 0x00000902}, {0x0000052D, 0x00000902},
{0x0000052E, 0x00000902}, {0x0000052E, 0x00000902},
{0x00000535, 0x00000702}, {0x00000535, 0x00000702},
{0x00000539, 0x00000702} {0x00000539, 0x00000702},
{0x0000053D, 0x00000902}
}; };
static unsigned nv4TablePRAMIN_16BPP[][2] = static unsigned nv4TablePRAMIN_16BPP[][2] =
{ {
...@@ -482,7 +500,8 @@ static unsigned nv4TablePRAMIN_16BPP[][2] = ...@@ -482,7 +500,8 @@ static unsigned nv4TablePRAMIN_16BPP[][2] =
{0x0000052D, 0x00000C02}, {0x0000052D, 0x00000C02},
{0x0000052E, 0x00000C02}, {0x0000052E, 0x00000C02},
{0x00000535, 0x00000702}, {0x00000535, 0x00000702},
{0x00000539, 0x00000702} {0x00000539, 0x00000702},
{0x0000053D, 0x00000C02}
}; };
static unsigned nv4TablePRAMIN_32BPP[][2] = static unsigned nv4TablePRAMIN_32BPP[][2] =
{ {
...@@ -497,7 +516,8 @@ static unsigned nv4TablePRAMIN_32BPP[][2] = ...@@ -497,7 +516,8 @@ static unsigned nv4TablePRAMIN_32BPP[][2] =
{0x0000052D, 0x00000E02}, {0x0000052D, 0x00000E02},
{0x0000052E, 0x00000E02}, {0x0000052E, 0x00000E02},
{0x00000535, 0x00000E02}, {0x00000535, 0x00000E02},
{0x00000539, 0x00000E02} {0x00000539, 0x00000E02},
{0x0000053D, 0x00000E02}
}; };
static unsigned nv10TableFIFO[][2] = static unsigned nv10TableFIFO[][2] =
{ {
...@@ -810,6 +830,8 @@ static unsigned nv10TablePRAMIN[][2] = ...@@ -810,6 +830,8 @@ static unsigned nv10TablePRAMIN[][2] =
{0x00000009, 0x80011149}, {0x00000009, 0x80011149},
{0x0000000A, 0x80000015}, {0x0000000A, 0x80000015},
{0x0000000B, 0x8001114A}, {0x0000000B, 0x8001114A},
{0x0000000C, 0x80000016},
{0x0000000D, 0x80011150},
{0x00000020, 0x80000000}, {0x00000020, 0x80000000},
{0x00000021, 0x80011142}, {0x00000021, 0x80011142},
{0x00000022, 0x80000001}, {0x00000022, 0x80000001},
...@@ -830,29 +852,45 @@ static unsigned nv10TablePRAMIN[][2] = ...@@ -830,29 +852,45 @@ static unsigned nv10TablePRAMIN[][2] =
{0x00000501, 0x01FFFFFF}, {0x00000501, 0x01FFFFFF},
{0x00000502, 0x00000002}, {0x00000502, 0x00000002},
{0x00000503, 0x00000002}, {0x00000503, 0x00000002},
#ifdef __BIG_ENDIAN
{0x00000508, 0x01088043},
#else
{0x00000508, 0x01008043}, {0x00000508, 0x01008043},
#endif
{0x0000050A, 0x00000000}, {0x0000050A, 0x00000000},
{0x0000050B, 0x00000000}, {0x0000050B, 0x00000000},
#ifdef __BIG_ENDIAN
{0x0000050C, 0x01088019},
#else
{0x0000050C, 0x01008019}, {0x0000050C, 0x01008019},
#endif
{0x0000050E, 0x00000000}, {0x0000050E, 0x00000000},
{0x0000050F, 0x00000000}, {0x0000050F, 0x00000000},
#if 1 #ifdef __BIG_ENDIAN
{0x00000510, 0x01008018}, {0x00000510, 0x01088018},
#else #else
{0x00000510, 0x01008044}, {0x00000510, 0x01008018},
#endif #endif
{0x00000512, 0x00000000}, {0x00000512, 0x00000000},
{0x00000513, 0x00000000}, {0x00000513, 0x00000000},
#ifdef __BIG_ENDIAN
{0x00000514, 0x01088021},
#else
{0x00000514, 0x01008021}, {0x00000514, 0x01008021},
#endif
{0x00000516, 0x00000000}, {0x00000516, 0x00000000},
{0x00000517, 0x00000000}, {0x00000517, 0x00000000},
#ifdef __BIG_ENDIAN
{0x00000518, 0x0108805F},
#else
{0x00000518, 0x0100805F}, {0x00000518, 0x0100805F},
#endif
{0x0000051A, 0x00000000}, {0x0000051A, 0x00000000},
{0x0000051B, 0x00000000}, {0x0000051B, 0x00000000},
#if 1 #ifdef __BIG_ENDIAN
{0x0000051C, 0x0100804B}, {0x0000051C, 0x0108804B},
#else #else
{0x0000051C, 0x0100804A}, {0x0000051C, 0x0100804B},
#endif #endif
{0x0000051E, 0x00000000}, {0x0000051E, 0x00000000},
{0x0000051F, 0x00000000}, {0x0000051F, 0x00000000},
...@@ -868,10 +906,18 @@ static unsigned nv10TablePRAMIN[][2] = ...@@ -868,10 +906,18 @@ static unsigned nv10TablePRAMIN[][2] =
{0x00000529, 0x00000D01}, {0x00000529, 0x00000D01},
{0x0000052A, 0x11401140}, {0x0000052A, 0x11401140},
{0x0000052B, 0x00000000}, {0x0000052B, 0x00000000},
#ifdef __BIG_ENDIAN
{0x0000052C, 0x00080058},
#else
{0x0000052C, 0x00000058}, {0x0000052C, 0x00000058},
#endif
{0x0000052E, 0x11401140}, {0x0000052E, 0x11401140},
{0x0000052F, 0x00000000}, {0x0000052F, 0x00000000},
#ifdef __BIG_ENDIAN
{0x00000530, 0x00080059},
#else
{0x00000530, 0x00000059}, {0x00000530, 0x00000059},
#endif
{0x00000532, 0x11401140}, {0x00000532, 0x11401140},
{0x00000533, 0x00000000}, {0x00000533, 0x00000000},
{0x00000534, 0x0000005A}, {0x00000534, 0x0000005A},
...@@ -882,7 +928,14 @@ static unsigned nv10TablePRAMIN[][2] = ...@@ -882,7 +928,14 @@ static unsigned nv10TablePRAMIN[][2] =
{0x0000053B, 0x00000000}, {0x0000053B, 0x00000000},
{0x0000053C, 0x00000093}, {0x0000053C, 0x00000093},
{0x0000053E, 0x11401140}, {0x0000053E, 0x11401140},
{0x0000053F, 0x00000000} {0x0000053F, 0x00000000},
#ifdef __BIG_ENDIAN
{0x00000540, 0x0308A01C},
#else
{0x00000540, 0x0300A01C},
#endif
{0x00000542, 0x11401140},
{0x00000543, 0x00000000}
}; };
static unsigned nv10TablePRAMIN_8BPP[][2] = static unsigned nv10TablePRAMIN_8BPP[][2] =
{ {
...@@ -898,7 +951,8 @@ static unsigned nv10TablePRAMIN_8BPP[][2] = ...@@ -898,7 +951,8 @@ static unsigned nv10TablePRAMIN_8BPP[][2] =
{0x0000052E, 0x00000302}, {0x0000052E, 0x00000302},
{0x00000535, 0x00000000}, {0x00000535, 0x00000000},
{0x00000539, 0x00000000}, {0x00000539, 0x00000000},
{0x0000053D, 0x00000000} {0x0000053D, 0x00000000},
{0x00000541, 0x00000302}
}; };
static unsigned nv10TablePRAMIN_15BPP[][2] = static unsigned nv10TablePRAMIN_15BPP[][2] =
{ {
...@@ -914,7 +968,8 @@ static unsigned nv10TablePRAMIN_15BPP[][2] = ...@@ -914,7 +968,8 @@ static unsigned nv10TablePRAMIN_15BPP[][2] =
{0x0000052E, 0x00000902}, {0x0000052E, 0x00000902},
{0x00000535, 0x00000902}, {0x00000535, 0x00000902},
{0x00000539, 0x00000902}, {0x00000539, 0x00000902},
{0x0000053D, 0x00000902} {0x0000053D, 0x00000902},
{0x00000541, 0x00000902}
}; };
static unsigned nv10TablePRAMIN_16BPP[][2] = static unsigned nv10TablePRAMIN_16BPP[][2] =
{ {
...@@ -930,7 +985,8 @@ static unsigned nv10TablePRAMIN_16BPP[][2] = ...@@ -930,7 +985,8 @@ static unsigned nv10TablePRAMIN_16BPP[][2] =
{0x0000052E, 0x00000C02}, {0x0000052E, 0x00000C02},
{0x00000535, 0x00000C02}, {0x00000535, 0x00000C02},
{0x00000539, 0x00000C02}, {0x00000539, 0x00000C02},
{0x0000053D, 0x00000C02} {0x0000053D, 0x00000C02},
{0x00000541, 0x00000C02}
}; };
static unsigned nv10TablePRAMIN_32BPP[][2] = static unsigned nv10TablePRAMIN_32BPP[][2] =
{ {
...@@ -946,6 +1002,7 @@ static unsigned nv10TablePRAMIN_32BPP[][2] = ...@@ -946,6 +1002,7 @@ static unsigned nv10TablePRAMIN_32BPP[][2] =
{0x0000052E, 0x00000E02}, {0x0000052E, 0x00000E02},
{0x00000535, 0x00000E02}, {0x00000535, 0x00000E02},
{0x00000539, 0x00000E02}, {0x00000539, 0x00000E02},
{0x0000053D, 0x00000E02} {0x0000053D, 0x00000E02},
{0x00000541, 0x00000E02}
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment