removed more nvidia refs
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9796 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -38,7 +38,7 @@ typedef struct {
|
||||
#define DELETE_BEN(x) delete_sem(x.sem);
|
||||
|
||||
|
||||
#define NV_PRIVATE_DATA_MAGIC 0x0009 /* a private driver rev, of sorts */
|
||||
#define SKEL_PRIVATE_DATA_MAGIC 0x0009 /* a private driver rev, of sorts */
|
||||
|
||||
/*dualhead extensions to flags*/
|
||||
#define DUALHEAD_OFF (0<<6)
|
||||
@@ -61,15 +61,15 @@ typedef struct {
|
||||
#define SKD_HANDLER_INSTALLED 0x80000000
|
||||
|
||||
enum {
|
||||
NV_GET_PRIVATE_DATA = B_DEVICE_OP_CODES_END + 1,
|
||||
NV_GET_PCI,
|
||||
NV_SET_PCI,
|
||||
NV_DEVICE_NAME,
|
||||
NV_RUN_INTERRUPTS,
|
||||
NV_GET_NTH_AGP_INFO,
|
||||
NV_ENABLE_AGP,
|
||||
NV_ISA_OUT,
|
||||
NV_ISA_IN
|
||||
ENG_GET_PRIVATE_DATA = B_DEVICE_OP_CODES_END + 1,
|
||||
ENG_GET_PCI,
|
||||
ENG_SET_PCI,
|
||||
ENG_DEVICE_NAME,
|
||||
ENG_RUN_INTERRUPTS,
|
||||
ENG_GET_NTH_AGP_INFO,
|
||||
ENG_ENABLE_AGP,
|
||||
ENG_ISA_OUT,
|
||||
ENG_ISA_IN
|
||||
};
|
||||
|
||||
/* max. number of overlay buffers */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,9 +25,9 @@ static status_t init_common(int the_fd) {
|
||||
/* memorize the file descriptor */
|
||||
fd = the_fd;
|
||||
/* set the magic number so the driver knows we're for real */
|
||||
gpd.magic = NV_PRIVATE_DATA_MAGIC;
|
||||
gpd.magic = SKEL_PRIVATE_DATA_MAGIC;
|
||||
/* contact driver and get a pointer to the registers and shared data */
|
||||
result = ioctl(fd, NV_GET_PRIVATE_DATA, &gpd, sizeof(gpd));
|
||||
result = ioctl(fd, ENG_GET_PRIVATE_DATA, &gpd, sizeof(gpd));
|
||||
if (result != B_OK) goto error0;
|
||||
|
||||
/* clone the shared area for our use */
|
||||
@@ -211,7 +211,7 @@ ssize_t ACCELERANT_CLONE_INFO_SIZE(void) {
|
||||
Since we're passing the name of the device as the only required
|
||||
info, return the size of the name buffer
|
||||
*/
|
||||
return B_OS_NAME_LENGTH; // apsed, was MAX_NV_DEVICE_NAME_LENGTH;
|
||||
return B_OS_NAME_LENGTH; // apsed, was MAX_ENG_DEVICE_NAME_LENGTH;
|
||||
}
|
||||
|
||||
|
||||
@@ -224,10 +224,10 @@ void GET_ACCELERANT_CLONE_INFO(void *data) {
|
||||
status_t result;
|
||||
|
||||
/* call the kernel driver to get the device name */
|
||||
dn.magic = NV_PRIVATE_DATA_MAGIC;
|
||||
dn.magic = SKEL_PRIVATE_DATA_MAGIC;
|
||||
/* store the returned info directly into the passed buffer */
|
||||
dn.name = (char *)data;
|
||||
result = ioctl(fd, NV_DEVICE_NAME, &dn, sizeof(dn));
|
||||
result = ioctl(fd, ENG_DEVICE_NAME, &dn, sizeof(dn));
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -22,10 +22,10 @@ static void interrupt_enable(bool flag) {
|
||||
eng_set_bool_state sbs;
|
||||
|
||||
/* set the magic number so the driver knows we're for real */
|
||||
sbs.magic = NV_PRIVATE_DATA_MAGIC;
|
||||
sbs.magic = SKEL_PRIVATE_DATA_MAGIC;
|
||||
sbs.do_it = flag;
|
||||
/* contact driver and get a pointer to the registers and shared data */
|
||||
result = ioctl(fd, NV_RUN_INTERRUPTS, &sbs, sizeof(sbs));
|
||||
result = ioctl(fd, ENG_RUN_INTERRUPTS, &sbs, sizeof(sbs));
|
||||
}
|
||||
|
||||
/* First validate the mode, then call lots of bit banging stuff to set the mode(s)! */
|
||||
|
||||
@@ -52,7 +52,7 @@ status_t eng_acc_init()
|
||||
if (si->ps.card_arch == NV04A)
|
||||
{
|
||||
/* set framebuffer config: type = notiling, PRAMIN write access enabled */
|
||||
NV_REG32(NV32_PFB_CONFIG_0) = 0x00001114;
|
||||
ENG_RG32(RG32_PFB_CONFIG_0) = 0x00001114;
|
||||
}
|
||||
|
||||
/*** PFIFO ***/
|
||||
@@ -685,7 +685,7 @@ status_t eng_acc_init()
|
||||
* setup clipping region (workspace size) to 32768 x 32768 pixels:
|
||||
* wait for room in fifo for clipping cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_CLP_FIFOFREE)) >> 2) < 2)
|
||||
while (((ENG_REG16(RG16_CLP_FIFOFREE)) >> 2) < 2)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -703,7 +703,7 @@ status_t eng_acc_setup_blit()
|
||||
/* setup solid pattern:
|
||||
* wait for room in fifo for pattern cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
while (((ENG_REG16(RG16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -718,7 +718,7 @@ status_t eng_acc_setup_blit()
|
||||
/* ROP3 registers (Raster OPeration):
|
||||
* wait for room in fifo for ROP cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
while (((ENG_REG16(RG16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -736,7 +736,7 @@ status_t eng_acc_blit(uint16 xs,uint16 ys,uint16 xd,uint16 yd,uint16 w,uint16 h)
|
||||
/* instruct engine what to blit:
|
||||
* wait for room in fifo for blit cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_BLT_FIFOFREE)) >> 2) < 3)
|
||||
while (((ENG_REG16(RG16_BLT_FIFOFREE)) >> 2) < 3)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -756,7 +756,7 @@ status_t eng_acc_setup_rectangle(uint32 color)
|
||||
/* setup solid pattern:
|
||||
* wait for room in fifo for pattern cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
while (((ENG_REG16(RG16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -771,7 +771,7 @@ status_t eng_acc_setup_rectangle(uint32 color)
|
||||
/* ROP3 registers (Raster OPeration):
|
||||
* wait for room in fifo for ROP cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
while (((ENG_REG16(RG16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -782,7 +782,7 @@ status_t eng_acc_setup_rectangle(uint32 color)
|
||||
/* setup fill color:
|
||||
* wait for room in fifo for bitmap cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_BMP_FIFOFREE)) >> 2) < 1)
|
||||
while (((ENG_REG16(RG16_BMP_FIFOFREE)) >> 2) < 1)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -798,7 +798,7 @@ status_t eng_acc_rectangle(uint32 xs,uint32 xe,uint32 ys,uint32 yl)
|
||||
/* instruct engine what to fill:
|
||||
* wait for room in fifo for bitmap cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_BMP_FIFOFREE)) >> 2) < 2)
|
||||
while (((ENG_REG16(RG16_BMP_FIFOFREE)) >> 2) < 2)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -816,7 +816,7 @@ status_t eng_acc_setup_rect_invert()
|
||||
/* setup solid pattern:
|
||||
* wait for room in fifo for pattern cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
while (((ENG_REG16(RG16_PAT_FIFOFREE)) >> 2) < 5)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -831,7 +831,7 @@ status_t eng_acc_setup_rect_invert()
|
||||
/* ROP3 registers (Raster OPeration):
|
||||
* wait for room in fifo for ROP cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
while (((ENG_REG16(RG16_ROP_FIFOFREE)) >> 2) < 1)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -842,7 +842,7 @@ status_t eng_acc_setup_rect_invert()
|
||||
/* reset fill color:
|
||||
* wait for room in fifo for bitmap cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_BMP_FIFOFREE)) >> 2) < 1)
|
||||
while (((ENG_REG16(RG16_BMP_FIFOFREE)) >> 2) < 1)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
@@ -858,7 +858,7 @@ status_t eng_acc_rectangle_invert(uint32 xs,uint32 xe,uint32 ys,uint32 yl)
|
||||
/* instruct engine what to invert:
|
||||
* wait for room in fifo for bitmap cmd if needed.
|
||||
* (fifo holds 256 32bit words: count those, not bytes) */
|
||||
while (((NV_REG16(NV16_BMP_FIFOFREE)) >> 2) < 2)
|
||||
while (((ENG_REG16(RG16_BMP_FIFOFREE)) >> 2) < 2)
|
||||
{
|
||||
/* snooze a bit so I do not hammer the bus */
|
||||
snooze (10);
|
||||
|
||||
@@ -25,26 +25,26 @@ status_t eng_agp_setup(void)
|
||||
{
|
||||
uint32 reg;
|
||||
|
||||
LOG(4, ("AGP: STRAPINFO2 contains $%08x\n", NV_REG32(NV32_NVSTRAPINFO2)));
|
||||
LOG(4, ("AGP: STRAPINFO2 contains $%08x\n", ENG_RG32(RG32_NVSTRAPINFO2)));
|
||||
|
||||
LOG(4, ("AGP: attempting to enable fastwrite support..\n"));
|
||||
/* 'force' FW support */
|
||||
reg = (NV_REG32(NV32_NVSTRAPINFO2) & ~0x00000800);
|
||||
reg = (ENG_RG32(RG32_NVSTRAPINFO2) & ~0x00000800);
|
||||
/* enable strapinfo overwrite */
|
||||
NV_REG32(NV32_NVSTRAPINFO2) = (reg | 0x80000000);
|
||||
ENG_RG32(RG32_NVSTRAPINFO2) = (reg | 0x80000000);
|
||||
|
||||
LOG(4, ("AGP: STRAPINFO2 now contains $%08x\n", NV_REG32(NV32_NVSTRAPINFO2)));
|
||||
LOG(4, ("AGP: STRAPINFO2 now contains $%08x\n", ENG_RG32(RG32_NVSTRAPINFO2)));
|
||||
}
|
||||
|
||||
/* set the magic number so the skeleton kerneldriver knows we're for real */
|
||||
nca.magic = nai.magic = NV_PRIVATE_DATA_MAGIC;
|
||||
nca.magic = nai.magic = SKEL_PRIVATE_DATA_MAGIC;
|
||||
|
||||
/* contact driver and get a pointer to the registers and shared data */
|
||||
for (index = 0; index < 8; index++)
|
||||
{
|
||||
/* get nth AGP device info */
|
||||
nai.index = index;
|
||||
ioctl(fd, NV_GET_NTH_AGP_INFO, &nai, sizeof(nai));
|
||||
ioctl(fd, ENG_GET_NTH_AGP_INFO, &nai, sizeof(nai));
|
||||
|
||||
/* abort if no agp busmanager found */
|
||||
if (!nai.agp_bus)
|
||||
@@ -88,8 +88,8 @@ status_t eng_agp_setup(void)
|
||||
/* if our card is not an AGP type, abort here */
|
||||
/* Note:
|
||||
* We have to iterate through the capability list as specified in the PCI spec
|
||||
* one way or the other, otherwise we cannot distinquish between nVidia PCI and
|
||||
* AGP type cards as nVidia PCI cards still have AGP registers that pretend to
|
||||
* one way or the other, otherwise we cannot distinquish between PCI and
|
||||
* AGP type cards as PCI cards still might have AGP registers that pretend to
|
||||
* support AGP.
|
||||
* We rely on the AGP busmanager to iterate trough this list for us. */
|
||||
if (!agp)
|
||||
@@ -110,7 +110,7 @@ status_t eng_agp_setup(void)
|
||||
/* let the AGP busmanager setup PCI mode.
|
||||
* (the AGP speed scheme is of no consequence now) */
|
||||
nca.cmd = 0x00000000;
|
||||
ioctl(fd, NV_ENABLE_AGP, &nca, sizeof(nca));
|
||||
ioctl(fd, ENG_ENABLE_AGP, &nca, sizeof(nca));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -121,7 +121,7 @@ status_t eng_agp_setup(void)
|
||||
nca.cmd = 0xfffffff7;
|
||||
/* ..but we do need to select the right speed scheme fetched from our card */
|
||||
if (eng_ai.interface.agp_stat & AGP_rate_rev) nca.cmd |= AGP_rate_rev;
|
||||
ioctl(fd, NV_ENABLE_AGP, &nca, sizeof(nca));
|
||||
ioctl(fd, ENG_ENABLE_AGP, &nca, sizeof(nca));
|
||||
}
|
||||
|
||||
/* list mode now activated,
|
||||
|
||||
@@ -357,16 +357,16 @@ status_t eng_bes_to_crtc(bool crtc)
|
||||
{
|
||||
LOG(4,("Overlay: switching overlay to CRTC2\n"));
|
||||
/* switch overlay engine to CRTC2 */
|
||||
NV_REG32(NV32_FUNCSEL) &= ~0x00001000;
|
||||
NV_REG32(NV32_2FUNCSEL) |= 0x00001000;
|
||||
ENG_RG32(RG32_FUNCSEL) &= ~0x00001000;
|
||||
ENG_RG32(RG32_2FUNCSEL) |= 0x00001000;
|
||||
si->overlay.crtc = !si->crtc_switch_mode;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG(4,("Overlay: switching overlay to CRTC1\n"));
|
||||
/* switch overlay engine to CRTC1 */
|
||||
NV_REG32(NV32_2FUNCSEL) &= ~0x00001000;
|
||||
NV_REG32(NV32_FUNCSEL) |= 0x00001000;
|
||||
ENG_RG32(RG32_2FUNCSEL) &= ~0x00001000;
|
||||
ENG_RG32(RG32_FUNCSEL) |= 0x00001000;
|
||||
si->overlay.crtc = si->crtc_switch_mode;
|
||||
}
|
||||
return B_OK;
|
||||
|
||||
@@ -280,7 +280,7 @@ status_t eng_crtc_set_timing(display_mode target)
|
||||
|
||||
/* setup HSYNC & VSYNC polarity */
|
||||
LOG(2,("CRTC: sync polarity: "));
|
||||
temp = NV_REG8(NV8_MISCR);
|
||||
temp = ENG_REG8(RG8_MISCR);
|
||||
if (target.timing.flags & B_POSITIVE_HSYNC)
|
||||
{
|
||||
LOG(2,("H:pos "));
|
||||
@@ -301,9 +301,9 @@ status_t eng_crtc_set_timing(display_mode target)
|
||||
LOG(2,("V:neg "));
|
||||
temp |= 0x80;
|
||||
}
|
||||
NV_REG8(NV8_MISCW) = temp;
|
||||
ENG_REG8(RG8_MISCW) = temp;
|
||||
|
||||
LOG(2,(", MISC reg readback: $%02x\n", NV_REG8(NV8_MISCR)));
|
||||
LOG(2,(", MISC reg readback: $%02x\n", ENG_REG8(RG8_MISCR)));
|
||||
}
|
||||
|
||||
/* always disable interlaced operation */
|
||||
@@ -610,7 +610,7 @@ status_t eng_crtc_set_display_start(uint32 startadd,uint8 bpp)
|
||||
|
||||
/* we might have no retraces during setmode! */
|
||||
/* wait 25mS max. for retrace to occur (refresh > 40Hz) */
|
||||
while (((NV_REG32(NV32_RASTER) & 0x000007ff) < si->dm.timing.v_display) &&
|
||||
while (((ENG_RG32(RG32_RASTER) & 0x000007ff) < si->dm.timing.v_display) &&
|
||||
(timeout < (25000/10)))
|
||||
{
|
||||
/* don't snooze much longer or retrace might get missed! */
|
||||
@@ -646,7 +646,7 @@ status_t eng_crtc_set_display_start(uint32 startadd,uint8 bpp)
|
||||
* wrap-around at 16Mb boundaries!! */
|
||||
|
||||
/* 30bit adress in 32bit words */
|
||||
NV_REG32(NV32_NV10FBSTADD32) = (startadd & 0xfffffffc);
|
||||
ENG_RG32(RG32_NV10FBSTADD32) = (startadd & 0xfffffffc);
|
||||
}
|
||||
|
||||
/* set NV4/NV10 byte adress: (b0 - 1) */
|
||||
@@ -686,7 +686,7 @@ status_t eng_crtc_cursor_init()
|
||||
* This register does not exist on pre-NV10 and 'Go' cards. */
|
||||
|
||||
/* cursorbitmap must still start on 2Kbyte boundary: */
|
||||
NV_REG32(NV32_NV10CURADD32) = (curadd & 0xfffff800);
|
||||
ENG_RG32(RG32_NV10CURADD32) = (curadd & 0xfffff800);
|
||||
}
|
||||
|
||||
/* set cursor colour: not needed because of direct nature of cursor bitmap. */
|
||||
@@ -699,7 +699,7 @@ status_t eng_crtc_cursor_init()
|
||||
}
|
||||
|
||||
/* select 32x32 pixel, 16bit color cursorbitmap, no doublescan */
|
||||
NV_REG32(NV32_CURCONF) = 0x02000100;
|
||||
ENG_RG32(RG32_CURCONF) = 0x02000100;
|
||||
|
||||
/* activate hardware cursor */
|
||||
eng_crtc_cursor_show();
|
||||
@@ -807,7 +807,7 @@ status_t eng_crtc_cursor_position(uint16 x, uint16 y)
|
||||
{
|
||||
/* we have vertical lines below old and new cursorposition to spare. So we
|
||||
* update the cursor postion 'mid-screen', but below that area. */
|
||||
while (((uint16)(NV_REG32(NV32_RASTER) & 0x000007ff)) < (yhigh + 16))
|
||||
while (((uint16)(ENG_RG32(RG32_RASTER) & 0x000007ff)) < (yhigh + 16))
|
||||
{
|
||||
snooze(10);
|
||||
}
|
||||
@@ -815,7 +815,7 @@ status_t eng_crtc_cursor_position(uint16 x, uint16 y)
|
||||
else
|
||||
{
|
||||
/* no room to spare, just wait for retrace (is relatively slow) */
|
||||
while ((NV_REG32(NV32_RASTER) & 0x000007ff) < si->dm.timing.v_display)
|
||||
while ((ENG_RG32(RG32_RASTER) & 0x000007ff) < si->dm.timing.v_display)
|
||||
{
|
||||
/* don't snooze much longer or retrace might get missed! */
|
||||
snooze(10);
|
||||
|
||||
@@ -263,7 +263,7 @@ status_t eng_crtc2_set_timing(display_mode target)
|
||||
|
||||
/* setup HSYNC & VSYNC polarity */
|
||||
LOG(2,("CRTC2: sync polarity: "));
|
||||
temp = NV_REG8(NV8_MISCR);
|
||||
temp = ENG_REG8(RG8_MISCR);
|
||||
if (target.timing.flags & B_POSITIVE_HSYNC)
|
||||
{
|
||||
LOG(2,("H:pos "));
|
||||
@@ -284,9 +284,9 @@ status_t eng_crtc2_set_timing(display_mode target)
|
||||
LOG(2,("V:neg "));
|
||||
temp |= 0x80;
|
||||
}
|
||||
NV_REG8(NV8_MISCW) = temp;
|
||||
ENG_REG8(RG8_MISCW) = temp;
|
||||
|
||||
LOG(2,(", MISC reg readback: $%02x\n", NV_REG8(NV8_MISCR)));
|
||||
LOG(2,(", MISC reg readback: $%02x\n", ENG_REG8(RG8_MISCR)));
|
||||
}
|
||||
|
||||
/* always disable interlaced operation */
|
||||
@@ -592,7 +592,7 @@ status_t eng_crtc2_set_display_start(uint32 startadd,uint8 bpp)
|
||||
|
||||
/* we might have no retraces during setmode! */
|
||||
/* wait 25mS max. for retrace to occur (refresh > 40Hz) */
|
||||
while (((NV_REG32(NV32_RASTER2) & 0x000007ff) < si->dm.timing.v_display) &&
|
||||
while (((ENG_RG32(RG32_RASTER2) & 0x000007ff) < si->dm.timing.v_display) &&
|
||||
(timeout < (25000/10)))
|
||||
{
|
||||
/* don't snooze much longer or retrace might get missed! */
|
||||
@@ -609,7 +609,7 @@ status_t eng_crtc2_set_display_start(uint32 startadd,uint8 bpp)
|
||||
* wrap-around at 16Mb boundaries!! */
|
||||
|
||||
/* 30bit adress in 32bit words */
|
||||
NV_REG32(NV32_NV10FB2STADD32) = (startadd & 0xfffffffc);
|
||||
ENG_RG32(RG32_NV10FB2STADD32) = (startadd & 0xfffffffc);
|
||||
|
||||
/* set byte adress: (b0 - 1) */
|
||||
ATB2W(HORPIXPAN, ((startadd & 0x00000003) << 1));
|
||||
@@ -648,7 +648,7 @@ status_t eng_crtc2_cursor_init()
|
||||
* This register does not exist on pre-NV10 and 'Go' cards. */
|
||||
|
||||
/* cursorbitmap must still start on 2Kbyte boundary: */
|
||||
NV_REG32(NV32_NV10CUR2ADD32) = (curadd & 0xfffff800);
|
||||
ENG_RG32(RG32_NV10CUR2ADD32) = (curadd & 0xfffff800);
|
||||
}
|
||||
|
||||
/* set cursor colour: not needed because of direct nature of cursor bitmap. */
|
||||
@@ -661,7 +661,7 @@ status_t eng_crtc2_cursor_init()
|
||||
}
|
||||
|
||||
/* select 32x32 pixel, 16bit color cursorbitmap, no doublescan */
|
||||
NV_REG32(NV32_2CURCONF) = 0x02000100;
|
||||
ENG_RG32(RG32_2CURCONF) = 0x02000100;
|
||||
|
||||
/* activate hardware cursor */
|
||||
eng_crtc2_cursor_show();
|
||||
@@ -769,7 +769,7 @@ status_t eng_crtc2_cursor_position(uint16 x, uint16 y)
|
||||
{
|
||||
/* we have vertical lines below old and new cursorposition to spare. So we
|
||||
* update the cursor postion 'mid-screen', but below that area. */
|
||||
while (((uint16)(NV_REG32(NV32_RASTER2) & 0x000007ff)) < (yhigh + 16))
|
||||
while (((uint16)(ENG_RG32(RG32_RASTER2) & 0x000007ff)) < (yhigh + 16))
|
||||
{
|
||||
snooze(10);
|
||||
}
|
||||
@@ -777,7 +777,7 @@ status_t eng_crtc2_cursor_position(uint16 x, uint16 y)
|
||||
else
|
||||
{
|
||||
/* no room to spare, just wait for retrace (is relatively slow) */
|
||||
while ((NV_REG32(NV32_RASTER2) & 0x000007ff) < si->dm.timing.v_display)
|
||||
while ((ENG_RG32(RG32_RASTER2) & 0x000007ff) < si->dm.timing.v_display)
|
||||
{
|
||||
/* don't snooze much longer or retrace might get missed! */
|
||||
snooze(10);
|
||||
|
||||
@@ -84,8 +84,8 @@ status_t eng_dac_mode(int mode,float brightness)
|
||||
if (eng_dac_palette(r,g,b) != B_OK) return B_ERROR;
|
||||
|
||||
/* disable palette RAM adressing mask */
|
||||
NV_REG8(NV8_PALMASK) = 0xff;
|
||||
LOG(2,("DAC: PAL pixrdmsk readback $%02x\n", NV_REG8(NV8_PALMASK)));
|
||||
ENG_REG8(RG8_PALMASK) = 0xff;
|
||||
LOG(2,("DAC: PAL pixrdmsk readback $%02x\n", ENG_REG8(RG8_PALMASK)));
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
@@ -98,17 +98,17 @@ status_t eng_dac_palette(uint8 r[256],uint8 g[256],uint8 b[256])
|
||||
LOG(4,("DAC: setting palette\n"));
|
||||
|
||||
/* select first PAL adress before starting programming */
|
||||
NV_REG8(NV8_PALINDW) = 0x00;
|
||||
ENG_REG8(RG8_PALINDW) = 0x00;
|
||||
|
||||
/* loop through all 256 to program DAC */
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
/* the 6 implemented bits are on b0-b5 of the bus */
|
||||
NV_REG8(NV8_PALDATA) = r[i];
|
||||
NV_REG8(NV8_PALDATA) = g[i];
|
||||
NV_REG8(NV8_PALDATA) = b[i];
|
||||
ENG_REG8(RG8_PALDATA) = r[i];
|
||||
ENG_REG8(RG8_PALDATA) = g[i];
|
||||
ENG_REG8(RG8_PALDATA) = b[i];
|
||||
}
|
||||
if (NV_REG8(NV8_PALINDW) != 0x00)
|
||||
if (ENG_REG8(RG8_PALINDW) != 0x00)
|
||||
{
|
||||
LOG(8,("DAC: PAL write index incorrect after programming\n"));
|
||||
return B_ERROR;
|
||||
@@ -118,12 +118,12 @@ if (1)
|
||||
uint8 R, G, B;
|
||||
|
||||
/* select first PAL adress to read (modulo 3 counter) */
|
||||
NV_REG8(NV8_PALINDR) = 0x00;
|
||||
ENG_REG8(RG8_PALINDR) = 0x00;
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
R = NV_REG8(NV8_PALDATA);
|
||||
G = NV_REG8(NV8_PALDATA);
|
||||
B = NV_REG8(NV8_PALDATA);
|
||||
R = ENG_REG8(RG8_PALDATA);
|
||||
G = ENG_REG8(RG8_PALDATA);
|
||||
B = ENG_REG8(RG8_PALDATA);
|
||||
if ((r[i] != R) || (g[i] != G) || (b[i] != B))
|
||||
LOG(1,("DAC palette %d: w %x %x %x, r %x %x %x\n", i, r[i], g[i], b[i], R, G, B)); // apsed
|
||||
}
|
||||
|
||||
@@ -92,8 +92,8 @@ status_t eng_dac2_mode(int mode,float brightness)
|
||||
if (eng_dac2_palette(r,g,b) != B_OK) return B_ERROR;
|
||||
|
||||
/* disable palette RAM adressing mask */
|
||||
NV_REG8(NV8_PAL2MASK) = 0xff;
|
||||
LOG(2,("DAC2: PAL pixrdmsk readback $%02x\n", NV_REG8(NV8_PAL2MASK)));
|
||||
ENG_REG8(RG8_PAL2MASK) = 0xff;
|
||||
LOG(2,("DAC2: PAL pixrdmsk readback $%02x\n", ENG_REG8(RG8_PAL2MASK)));
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
@@ -106,17 +106,17 @@ status_t eng_dac2_palette(uint8 r[256],uint8 g[256],uint8 b[256])
|
||||
LOG(4,("DAC2: setting palette\n"));
|
||||
|
||||
/* select first PAL adress before starting programming */
|
||||
NV_REG8(NV8_PAL2INDW) = 0x00;
|
||||
ENG_REG8(RG8_PAL2INDW) = 0x00;
|
||||
|
||||
/* loop through all 256 to program DAC */
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
/* the 6 implemented bits are on b0-b5 of the bus */
|
||||
NV_REG8(NV8_PAL2DATA) = r[i];
|
||||
NV_REG8(NV8_PAL2DATA) = g[i];
|
||||
NV_REG8(NV8_PAL2DATA) = b[i];
|
||||
ENG_REG8(RG8_PAL2DATA) = r[i];
|
||||
ENG_REG8(RG8_PAL2DATA) = g[i];
|
||||
ENG_REG8(RG8_PAL2DATA) = b[i];
|
||||
}
|
||||
if (NV_REG8(NV8_PAL2INDW) != 0x00)
|
||||
if (ENG_REG8(RG8_PAL2INDW) != 0x00)
|
||||
{
|
||||
LOG(8,("DAC2: PAL write index incorrect after programming\n"));
|
||||
return B_ERROR;
|
||||
@@ -126,12 +126,12 @@ if (1)
|
||||
uint8 R, G, B;
|
||||
|
||||
/* select first PAL adress to read (modulo 3 counter) */
|
||||
NV_REG8(NV8_PAL2INDR) = 0x00;
|
||||
ENG_REG8(RG8_PAL2INDR) = 0x00;
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
R = NV_REG8(NV8_PAL2DATA);
|
||||
G = NV_REG8(NV8_PAL2DATA);
|
||||
B = NV_REG8(NV8_PAL2DATA);
|
||||
R = ENG_REG8(RG8_PAL2DATA);
|
||||
G = ENG_REG8(RG8_PAL2DATA);
|
||||
B = ENG_REG8(RG8_PAL2DATA);
|
||||
if ((r[i] != R) || (g[i] != G) || (b[i] != B))
|
||||
LOG(1,("DAC2 palette %d: w %x %x %x, r %x %x %x\n", i, r[i], g[i], b[i], R, G, B)); // apsed
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ static void eng_dump_configuration_space (void)
|
||||
#define DUMP_CFG(reg, type) if (si->ps.card_type >= type) do { \
|
||||
uint32 value = CFGR(reg); \
|
||||
MSG(("configuration_space 0x%02x %20s 0x%08x\n", \
|
||||
NVCFG_##reg, #reg, value)); \
|
||||
ENCFG_##reg, #reg, value)); \
|
||||
} while (0)
|
||||
DUMP_CFG (DEVID, 0);
|
||||
DUMP_CFG (DEVCTRL, 0);
|
||||
@@ -406,7 +406,7 @@ status_t eng_general_head_select(bool cross)
|
||||
static status_t eng_general_bios_to_powergraphics()
|
||||
{
|
||||
/* let acc engine make power off/power on cycle to start 'fresh' */
|
||||
NV_REG32(NV32_PWRUPCTRL) = 0x13110011;
|
||||
ENG_RG32(RG32_PWRUPCTRL) = 0x13110011;
|
||||
snooze(1000);
|
||||
|
||||
/* power-up all hardware function blocks */
|
||||
@@ -419,10 +419,10 @@ static status_t eng_general_bios_to_powergraphics()
|
||||
* bit 8: PFIFO,
|
||||
* bit 4: PMEDIA,
|
||||
* bit 0: TVOUT. (> NV04A) */
|
||||
NV_REG32(NV32_PWRUPCTRL) = 0x13111111;
|
||||
ENG_RG32(RG32_PWRUPCTRL) = 0x13111111;
|
||||
|
||||
/* select colormode CRTC registers base adresses */
|
||||
NV_REG8(NV8_MISCW) = 0xcb;
|
||||
ENG_REG8(RG8_MISCW) = 0xcb;
|
||||
|
||||
/* enable access to primary head */
|
||||
set_crtc_owner(0);
|
||||
@@ -456,8 +456,8 @@ static status_t eng_general_bios_to_powergraphics()
|
||||
* bit 9: TVout chip #2 (confirmed on NV18, NV25, NV28),
|
||||
* bit 8: TVout chip #1 (all cards),
|
||||
* bit 4: both I2C busses (all cards) */
|
||||
NV_REG32(NV32_2FUNCSEL) &= ~0x00001000;
|
||||
NV_REG32(NV32_FUNCSEL) |= 0x00001000;
|
||||
ENG_RG32(RG32_2FUNCSEL) &= ~0x00001000;
|
||||
ENG_RG32(RG32_FUNCSEL) |= 0x00001000;
|
||||
}
|
||||
si->overlay.crtc = false;
|
||||
|
||||
@@ -497,7 +497,7 @@ static status_t eng_general_bios_to_powergraphics()
|
||||
/* enable access to secondary head */
|
||||
set_crtc_owner(1);
|
||||
/* select colormode CRTC2 registers base adresses */
|
||||
NV_REG8(NV8_MISCW) = 0xcb;
|
||||
ENG_REG8(RG8_MISCW) = 0xcb;
|
||||
/* note: 'BUFFER' is a non-standard register in behaviour(!) on most
|
||||
* NV11's like the GeForce2 MX200, while the MX400 and non-NV11 cards
|
||||
* behave normally.
|
||||
|
||||
@@ -20,7 +20,7 @@ int accelerantIsClone;
|
||||
|
||||
eng_get_set_pci eng_pci_access=
|
||||
{
|
||||
NV_PRIVATE_DATA_MAGIC,
|
||||
SKEL_PRIVATE_DATA_MAGIC,
|
||||
0,
|
||||
4,
|
||||
0
|
||||
@@ -28,7 +28,7 @@ eng_get_set_pci eng_pci_access=
|
||||
|
||||
eng_in_out_isa eng_isa_access=
|
||||
{
|
||||
NV_PRIVATE_DATA_MAGIC,
|
||||
SKEL_PRIVATE_DATA_MAGIC,
|
||||
0,
|
||||
1,
|
||||
0
|
||||
|
||||
@@ -238,10 +238,10 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
|
||||
LOG(8,("INFO: now executing coldstart...\n"));
|
||||
|
||||
/* select colormode CRTC registers base adresses */
|
||||
NV_REG8(NV8_MISCW) = 0xcb;
|
||||
ENG_REG8(RG8_MISCW) = 0xcb;
|
||||
|
||||
/* unknown.. */
|
||||
NV_REG8(NV8_VSE2) = 0x01;
|
||||
ENG_REG8(RG8_VSE2) = 0x01;
|
||||
|
||||
/* enable access to primary head */
|
||||
set_crtc_owner(0);
|
||||
@@ -311,15 +311,15 @@ static status_t coldstart_card_516_up(uint8* rom, PinsTables tabs, uint16 ram_ta
|
||||
//fixme?: works on at least one NV28... how about other cards?
|
||||
if (si->ps.card_type == NV28)
|
||||
{
|
||||
fb_mrs2 = NV_REG32(NV32_FB_MRS2);
|
||||
fb_mrs1 = NV_REG32(NV32_FB_MRS1);
|
||||
fb_mrs2 = ENG_RG32(RG32_FB_MRS2);
|
||||
fb_mrs1 = ENG_RG32(RG32_FB_MRS1);
|
||||
}
|
||||
|
||||
/* select colormode CRTC registers base adresses */
|
||||
NV_REG8(NV8_MISCW) = 0xcb;
|
||||
ENG_REG8(RG8_MISCW) = 0xcb;
|
||||
|
||||
/* unknown.. */
|
||||
NV_REG8(NV8_VSE2) = 0x01;
|
||||
ENG_REG8(RG8_VSE2) = 0x01;
|
||||
|
||||
/* enable access to primary head */
|
||||
set_crtc_owner(0);
|
||||
@@ -381,8 +381,8 @@ static status_t coldstart_card_516_up(uint8* rom, PinsTables tabs, uint16 ram_ta
|
||||
|
||||
/* get NV28 RAM access up and running */
|
||||
//fixme?: works on at least one NV28... how about other cards?
|
||||
NV_REG32(NV32_FB_MRS2) = fb_mrs2;
|
||||
NV_REG32(NV32_FB_MRS1) = fb_mrs1;
|
||||
ENG_RG32(RG32_FB_MRS2) = fb_mrs2;
|
||||
ENG_RG32(RG32_FB_MRS1) = fb_mrs1;
|
||||
}
|
||||
|
||||
/* now enable ROM shadow or the card will remain shut-off! */
|
||||
@@ -448,7 +448,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
float calced_clk;
|
||||
uint8 m, n, p;
|
||||
eng_dac_sys_pll_find(((float)data2), &calced_clk, &m, &n, &p, 0);
|
||||
NV_REG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
ENG_RG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
}
|
||||
log_pll(reg, data2);
|
||||
break;
|
||||
@@ -470,7 +470,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
adress += 2;
|
||||
data2 = *((uint32*)(&(rom[data])));
|
||||
LOG(8,("cmd 'WR indirect 32bit reg' $%08x = $%08x\n", reg, data2));
|
||||
if (exec) NV_REG32(reg) = data2;
|
||||
if (exec) ENG_RG32(reg) = data2;
|
||||
break;
|
||||
case 0x63:
|
||||
*size -= 1;
|
||||
@@ -509,8 +509,8 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
LOG(8,("cmd 'WR 32bit reg $%08x = $%08x, then = $%08x' (always done)\n",
|
||||
reg, data, data2));
|
||||
/* always done */
|
||||
NV_REG32(reg) = data;
|
||||
NV_REG32(reg) = data2;
|
||||
ENG_RG32(reg) = data;
|
||||
ENG_RG32(reg) = data2;
|
||||
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) & 0xfffffffe));
|
||||
break;
|
||||
case 0x69:
|
||||
@@ -536,10 +536,10 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
if (exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
byte = NV_REG8(reg);
|
||||
byte = ENG_REG8(reg);
|
||||
byte &= (uint8)and_out;
|
||||
byte |= (uint8)or_in;
|
||||
NV_REG8(reg) = byte;
|
||||
ENG_REG8(reg) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x6d:
|
||||
@@ -554,7 +554,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
|
||||
/* execute */
|
||||
adress += 1;
|
||||
data = NV_REG32(NV32_NV4STRAPINFO);
|
||||
data = ENG_RG32(RG32_NV4STRAPINFO);
|
||||
and_out = *((uint8*)(&(rom[adress])));
|
||||
adress += 1;
|
||||
byte = *((uint8*)(&(rom[adress])));
|
||||
@@ -594,10 +594,10 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
reg, and_out, or_in));
|
||||
if (exec)
|
||||
{
|
||||
data = NV_REG32(reg);
|
||||
data = ENG_RG32(reg);
|
||||
data &= and_out;
|
||||
data |= or_in;
|
||||
NV_REG32(reg) = data;
|
||||
ENG_RG32(reg) = data;
|
||||
}
|
||||
break;
|
||||
case 0x71:
|
||||
@@ -637,7 +637,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
|
||||
/* execute */
|
||||
adress += 1;
|
||||
data = NV_REG32(NV32_NVSTRAPINFO2);
|
||||
data = ENG_RG32(RG32_NVSTRAPINFO2);
|
||||
and_out = *((uint32*)(&(rom[adress])));
|
||||
adress += 4;
|
||||
data2 = *((uint32*)(&(rom[adress])));
|
||||
@@ -691,7 +691,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
adress += 2;
|
||||
LOG(8,("cmd 'WR 32bit reg' $%08x = $%08x (b31-16 = '0', b15-0 = data)\n",
|
||||
reg, data));
|
||||
if (exec) NV_REG32(reg) = data;
|
||||
if (exec) ENG_RG32(reg) = data;
|
||||
break;
|
||||
case 0x78:
|
||||
*size -= 6;
|
||||
@@ -718,11 +718,11 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
if (exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
byte |= (uint8)or_in;
|
||||
NV_REG8(reg + 1) = byte;
|
||||
ENG_REG8(reg + 1) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x79:
|
||||
@@ -747,7 +747,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
float calced_clk;
|
||||
uint8 m, n, p;
|
||||
eng_dac_sys_pll_find((data / 100.0), &calced_clk, &m, &n, &p, 0);
|
||||
NV_REG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
ENG_RG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
}
|
||||
log_pll(reg, (data / 100));
|
||||
break;
|
||||
@@ -768,7 +768,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size, uint16
|
||||
data = *((uint32*)(&(rom[adress])));
|
||||
adress += 4;
|
||||
LOG(8,("cmd 'WR 32bit reg' $%08x = $%08x\n", reg, data));
|
||||
if (exec) NV_REG32(reg) = data;
|
||||
if (exec) ENG_RG32(reg) = data;
|
||||
break;
|
||||
default:
|
||||
LOG(8,("unknown cmd, aborting!\n\n"));
|
||||
@@ -787,33 +787,33 @@ static void log_pll(uint32 reg, uint32 freq)
|
||||
LOG(8,("INFO: ---WARNING: check/update PLL programming script code!!!\n"));
|
||||
switch (reg)
|
||||
{
|
||||
case NV32_MEMPLL:
|
||||
case RG32_MEMPLL:
|
||||
LOG(8,("INFO: ---Memory PLL accessed.\n"));
|
||||
/* update the card's specs */
|
||||
si->ps.std_memory_clock = freq;
|
||||
break;
|
||||
case NV32_COREPLL:
|
||||
case RG32_COREPLL:
|
||||
LOG(8,("INFO: ---Core PLL accessed.\n"));
|
||||
/* update the card's specs */
|
||||
si->ps.std_engine_clock = freq;
|
||||
break;
|
||||
case NVDAC_PIXPLLC:
|
||||
case ENDAC_PIXPLLC:
|
||||
LOG(8,("INFO: ---DAC1 PLL accessed.\n"));
|
||||
break;
|
||||
case NVDAC2_PIXPLLC:
|
||||
case ENDAC2_PIXPLLC:
|
||||
LOG(8,("INFO: ---DAC2 PLL accessed.\n"));
|
||||
break;
|
||||
/* unexpected cases, here for learning goals... */
|
||||
case NV32_MEMPLL2:
|
||||
case RG32_MEMPLL2:
|
||||
LOG(8,("INFO: ---NV31/NV36 extension to memory PLL accessed only!\n"));
|
||||
break;
|
||||
case NV32_COREPLL2:
|
||||
case RG32_COREPLL2:
|
||||
LOG(8,("INFO: ---NV31/NV36 extension to core PLL accessed only!\n"));
|
||||
break;
|
||||
case NVDAC_PIXPLLC2:
|
||||
case ENDAC_PIXPLLC2:
|
||||
LOG(8,("INFO: ---NV31/NV36 extension to DAC1 PLL accessed only!\n"));
|
||||
break;
|
||||
case NVDAC2_PIXPLLC2:
|
||||
case ENDAC2_PIXPLLC2:
|
||||
LOG(8,("INFO: ---NV31/NV36 extension to DAC2 PLL accessed only!\n"));
|
||||
break;
|
||||
default:
|
||||
@@ -828,9 +828,9 @@ static void setup_ram_config(uint8* rom, uint16 ram_tab)
|
||||
uint8 cnt;
|
||||
|
||||
/* set MRS = 256 */
|
||||
NV_REG32(NV32_PFB_DEBUG_0) &= 0xffffffef;
|
||||
ENG_RG32(RG32_PFB_DEBUG_0) &= 0xffffffef;
|
||||
/* read RAM config hardware(?) strap */
|
||||
ram_cfg = ((NV_REG32(NV32_NVSTRAPINFO2) >> 2) & 0x0000000f);
|
||||
ram_cfg = ((ENG_RG32(RG32_NVSTRAPINFO2) >> 2) & 0x0000000f);
|
||||
LOG(8,("INFO: ---RAM config strap is $%01x\n", ram_cfg));
|
||||
/* use it as a pointer in a BIOS table for prerecorded RAM configurations */
|
||||
ram_cfg = *((uint16*)(&(rom[(ram_tab + (ram_cfg * 2))])));
|
||||
@@ -876,15 +876,15 @@ static void setup_ram_config(uint8* rom, uint16 ram_tab)
|
||||
break;
|
||||
}
|
||||
/* set RAM amount, width and type */
|
||||
data = (NV_REG32(NV32_NV4STRAPINFO) & 0xffffffc0);
|
||||
NV_REG32(NV32_NV4STRAPINFO) = (data | (ram_cfg & 0x0000003f));
|
||||
data = (ENG_RG32(RG32_NV4STRAPINFO) & 0xffffffc0);
|
||||
ENG_RG32(RG32_NV4STRAPINFO) = (data | (ram_cfg & 0x0000003f));
|
||||
/* setup write to read delay (?) */
|
||||
data = (NV_REG32(NV32_PFB_CONFIG_1) & 0xff8ffffe);
|
||||
data = (ENG_RG32(RG32_PFB_CONFIG_1) & 0xff8ffffe);
|
||||
data |= ((ram_cfg & 0x00000700) << 12);
|
||||
/* force update via b0 = 0... */
|
||||
NV_REG32(NV32_PFB_CONFIG_1) = data;
|
||||
ENG_RG32(RG32_PFB_CONFIG_1) = data;
|
||||
/* ... followed by b0 = 1(?) */
|
||||
NV_REG32(NV32_PFB_CONFIG_1) = (data | 0x00000001);
|
||||
ENG_RG32(RG32_PFB_CONFIG_1) = (data | 0x00000001);
|
||||
|
||||
/* do RAM width test to confirm RAM width set to be correct */
|
||||
/* write testpattern to first 128 bits of graphics memory... */
|
||||
@@ -896,7 +896,7 @@ static void setup_ram_config(uint8* rom, uint16 ram_tab)
|
||||
if (((uint32 *)si->framebuffer)[3] != data)
|
||||
{
|
||||
LOG(8,("INFO: ---RAM width tested: width is 64bits, correcting settings.\n"));
|
||||
NV_REG32(NV32_NV4STRAPINFO) &= ~0x00000004;
|
||||
ENG_RG32(RG32_NV4STRAPINFO) &= ~0x00000004;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -963,11 +963,11 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
LOG(8,("INFO: (cont.) then WR result data to 32bit reg $%08x'\n", reg2));
|
||||
if (*exec && reg2)
|
||||
{
|
||||
data = NV_REG32(reg);
|
||||
data = ENG_RG32(reg);
|
||||
data &= and_out;
|
||||
data >>= shift;
|
||||
data2 = *((uint32*)(&(rom[(*adress + (data << 2))])));
|
||||
NV_REG32(reg2) = data2;
|
||||
ENG_RG32(reg2) = data2;
|
||||
}
|
||||
*adress += size32;
|
||||
break;
|
||||
@@ -1003,13 +1003,13 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
if (*exec && reg2)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
byte >>= byte2;
|
||||
offset32 = (byte << 2);
|
||||
data = *((uint32*)(&(rom[(*adress + offset32)])));
|
||||
NV_REG32(reg2) = data;
|
||||
ENG_RG32(reg2) = data;
|
||||
}
|
||||
*adress += size32;
|
||||
break;
|
||||
@@ -1075,8 +1075,8 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
LOG(8,("INFO: (cont.) RD table-index ($%02x) for cmd $39'\n",
|
||||
offset32));
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
data = (byte >> shift);
|
||||
data <<= 1;
|
||||
@@ -1102,10 +1102,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
uint8 m, n, p;
|
||||
eng_dac_sys_pll_find((data2 / 100.0), &calced_clk, &m, &n, &p, 0);
|
||||
/* programming the PLL needs to be done in steps! (confirmed NV28) */
|
||||
data = NV_REG32(reg2);
|
||||
NV_REG32(reg2) = ((data & 0xffff0000) | (n << 8) | m);
|
||||
data = NV_REG32(reg2);
|
||||
NV_REG32(reg2) = ((p << 16) | (n << 8) | m);
|
||||
data = ENG_RG32(reg2);
|
||||
ENG_RG32(reg2) = ((data & 0xffff0000) | (n << 8) | m);
|
||||
data = ENG_RG32(reg2);
|
||||
ENG_RG32(reg2) = ((p << 16) | (n << 8) | m);
|
||||
//fixme?
|
||||
/* program 2nd set N and M scalers if they exist (b31=1 enables them) */
|
||||
// if ((si->ps.card_type == NV31) || (si->ps.card_type == NV36))
|
||||
@@ -1178,7 +1178,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
index, reg2, and_out2));
|
||||
if (*exec)
|
||||
{
|
||||
data = NV_REG32(reg);
|
||||
data = ENG_RG32(reg);
|
||||
if (byte2 < 0x80)
|
||||
{
|
||||
data >>= byte2;
|
||||
@@ -1189,11 +1189,11 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
}
|
||||
data &= and_out;
|
||||
translate_ISA_PCI(®2);
|
||||
NV_REG8(reg2) = index;
|
||||
byte = NV_REG8(reg2 + 1);
|
||||
ENG_REG8(reg2) = index;
|
||||
byte = ENG_REG8(reg2 + 1);
|
||||
byte &= (uint8)and_out2;
|
||||
byte |= (uint8)data;
|
||||
NV_REG8(reg2 + 1) = byte;
|
||||
ENG_REG8(reg2 + 1) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x38: /* new */
|
||||
@@ -1274,12 +1274,12 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
*adress += 1;
|
||||
data2 = *((uint8*)(&(rom[*adress])));
|
||||
*adress += 1;
|
||||
NV_REG32(reg2) = data2;
|
||||
data = NV_REG32(reg);
|
||||
ENG_RG32(reg2) = data2;
|
||||
data = ENG_RG32(reg);
|
||||
data &= and_out;
|
||||
data |= or_in;
|
||||
data |= or_in2;
|
||||
NV_REG32(reg) = data;
|
||||
ENG_RG32(reg) = data;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1307,7 +1307,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
if (*exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = byte;
|
||||
ENG_REG8(reg) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x62: /* new */
|
||||
@@ -1332,7 +1332,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
if (*exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG16(reg) = ((((uint16)byte) << 8) | index);
|
||||
ENG_REG16(reg) = ((((uint16)byte) << 8) | index);
|
||||
}
|
||||
break;
|
||||
case 0x63: /* new setup compared to pre-NV10 version */
|
||||
@@ -1380,8 +1380,8 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
LOG(8,("cmd 'WR 32bit reg $%08x = $%08x, then = $%08x' (always done)\n",
|
||||
reg, data, data2));
|
||||
/* always done */
|
||||
NV_REG32(reg) = data;
|
||||
NV_REG32(reg) = data2;
|
||||
ENG_RG32(reg) = data;
|
||||
ENG_RG32(reg) = data2;
|
||||
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) & 0xfffffffe));
|
||||
break;
|
||||
case 0x69: /* identical to type1 */
|
||||
@@ -1407,10 +1407,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
if (*exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
byte = NV_REG8(reg);
|
||||
byte = ENG_REG8(reg);
|
||||
byte &= (uint8)and_out;
|
||||
byte |= (uint8)or_in;
|
||||
NV_REG8(reg) = byte;
|
||||
ENG_REG8(reg) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x6a: /* new */
|
||||
@@ -1479,10 +1479,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
reg, and_out, or_in));
|
||||
if (*exec)
|
||||
{
|
||||
data = NV_REG32(reg);
|
||||
data = ENG_RG32(reg);
|
||||
data &= and_out;
|
||||
data |= or_in;
|
||||
NV_REG32(reg) = data;
|
||||
ENG_RG32(reg) = data;
|
||||
}
|
||||
break;
|
||||
case 0x6f: /* new */
|
||||
@@ -1522,7 +1522,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
{
|
||||
reg2 = *((uint32*)(&(rom[(offset32 + (safe32 << 3))])));
|
||||
data2 = *((uint32*)(&(rom[(offset32 + (safe32 << 3) + 4)])));
|
||||
NV_REG32(reg2) = data2;
|
||||
ENG_RG32(reg2) = data2;
|
||||
safe32++;
|
||||
}
|
||||
}
|
||||
@@ -1598,7 +1598,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
reg = *((uint32*)(&(rom[data])));
|
||||
and_out = *((uint32*)(&(rom[(data + 4)])));
|
||||
data2 = *((uint32*)(&(rom[(data + 8)])));
|
||||
data = NV_REG32(reg);
|
||||
data = ENG_RG32(reg);
|
||||
data &= and_out;
|
||||
LOG(8,("cmd 'CHK bits AND-out $%08x reg $%08x for $%08x'\n",
|
||||
and_out, reg, data2));
|
||||
@@ -1633,8 +1633,8 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
LOG(8,("cmd 'CHK bits AND-out $%02x idx ISA reg $%02x via $%04x for $%02x'\n",
|
||||
and_out, index, reg, byte2));
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
if (byte != byte2)
|
||||
{
|
||||
@@ -1671,11 +1671,11 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
if (*exec)
|
||||
{
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
byte |= (uint8)or_in;
|
||||
NV_REG8(reg + 1) = byte;
|
||||
ENG_REG8(reg + 1) = byte;
|
||||
}
|
||||
break;
|
||||
case 0x79:
|
||||
@@ -1701,10 +1701,10 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
uint8 m, n, p;
|
||||
eng_dac_sys_pll_find((data / 100.0), &calced_clk, &m, &n, &p, 0);
|
||||
/* programming the PLL needs to be done in steps! (confirmed NV28) */
|
||||
data2 = NV_REG32(reg);
|
||||
NV_REG32(reg) = ((data2 & 0xffff0000) | (n << 8) | m);
|
||||
data2 = NV_REG32(reg);
|
||||
NV_REG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
data2 = ENG_RG32(reg);
|
||||
ENG_RG32(reg) = ((data2 & 0xffff0000) | (n << 8) | m);
|
||||
data2 = ENG_RG32(reg);
|
||||
ENG_RG32(reg) = ((p << 16) | (n << 8) | m);
|
||||
//fixme?
|
||||
/* program 2nd set N and M scalers if they exist (b31=1 enables them) */
|
||||
// if ((si->ps.card_type == NV31) || (si->ps.card_type == NV36))
|
||||
@@ -1729,7 +1729,7 @@ static status_t exec_type2_script_mode(uint8* rom, uint16* adress, int16* size,
|
||||
data = *((uint32*)(&(rom[*adress])));
|
||||
*adress += 4;
|
||||
LOG(8,("cmd 'WR 32bit reg' $%08x = $%08x\n", reg, data));
|
||||
if (*exec) NV_REG32(reg) = data;
|
||||
if (*exec) ENG_RG32(reg) = data;
|
||||
break;
|
||||
default:
|
||||
LOG(8,("unknown cmd, aborting!\n\n"));
|
||||
@@ -1759,8 +1759,8 @@ static void exec_cmd_39_type2(uint8* rom, uint32 data, PinsTables tabs, bool* ex
|
||||
LOG(8,("cmd 'AND-out bits $%02x idx ISA reg $%02x via $%04x, shift-right = $%02x,\n",
|
||||
and_out, index, reg, shift));
|
||||
translate_ISA_PCI(®);
|
||||
NV_REG8(reg) = index;
|
||||
byte = NV_REG8(reg + 1);
|
||||
ENG_REG8(reg) = index;
|
||||
byte = ENG_REG8(reg + 1);
|
||||
byte &= (uint8)and_out;
|
||||
offset32 += (byte >> shift);
|
||||
safe = byte = *((uint8*)(&(rom[offset32])));
|
||||
@@ -1787,7 +1787,7 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
status_t stat = B_ERROR;
|
||||
|
||||
/* set 'refctrl is valid' */
|
||||
NV_REG32(NV32_PFB_REFCTRL) = 0x80000000;
|
||||
ENG_RG32(RG32_PFB_REFCTRL) = 0x80000000;
|
||||
|
||||
/* check RAM for 256bits buswidth(?) */
|
||||
while ((cnt < 4) && (stat != B_OK))
|
||||
@@ -1810,7 +1810,7 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
if (stat != B_OK)
|
||||
{
|
||||
LOG(8,("INFO: ---RAM test #1 done: access errors, modified setup.\n"));
|
||||
data = NV_REG32(NV32_PFB_CONFIG_0);
|
||||
data = ENG_RG32(RG32_PFB_CONFIG_0);
|
||||
if (data & 0x00000010)
|
||||
{
|
||||
data &= 0xffffffcf;
|
||||
@@ -1820,7 +1820,7 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
data &= 0xffffffcf;
|
||||
data |= 0x00000020;
|
||||
}
|
||||
NV_REG32(NV32_PFB_CONFIG_0) = data;
|
||||
ENG_RG32(RG32_PFB_CONFIG_0) = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1833,7 +1833,7 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
while ((cnt < 4) && (stat != B_OK))
|
||||
{
|
||||
/* read RAM size */
|
||||
data = NV_REG32(NV32_NV10STRAPINFO);
|
||||
data = ENG_RG32(RG32_NV10STRAPINFO);
|
||||
/* subtract 1MB */
|
||||
data -= 0x00100000;
|
||||
/* write testpattern at generated RAM adress */
|
||||
@@ -1854,7 +1854,7 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
if (stat != B_OK)
|
||||
{
|
||||
LOG(8,("INFO: ---RAM test #2 done: access errors, modified setup.\n"));
|
||||
NV_REG32(NV32_PFB_CONFIG_0) &= 0xffffefff;
|
||||
ENG_RG32(RG32_PFB_CONFIG_0) &= 0xffffefff;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1871,13 +1871,13 @@ static void setup_ram_config_nv28(uint8* rom)
|
||||
status_t stat = B_ERROR;
|
||||
|
||||
/* set 'refctrl is valid' */
|
||||
NV_REG32(NV32_PFB_REFCTRL) = 0x80000000;
|
||||
ENG_RG32(RG32_PFB_REFCTRL) = 0x80000000;
|
||||
|
||||
/* check RAM */
|
||||
while ((cnt < 4) && (stat != B_OK))
|
||||
{
|
||||
/* set bit 11: 'pulse' something into a new setting? */
|
||||
NV_REG32(NV32_PFB_CONFIG_0) |= 0x00000800;
|
||||
ENG_RG32(RG32_PFB_CONFIG_0) |= 0x00000800;
|
||||
/* write testpattern to RAM adress 127Mb */
|
||||
((uint32 *)si->framebuffer)[0x01fc0000] = 0x4e564441;
|
||||
/* reset first RAM adress */
|
||||
@@ -1897,7 +1897,7 @@ static void setup_ram_config_nv28(uint8* rom)
|
||||
}
|
||||
|
||||
/* clear bit 11: set normal mode */
|
||||
NV_REG32(NV32_PFB_CONFIG_0) &= ~0x00000800;
|
||||
ENG_RG32(RG32_PFB_CONFIG_0) &= ~0x00000800;
|
||||
|
||||
if (stat == B_OK)
|
||||
LOG(8,("INFO: ---RAM test done: access was OK within %d iteration(s).\n", cnt));
|
||||
@@ -1910,49 +1910,49 @@ static status_t translate_ISA_PCI(uint32* reg)
|
||||
switch (*reg)
|
||||
{
|
||||
case 0x03c0:
|
||||
*reg = NV8_ATTRDATW;
|
||||
*reg = RG8_ATTRDATW;
|
||||
break;
|
||||
case 0x03c1:
|
||||
*reg = NV8_ATTRDATR;
|
||||
*reg = RG8_ATTRDATR;
|
||||
break;
|
||||
case 0x03c2:
|
||||
*reg = NV8_MISCW;
|
||||
*reg = RG8_MISCW;
|
||||
break;
|
||||
case 0x03c4:
|
||||
*reg = NV8_SEQIND;
|
||||
*reg = RG8_SEQIND;
|
||||
break;
|
||||
case 0x03c5:
|
||||
*reg = NV8_SEQDAT;
|
||||
*reg = RG8_SEQDAT;
|
||||
break;
|
||||
case 0x03c6:
|
||||
*reg = NV8_PALMASK;
|
||||
*reg = RG8_PALMASK;
|
||||
break;
|
||||
case 0x03c7:
|
||||
*reg = NV8_PALINDR;
|
||||
*reg = RG8_PALINDR;
|
||||
break;
|
||||
case 0x03c8:
|
||||
*reg = NV8_PALINDW;
|
||||
*reg = RG8_PALINDW;
|
||||
break;
|
||||
case 0x03c9:
|
||||
*reg = NV8_PALDATA;
|
||||
*reg = RG8_PALDATA;
|
||||
break;
|
||||
case 0x03cc:
|
||||
*reg = NV8_MISCR;
|
||||
*reg = RG8_MISCR;
|
||||
break;
|
||||
case 0x03ce:
|
||||
*reg = NV8_GRPHIND;
|
||||
*reg = RG8_GRPHIND;
|
||||
break;
|
||||
case 0x03cf:
|
||||
*reg = NV8_GRPHDAT;
|
||||
*reg = RG8_GRPHDAT;
|
||||
break;
|
||||
case 0x03d4:
|
||||
*reg = NV8_CRTCIND;
|
||||
*reg = RG8_CRTCIND;
|
||||
break;
|
||||
case 0x03d5:
|
||||
*reg = NV8_CRTCDAT;
|
||||
*reg = RG8_CRTCDAT;
|
||||
break;
|
||||
case 0x03da:
|
||||
*reg = NV8_INSTAT1;
|
||||
*reg = RG8_INSTAT1;
|
||||
break;
|
||||
default:
|
||||
LOG(8,("\n\nINFO: WARNING: ISA->PCI register adress translation failed!\n\n"));
|
||||
@@ -2334,7 +2334,7 @@ static void detect_panels()
|
||||
|
||||
/* dump some panel configuration registers... */
|
||||
LOG(2,("INFO: Dumping flatpanel registers:\n"));
|
||||
LOG(2,("DUALHEAD_CTRL: $%08x\n", NV_REG32(NV32_DUALHEAD_CTRL)));
|
||||
LOG(2,("DUALHEAD_CTRL: $%08x\n", ENG_RG32(RG32_DUALHEAD_CTRL)));
|
||||
LOG(2,("DAC1: FP_HDISPEND: %d\n", DACR(FP_HDISPEND)));
|
||||
LOG(2,("DAC1: FP_HTOTAL: %d\n", DACR(FP_HTOTAL)));
|
||||
LOG(2,("DAC1: FP_HCRTC: %d\n", DACR(FP_HCRTC)));
|
||||
@@ -2359,8 +2359,8 @@ static void detect_panels()
|
||||
LOG(2,("DAC1: FP_DEBUG2: $%08x\n", DACR(FP_DEBUG2)));
|
||||
LOG(2,("DAC1: FP_DEBUG3: $%08x\n", DACR(FP_DEBUG3)));
|
||||
|
||||
LOG(2,("DAC1: FUNCSEL: $%08x\n", NV_REG32(NV32_FUNCSEL)));
|
||||
LOG(2,("DAC1: PANEL_PWR: $%08x\n", NV_REG32(NV32_PANEL_PWR)));
|
||||
LOG(2,("DAC1: FUNCSEL: $%08x\n", ENG_RG32(RG32_FUNCSEL)));
|
||||
LOG(2,("DAC1: PANEL_PWR: $%08x\n", ENG_RG32(RG32_PANEL_PWR)));
|
||||
|
||||
if(si->ps.secondary_head)
|
||||
{
|
||||
@@ -2388,8 +2388,8 @@ static void detect_panels()
|
||||
LOG(2,("DAC2: FP_DEBUG2: $%08x\n", DAC2R(FP_DEBUG2)));
|
||||
LOG(2,("DAC2: FP_DEBUG3: $%08x\n", DAC2R(FP_DEBUG3)));
|
||||
|
||||
LOG(2,("DAC2: FUNCSEL: $%08x\n", NV_REG32(NV32_2FUNCSEL)));
|
||||
LOG(2,("DAC2: PANEL_PWR: $%08x\n", NV_REG32(NV32_2PANEL_PWR)));
|
||||
LOG(2,("DAC2: FUNCSEL: $%08x\n", ENG_RG32(RG32_2FUNCSEL)));
|
||||
LOG(2,("DAC2: PANEL_PWR: $%08x\n", ENG_RG32(RG32_2PANEL_PWR)));
|
||||
}
|
||||
LOG(2,("INFO: End flatpanel registers dump.\n"));
|
||||
}
|
||||
@@ -2850,7 +2850,7 @@ static void pinsnv30_arch_fake(void)
|
||||
|
||||
static void getRAMsize_arch_nv4(void)
|
||||
{
|
||||
uint32 strapinfo = NV_REG32(NV32_NV4STRAPINFO);
|
||||
uint32 strapinfo = ENG_RG32(RG32_NV4STRAPINFO);
|
||||
|
||||
if (strapinfo & 0x00000100)
|
||||
{
|
||||
@@ -2883,7 +2883,7 @@ static void getRAMsize_arch_nv4(void)
|
||||
|
||||
static void getstrap_arch_nv4(void)
|
||||
{
|
||||
uint32 strapinfo = NV_REG32(NV32_NVSTRAPINFO2);
|
||||
uint32 strapinfo = ENG_RG32(RG32_NVSTRAPINFO2);
|
||||
|
||||
/* determine PLL reference crystal frequency */
|
||||
if (strapinfo & 0x00000040)
|
||||
@@ -2898,7 +2898,7 @@ static void getstrap_arch_nv4(void)
|
||||
static void getRAMsize_arch_nv10_20_30_40(void)
|
||||
{
|
||||
uint32 dev_manID = CFGR(DEVID);
|
||||
uint32 strapinfo = NV_REG32(NV32_NV10STRAPINFO);
|
||||
uint32 strapinfo = ENG_RG32(RG32_NV10STRAPINFO);
|
||||
|
||||
switch (dev_manID)
|
||||
{
|
||||
@@ -2950,7 +2950,7 @@ static void getRAMsize_arch_nv10_20_30_40(void)
|
||||
static void getstrap_arch_nv10_20_30_40(void)
|
||||
{
|
||||
uint32 dev_manID = CFGR(DEVID);
|
||||
uint32 strapinfo = NV_REG32(NV32_NVSTRAPINFO2);
|
||||
uint32 strapinfo = ENG_RG32(RG32_NVSTRAPINFO2);
|
||||
|
||||
/* determine PLL reference crystal frequency: three types are used... */
|
||||
if (strapinfo & 0x00000040)
|
||||
|
||||
@@ -681,7 +681,7 @@ int maventv_init(display_mode target)
|
||||
// if (si->ps.card_type <= G400MAX) MAVW(PGM, 0x01);
|
||||
// else
|
||||
// {
|
||||
// DXIW(TVO_IDX, NVMAV_PGM);
|
||||
// DXIW(TVO_IDX, ENMAV_PGM);
|
||||
// DXIW(TVO_DATA, 0x01);
|
||||
// }
|
||||
|
||||
@@ -917,7 +917,7 @@ int maventv_init(display_mode target)
|
||||
// MAVW(GAMMA9, 0xC8); /* 200 */
|
||||
|
||||
/* set flickerfilter */
|
||||
/* OFF: is dependant on MAVEN chip version(?): NV_TVO_B = $40, else $00.
|
||||
/* OFF: is dependant on MAVEN chip version(?): ENG_TVO_B = $40, else $00.
|
||||
* ON : always set $a2. */
|
||||
// MAVW(FFILTER, 0xa2);
|
||||
|
||||
@@ -1197,7 +1197,7 @@ int maventv_init(display_mode target)
|
||||
// if (si->ps.card_type <= G400MAX) MAVW(PGM, 0x00);
|
||||
// else
|
||||
// {
|
||||
// DXIW(TVO_IDX, NVMAV_PGM);
|
||||
// DXIW(TVO_IDX, ENMAV_PGM);
|
||||
// DXIW(TVO_DATA, 0x00);
|
||||
|
||||
/* Select 2.0 Volt MAVEN DAC ref. so we have enough contrast/brightness range */
|
||||
|
||||
@@ -143,33 +143,33 @@ static void dumprom (void *rom, uint32 size)
|
||||
/* return 1 if vblank interrupt has occured */
|
||||
static int caused_vbi(vuint32 * regs)
|
||||
{
|
||||
return (NV_REG32(NV32_CRTC_INTS) & 0x00000001);
|
||||
return (ENG_RG32(RG32_CRTC_INTS) & 0x00000001);
|
||||
}
|
||||
|
||||
/* clear the vblank interrupt */
|
||||
static void clear_vbi(vuint32 * regs)
|
||||
{
|
||||
NV_REG32(NV32_CRTC_INTS) = 0x00000001;
|
||||
ENG_RG32(RG32_CRTC_INTS) = 0x00000001;
|
||||
}
|
||||
|
||||
static void enable_vbi(vuint32 * regs)
|
||||
{
|
||||
/* clear the vblank interrupt */
|
||||
NV_REG32(NV32_CRTC_INTS) = 0x00000001;
|
||||
ENG_RG32(RG32_CRTC_INTS) = 0x00000001;
|
||||
/* enable nVidia interrupt source vblank */
|
||||
NV_REG32(NV32_CRTC_INTE) |= 0x00000001;
|
||||
ENG_RG32(RG32_CRTC_INTE) |= 0x00000001;
|
||||
/* enable nVidia interrupt system hardware (b0-1) */
|
||||
NV_REG32(NV32_MAIN_INTE) = 0x00000001;
|
||||
ENG_RG32(RG32_MAIN_INTE) = 0x00000001;
|
||||
}
|
||||
|
||||
static void disable_vbi(vuint32 * regs)
|
||||
{
|
||||
/* disable nVidia interrupt source vblank */
|
||||
NV_REG32(NV32_CRTC_INTE) &= 0xfffffffe;
|
||||
ENG_RG32(RG32_CRTC_INTE) &= 0xfffffffe;
|
||||
/* clear the vblank interrupt */
|
||||
NV_REG32(NV32_CRTC_INTS) = 0x00000001;
|
||||
ENG_RG32(RG32_CRTC_INTS) = 0x00000001;
|
||||
/* disable nVidia interrupt system hardware (b0-1) */
|
||||
NV_REG32(NV32_MAIN_INTE) = 0x00000000;
|
||||
ENG_RG32(RG32_MAIN_INTE) = 0x00000000;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -394,7 +394,7 @@ static status_t map_device(device_info *di)
|
||||
* NV18, NV28 and NV34 keep working.
|
||||
* confirmed NV28 and NV34 to use upper part of shadowed ROM for scratch purposes,
|
||||
* however the actual ROM content (so the used part) is intact (confirmed). */
|
||||
//set_pci(NVCFG_ROMSHADOW, 4, 0);
|
||||
//set_pci(ENCFG_ROMSHADOW, 4, 0);
|
||||
|
||||
/* get ROM memory mapped base adress - this is defined in the PCI standard */
|
||||
tmpUlong = get_pci(PCI_rom_base, 4);
|
||||
@@ -851,39 +851,39 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
||||
} break;
|
||||
|
||||
/* PRIVATE ioctl from here on */
|
||||
case NV_GET_PRIVATE_DATA: {
|
||||
case ENG_GET_PRIVATE_DATA: {
|
||||
eng_get_private_data *gpd = (eng_get_private_data *)buf;
|
||||
if (gpd->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (gpd->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
gpd->shared_info_area = di->shared_area;
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_GET_PCI: {
|
||||
case ENG_GET_PCI: {
|
||||
eng_get_set_pci *gsp = (eng_get_set_pci *)buf;
|
||||
if (gsp->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (gsp->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
pci_info *pcii = &(di->pcii);
|
||||
gsp->value = get_pci(gsp->offset, gsp->size);
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_SET_PCI: {
|
||||
case ENG_SET_PCI: {
|
||||
eng_get_set_pci *gsp = (eng_get_set_pci *)buf;
|
||||
if (gsp->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (gsp->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
pci_info *pcii = &(di->pcii);
|
||||
set_pci(gsp->offset, gsp->size, gsp->value);
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_DEVICE_NAME: { // apsed
|
||||
case ENG_DEVICE_NAME: { // apsed
|
||||
eng_device_name *dn = (eng_device_name *)buf;
|
||||
if (dn->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (dn->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
strcpy(dn->name, di->name);
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_RUN_INTERRUPTS: {
|
||||
case ENG_RUN_INTERRUPTS: {
|
||||
eng_set_bool_state *ri = (eng_set_bool_state *)buf;
|
||||
if (ri->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (ri->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
vuint32 *regs = di->regs;
|
||||
if (ri->do_it) {
|
||||
enable_vbi(regs);
|
||||
@@ -893,9 +893,9 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_GET_NTH_AGP_INFO: {
|
||||
case ENG_GET_NTH_AGP_INFO: {
|
||||
eng_nth_agp_info *nai = (eng_nth_agp_info *)buf;
|
||||
if (nai->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (nai->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
nai->exist = false;
|
||||
nai->agp_bus = false;
|
||||
if (agp_bus) {
|
||||
@@ -907,9 +907,9 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_ENABLE_AGP: {
|
||||
case ENG_ENABLE_AGP: {
|
||||
eng_cmd_agp *nca = (eng_cmd_agp *)buf;
|
||||
if (nca->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (nca->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
if (agp_bus) {
|
||||
nca->agp_bus = true;
|
||||
(*agp_bus->enable_agp)(&(nca->cmd));
|
||||
@@ -920,9 +920,9 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
||||
result = B_OK;
|
||||
}
|
||||
} break;
|
||||
case NV_ISA_OUT: {
|
||||
case ENG_ISA_OUT: {
|
||||
eng_in_out_isa *io_isa = (eng_in_out_isa *)buf;
|
||||
if (io_isa->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (io_isa->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
pci_info *pcii = &(di->pcii);
|
||||
|
||||
/* lock the driver:
|
||||
@@ -949,9 +949,9 @@ control_hook (void* dev, uint32 msg, void *buf, size_t len) {
|
||||
RELEASE_BEN(pd->kernel);
|
||||
}
|
||||
} break;
|
||||
case NV_ISA_IN: {
|
||||
case ENG_ISA_IN: {
|
||||
eng_in_out_isa *io_isa = (eng_in_out_isa *)buf;
|
||||
if (io_isa->magic == NV_PRIVATE_DATA_MAGIC) {
|
||||
if (io_isa->magic == SKEL_PRIVATE_DATA_MAGIC) {
|
||||
pci_info *pcii = &(di->pcii);
|
||||
|
||||
/* lock the driver:
|
||||
|
||||
Reference in New Issue
Block a user