added NV40 arch specific engine init stuff (not finished, not working yet).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10593 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -322,8 +322,62 @@ status_t nv_acc_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*** PGRAPH ***/
|
/*** PGRAPH ***/
|
||||||
if (si->ps.card_arch != NV04A)
|
switch (si->ps.card_arch)
|
||||||
{
|
{
|
||||||
|
case NV40A:
|
||||||
|
/* set resetstate for most function blocks */
|
||||||
|
ACCW(DEBUG0, 0x0003ffff);//?
|
||||||
|
/* init some function blocks */
|
||||||
|
ACCW(DEBUG1, 0x401287c0);
|
||||||
|
ACCW(DEBUG2, 0x24f82ad9);//?
|
||||||
|
ACCW(DEBUG3, 0x60de8051);
|
||||||
|
/* end resetstate for the function blocks */
|
||||||
|
ACCW(DEBUG0, 0x00000000);//?
|
||||||
|
/* disable specific functions, but enable SETUP_SPARE2 register */
|
||||||
|
ACCW(NV10_DEBUG4, 0x00008000);
|
||||||
|
/* set limit_viol_pix_adress(?): more likely something unknown.. */
|
||||||
|
ACCW(NV4X_WHAT2, 0x00be3c5f);
|
||||||
|
/* unknown.. */
|
||||||
|
switch (si->ps.card_type)
|
||||||
|
{
|
||||||
|
case NV40:
|
||||||
|
ACCW(NV40_WHAT0, 0x83280fff);
|
||||||
|
ACCW(NV40_WHAT1, 0x000000a0);
|
||||||
|
ACCW(NV40_WHAT2, 0x0078e366);
|
||||||
|
ACCW(NV40_WHAT3, 0x0000014c);
|
||||||
|
break;
|
||||||
|
case NV41:
|
||||||
|
ACCW(NV40P_WHAT0, 0x83280eff);
|
||||||
|
ACCW(NV40P_WHAT1, 0x000000a0);
|
||||||
|
ACCW(NV40P_WHAT2, 0x007596ff);
|
||||||
|
ACCW(NV40P_WHAT3, 0x00000108);
|
||||||
|
break;
|
||||||
|
case NV43:
|
||||||
|
ACCW(NV40P_WHAT0, 0x83280eff);
|
||||||
|
ACCW(NV40P_WHAT1, 0x000000a0);
|
||||||
|
ACCW(NV40P_WHAT2, 0x0072cb77);
|
||||||
|
ACCW(NV40P_WHAT3, 0x00000108);
|
||||||
|
break;
|
||||||
|
case NV45: //fixme, checkout: this is cardID 0x016x at least!
|
||||||
|
ACCW(NV40P_WHAT0, 0x83280eff);
|
||||||
|
ACCW(NV40P_WHAT1, 0x000000a0);
|
||||||
|
ACCW(NV45_WHAT2, 0x00000000);
|
||||||
|
ACCW(NV45_WHAT3, 0x00000000);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ACCW(NV40P_WHAT0, 0x83280eff);
|
||||||
|
ACCW(NV40P_WHAT1, 0x000000a0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NV04A:
|
||||||
|
/* init some function blocks */
|
||||||
|
ACCW(DEBUG0, 0x1231c001);
|
||||||
|
ACCW(DEBUG1, 0x72111101);
|
||||||
|
ACCW(DEBUG2, 0x11d5f071);
|
||||||
|
ACCW(DEBUG3, 0x10d4ff31);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
/* set resetstate for most function blocks */
|
/* set resetstate for most function blocks */
|
||||||
ACCW(DEBUG0, 0x0003ffff);
|
ACCW(DEBUG0, 0x0003ffff);
|
||||||
/* init some function blocks */
|
/* init some function blocks */
|
||||||
@@ -334,14 +388,7 @@ status_t nv_acc_init()
|
|||||||
ACCW(DEBUG0, 0x00000000);
|
ACCW(DEBUG0, 0x00000000);
|
||||||
/* disable specific functions */
|
/* disable specific functions */
|
||||||
ACCW(NV10_DEBUG4, 0);
|
ACCW(NV10_DEBUG4, 0);
|
||||||
}
|
break;
|
||||||
else
|
|
||||||
{
|
|
||||||
/* init some function blocks */
|
|
||||||
ACCW(DEBUG0, 0x1231c001);
|
|
||||||
ACCW(DEBUG1, 0x72111101);
|
|
||||||
ACCW(DEBUG2, 0x11d5f071);
|
|
||||||
ACCW(DEBUG3, 0x10d4ff31);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset all cache sets */
|
/* reset all cache sets */
|
||||||
@@ -702,8 +749,16 @@ status_t nv_acc_init()
|
|||||||
/* tile 3: */
|
/* tile 3: */
|
||||||
ACCW(NV10_TIL3AD, ACCR(NV10_FBTIL3AD));
|
ACCW(NV10_TIL3AD, ACCR(NV10_FBTIL3AD));
|
||||||
ACCW(NV10_TIL3ED, ACCR(NV10_FBTIL3ED));
|
ACCW(NV10_TIL3ED, ACCR(NV10_FBTIL3ED));
|
||||||
ACCW(NV10_TIL3PT, ACCR(NV10_FBTIL3PT));
|
if (si->ps.card_arch >= NV40A)
|
||||||
ACCW(NV10_TIL3ST, ACCR(NV10_FBTIL3ST));
|
{
|
||||||
|
ACCW(NV10_TIL3PT, 0x2ffff800);
|
||||||
|
ACCW(NV10_TIL3ST, 0x00006000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ACCW(NV10_TIL3PT, ACCR(NV10_FBTIL3PT));
|
||||||
|
ACCW(NV10_TIL3ST, ACCR(NV10_FBTIL3ST));
|
||||||
|
}
|
||||||
/* tile 4: */
|
/* tile 4: */
|
||||||
ACCW(NV10_TIL4AD, ACCR(NV10_FBTIL4AD));
|
ACCW(NV10_TIL4AD, ACCR(NV10_FBTIL4AD));
|
||||||
ACCW(NV10_TIL4ED, ACCR(NV10_FBTIL4ED));
|
ACCW(NV10_TIL4ED, ACCR(NV10_FBTIL4ED));
|
||||||
@@ -725,6 +780,13 @@ status_t nv_acc_init()
|
|||||||
ACCW(NV10_TIL7PT, ACCR(NV10_FBTIL7PT));
|
ACCW(NV10_TIL7PT, ACCR(NV10_FBTIL7PT));
|
||||||
ACCW(NV10_TIL7ST, ACCR(NV10_FBTIL7ST));
|
ACCW(NV10_TIL7ST, ACCR(NV10_FBTIL7ST));
|
||||||
|
|
||||||
|
/* unknown.. */
|
||||||
|
if (si->ps.card_arch >= NV40A)
|
||||||
|
{
|
||||||
|
ACCW(NV4X_WHAT1, 0x01000000);
|
||||||
|
ACCW(NV4X_WHAT0, 0x00001200);
|
||||||
|
}
|
||||||
|
|
||||||
/* setup (clear) pipe */
|
/* setup (clear) pipe */
|
||||||
/* set eyetype to local, lightning is off */
|
/* set eyetype to local, lightning is off */
|
||||||
ACCW(NV10_XFMOD0, 0x10000000);
|
ACCW(NV10_XFMOD0, 0x10000000);
|
||||||
|
|||||||
Reference in New Issue
Block a user