GPU : GPU_Reset

This commit is contained in:
smea 2014-03-12 15:59:26 +01:00
parent 9bd8f1079a
commit fc708bddb6
3 changed files with 299 additions and 2 deletions

View File

@ -2,6 +2,7 @@
#define GPU_H
void GPU_Init(Handle *gsphandle);
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize);
void GPUCMD_SetBuffer(u32* adr, u32 size, u32 offset);
void GPUCMD_Run(u32* gxbuf);

View File

@ -63,13 +63,134 @@ void GPUCMD_AddSingleParam(u32 cmd, u32 param)
void GPUCMD_Finalize()
{
u32 cmd[2];
GPUCMD_AddSingleParam(0x000F0111, 0x00000001);
GPUCMD_AddSingleParam(0x000F0110, 0x00000001);
GPUCMD_AddSingleParam(0x000F0010, 0x12345678);
}
extern u32 gpuResetSequence[];
extern u32 gpuResetSequenceLength;
void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize)
{
int i;
static u32 param[0x80];
static u32 zero[0x80];
memset(zero, 0x00, 0x80*4);
GPUCMD_SetBuffer(gpuBuf, gpuBufSize, 0);
GPUCMD_AddSingleParam(0x000D0080, 0x00011000);
for(i=0x1;i<0xC;i++)GPUCMD_AddSingleParam(0x000F0080+i, 0x00000000);
GPUCMD_AddSingleParam(0x000F008C, 0x00FF0000);
GPUCMD_AddSingleParam(0x000F008D, 0x00000000);
GPUCMD_AddSingleParam(0x000F008E, 0x00000000);
for(i=0x0;i<0xF;i++)GPUCMD_AddSingleParam(0x000F0090+i, 0x00000000);
GPUCMD_AddSingleParam(0x00010245, 0x00000001);
GPUCMD_AddSingleParam(0x00010244, 0x00000000);
GPUCMD_AddSingleParam(0x00080289, 0x80000000);
GPUCMD_AddSingleParam(0x000B0229, 0x00000000);
GPUCMD_AddSingleParam(0x000F0252, 0x00000000);
GPUCMD_AddSingleParam(0x000F0251, 0x00000000);
GPUCMD_AddSingleParam(0x000F0254, 0x00000000);
GPUCMD_AddSingleParam(0x00010253, 0x00000000);
GPUCMD_AddSingleParam(0x000F0242, 0x00000000);
GPUCMD_AddSingleParam(0x000F024A, 0x00000000);
GPUCMD_AddSingleParam(0x0005025E, 0x00000000);
GPUCMD_Add(0x800F0101, zero, 0x00000007);
GPUCMD_AddSingleParam(0x000F011F, 0x00010140);
GPUCMD_AddSingleParam(0x000F0100, 0x00E40100);
GPUCMD_AddSingleParam(0x000F0101, 0x01010000);
GPUCMD_AddSingleParam(0x000F0107, 0x00001F40);
GPUCMD_AddSingleParam(0x000F0105, 0xFF00FF10);
GPUCMD_AddSingleParam(0x00010061, 0x00000003);
GPUCMD_AddSingleParam(0x00010062, 0x00000000);
GPUCMD_AddSingleParam(0x000F0065, 0x00000000);
GPUCMD_AddSingleParam(0x000F0066, 0x00000000);
GPUCMD_AddSingleParam(0x000F0067, 0x00000000);
GPUCMD_AddSingleParam(0x00010118, 0x00000000);
GPUCMD_AddSingleParam(0x000F011B, 0x00000000);
GPUCMD_AddSingleParam(0x0007006A, 0x00FFFFFF);
GPUCMD_AddSingleParam(0x000F0102, 0x00000003);
GPUCMD_AddSingleParam(0x00080126, 0x03000000);
GPUCMD_Add(0x800F0040, zero, 0x00000010);
param[0x0]=0x1F1F1F1F;
param[0x1]=0x1F1F1F1F;
param[0x2]=0x1F1F1F1F;
param[0x3]=0x1F1F1F1F;
param[0x4]=0x1F1F1F1F;
param[0x5]=0x1F1F1F1F;
param[0x6]=0x1F1F1F1F;
GPUCMD_Add(0x800F0050, param, 0x00000007);
GPUCMD_AddSingleParam(0x000F0058, 0x00000100);
GPUCMD_AddSingleParam(0x000F004C, 0x00000001);
GPUCMD_AddSingleParam(0x000F006F, 0x00000000);
GPUCMD_AddSingleParam(0x00020060, 0x00000000);
GPUCMD_AddSingleParam(0x000C0069, 0x00020000);
GPUCMD_AddSingleParam(0x000F0113, 0x0000000F);
GPUCMD_AddSingleParam(0x000F0112, 0x0000000F);
GPUCMD_AddSingleParam(0x000F0114, 0x00000003);
GPUCMD_AddSingleParam(0x000F0115, 0x00000003);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000000);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000100);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000200);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000300);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000400);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000500);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F01C5, 0x00000600);
for(i=0;i<32;i++)GPUCMD_Add(0x800F01C8, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F0290, 0x80000000);
for(i=0;i<48;i++)GPUCMD_Add(0x800F0291, zero, 0x00000008);
GPUCMD_AddSingleParam(0x000F02CB, 0x00000000);
for(i=0;i<4;i++)GPUCMD_Add(0x000F02CC, zero, 0x00000080);
GPUCMD_AddSingleParam(0x000F029B, 0x00000200);
for(i=0;i<28;i++)GPUCMD_Add(0x000F029C, zero, 0x00000080);
GPUCMD_AddSingleParam(0x000F02BF, 0x00000000);
GPUCMD_AddSingleParam(0x000F02B1, 0x00000000);
GPUCMD_AddSingleParam(0x000F02B2, 0x00000000);
GPUCMD_AddSingleParam(0x000F02B3, 0x00000000);
GPUCMD_AddSingleParam(0x000F02B4, 0x00000000);
param[0x0]=0xFFFFFFFF;
param[0x1]=0xFFFFFFFF;
GPUCMD_Add(0x800F028B, param, 0x00000002);
GPUCMD_Add(0x800F0205, zero, 0x00000024);
for(i=0;i<gpuResetSequenceLength;i++)GPUCMD_AddSingleParam(gpuResetSequence[i*2],gpuResetSequence[i*2+1]);
GPUCMD_Finalize();
GPUCMD_Run(gpuBuf);
}
void GPU_SetUniform(u32 startreg, u32* data, u32 numreg)
{
if(!data)return;

View File

@ -0,0 +1,175 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctr/types.h>
u32 gpuResetSequence[]=
{0x000F01D4, 0x00000001,
0x000F00AE, 0xFEFCF8F0,
0x000F004D, 0x00BF0000,
0x000F004E, 0x00000000,
0x000F004F, 0x00000000,
0x000F0050, 0x1F1F1F1F,
0x000F0051, 0x1F1F1F1F,
0x000F0052, 0x1F1F1F1F,
0x000F0053, 0x1F1F1F1F,
0x000F0054, 0x1F1F1F1F,
0x000F0055, 0x1F1F1F1F,
0x000F0056, 0x1F1F1F1F,
0x000F0047, 0x00000000,
0x000F0048, 0x00000000,
0x000F0049, 0x00000000,
0x000F004A, 0x00000000,
0x000F004B, 0x00000000,
0x000F006D, 0x00000001,
0x00020080, 0x00001000,
0x000F008B, 0x00000000,
0x000F008F, 0x00000000,
0x000F00A8, 0x00000009,
0x000F00A9, 0x00000000,
0x000F00AA, 0x00000000,
0x000F00AB, 0x00000000,
0x000F00AC, 0x01C00301,
0x000F00AD, 0xE0C08000,
0x000F00C0, 0x0EEE0EEE,
0x000F00C1, 0x00000000,
0x000F00C2, 0x00000000,
0x000F00C3, 0x00000000,
0x000F00C4, 0x00000000,
0x000F00C8, 0x0FFF0FFF,
0x000F00C9, 0x00000000,
0x000F00CA, 0x00000000,
0x000F00CB, 0x00000000,
0x000F00CC, 0x00000000,
0x000F00D0, 0x0FFF0FFF,
0x000F00D1, 0x00000000,
0x000F00D2, 0x00000000,
0x000F00D3, 0x00000000,
0x000F00D4, 0x00000000,
0x000F00D8, 0x0FFF0FFF,
0x000F00D9, 0x00000000,
0x000F00DA, 0x00000000,
0x000F00DB, 0x00000000,
0x000F00DC, 0x00000000,
0x000F00F0, 0x0FFF0FFF,
0x000F00F1, 0x00000000,
0x000F00F2, 0x00000000,
0x000F00F3, 0x00000000,
0x000F00F4, 0x00000000,
0x000F00F8, 0x0FFF0FFF,
0x000F00F9, 0x00000000,
0x000F00FA, 0x00000000,
0x000F00FB, 0x00000000,
0x000F00FC, 0x00000000,
0x000F00E0, 0x00000000,
0x000F00E1, 0x00000000,
0x000F00E4, 0x00003C00,
0x000F00E5, 0x00003C00,
0x000F00FD, 0x00000000,
0x000F0120, 0x00000000,
0x000F0121, 0x00000000,
0x000F0122, 0x00000100,
0x00070126, 0x00000A00,
0x000D0100, 0x00E40100,
0x000F0104, 0x00000010,
0x000F0130, 0x00003C00,
0x000F0140, 0x00000000,
0x000F0141, 0x00000000,
0x000F0142, 0x0CC330CC,
0x000F0143, 0x00000000,
0x000F0144, 0x00000000,
0x000F0145, 0x00003C00,
0x000F0146, 0x00000000,
0x000F0147, 0x00000800,
0x000F0149, 0x00000001,
0x000F014A, 0x00000000,
0x000F014B, 0x0003F000,
0x000F0150, 0x00000000,
0x000F0151, 0x00000000,
0x000F0152, 0x00000000,
0x000F0153, 0x00000000,
0x000F0154, 0x00000000,
0x000F0155, 0x00003C00,
0x000F0156, 0x00000000,
0x000F0157, 0x00000800,
0x000F0159, 0x00000001,
0x000F015A, 0x00000000,
0x000F015B, 0x0003F000,
0x000F0160, 0x00000000,
0x000F0161, 0x00000000,
0x000F0162, 0x00000000,
0x000F0163, 0x00000000,
0x000F0164, 0x00000000,
0x000F0165, 0x00003C00,
0x000F0166, 0x00000000,
0x000F0167, 0x00000800,
0x000F0169, 0x00000001,
0x000F016A, 0x00000000,
0x000F016B, 0x0003F000,
0x000F0170, 0x00000000,
0x000F0171, 0x00000000,
0x000F0172, 0x00000000,
0x000F0173, 0x00000000,
0x000F0174, 0x00000000,
0x000F0175, 0x00003C00,
0x000F0176, 0x00000000,
0x000F0177, 0x00000800,
0x000F0179, 0x00000001,
0x000F017A, 0x00000000,
0x000F017B, 0x0003F000,
0x000F0180, 0x00000000,
0x000F0181, 0x00000000,
0x000F0182, 0x00000000,
0x000F0183, 0x00000000,
0x000F0184, 0x00000000,
0x000F0185, 0x00003C00,
0x000F0186, 0x00000000,
0x000F0187, 0x00000800,
0x000F0189, 0x00000001,
0x000F018A, 0x00000000,
0x000F018B, 0x0003F000,
0x000F0190, 0x00000000,
0x000F0191, 0x00000000,
0x000F0192, 0x00000000,
0x000F0193, 0x00000000,
0x000F0194, 0x00000000,
0x000F0195, 0x00003C00,
0x000F0196, 0x00000000,
0x000F0197, 0x00000800,
0x000F0199, 0x00000001,
0x000F019A, 0x00000000,
0x000F019B, 0x0003F000,
0x000F01A0, 0x00000000,
0x000F01A1, 0x00000000,
0x000F01A2, 0x00000000,
0x000F01A3, 0x00000000,
0x000F01A4, 0x00000000,
0x000F01A5, 0x00003C00,
0x000F01A6, 0x00000000,
0x000F01A7, 0x00000800,
0x000F01A9, 0x00000001,
0x000F01AA, 0x00000000,
0x000F01AB, 0x0003F000,
0x000F01B0, 0x00000000,
0x000F01B1, 0x00000000,
0x000F01B2, 0x00000000,
0x000F01B3, 0x00000000,
0x000F01B4, 0x00000000,
0x000F01B5, 0x00003C00,
0x000F01B6, 0x00000000,
0x000F01B7, 0x00000800,
0x000F01B9, 0x00000001,
0x000F01BA, 0x00000000,
0x000F01BB, 0x0003F000,
0x000F01C0, 0x00A0280A,
0x000F01C2, 0x00000000,
0x000F01C3, 0x88000400,
0x000F01C4, 0xFFFFFFFF,
0x000F01C6, 0x00000001,
0x000F01D0, 0x02222222,
0x000F01D1, 0x00000000,
0x000F01D2, 0x00000000,
0x000F01D9, 0x00000000,
0x0008025E, 0x00000000};
u32 gpuResetSequenceLength=sizeof(gpuResetSequence)/8;