Compare commits

...
+123 -11
View File
@@ -555,25 +555,137 @@ void DumpAuraRegisters(AuraController * controller)
* Main function. Detects busses and Aura controllers, then opens the main window *
* *
\******************************************************************************************/
// PIIX4 SMBus address offsets
#define SMBHSTSTS (0 + piix4_smba)
#define SMBHSLVSTS (1 + piix4_smba)
#define SMBHSTCNT (2 + piix4_smba)
#define SMBHSTCMD (3 + piix4_smba)
#define SMBHSTADD (4 + piix4_smba)
#define SMBHSTDAT0 (5 + piix4_smba)
#define SMBHSTDAT1 (6 + piix4_smba)
#define SMBBLKDAT (7 + piix4_smba)
#define SMBSLVCNT (8 + piix4_smba)
#define SMBSHDWCMD (9 + piix4_smba)
#define SMBSLVEVT (0xA + piix4_smba)
#define SMBSLVDAT (0xC + piix4_smba)
int main(int argc, char *argv[])
{
DetectI2CBusses();
DetectAuraControllers();
FILE* file = freopen("regdump.txt", "w", stdout);
#if WIN32
OpenAuraSDKDialog dlg(busses, controllers);
dlg.DoModal();
int piix4_smba = ((i2c_smbus_piix4*)busses[0])->piix4_smba;
return 0;
while(1)
{
while ((Inp32(SMBHSTSTS) & 0x02) != 0)
{
for (int i = 0; i < 5000; i++);
}
#else
QApplication a(argc, argv);
while ((Inp32(SMBHSTSTS) & 0x02) == 0)
{
for (int i = 0; i < 5000; i++);
}
{
unsigned char addr = Inp32(SMBHSTADD);
unsigned char size = Inp32(SMBHSTCNT);
unsigned char cmnd = Inp32(SMBHSTCMD);
unsigned char dat0 = Inp32(SMBHSTDAT0);
unsigned char dat1 = Inp32(SMBHSTDAT1);
if (addr & 1)
{
switch (size & 0x1C)
{
case PIIX4_QUICK:
printf("Read %02x from address %02x \n",
dat0,
addr >> 1);
break;
Ui::OpenAuraSDKQtDialog dlg(busses, controllers);
dlg.show();
case PIIX4_BYTE_DATA:
printf("Read %02x from %02x, address %02x \n",
dat0,
cmnd,
addr >> 1);
break;
case PIIX4_WORD_DATA:
printf("Read %02x %02x from %02x, address %02x \n",
dat0,
dat1,
cmnd,
addr >> 1);
break;
case PIIX4_BLOCK_DATA:
printf("Read block of length %02x from %02x, address %02x, contents: ",
dat0,
cmnd,
addr >> 1);
// Read SMBHSTCNT to reset SMBBLKDAT read pointer
Inp32(SMBHSTCNT);
for (int byte = 0; byte < dat0; byte++)
{
printf("%02x ", Inp32(SMBBLKDAT));
}
printf("\n");
break;
}
}
else
{
switch (size & 0x1C)
{
case PIIX4_QUICK:
printf("Wrote %02x to address %02x \n",
dat0,
addr >> 1);
break;
case PIIX4_BYTE_DATA:
printf("Wrote %02x to %02x, address %02x \n",
dat0,
cmnd,
addr >> 1);
break;
case PIIX4_WORD_DATA:
printf("Wrote %02x %02x to %02x, address %02x \n",
dat0,
dat1,
cmnd,
addr >> 1);
break;
case PIIX4_BLOCK_DATA:
printf("Wrote block of length %02x to %02x, address %02x, contents: ",
dat0,
cmnd,
addr >> 1);
// Read SMBHSTCNT to reset SMBBLKDAT read pointer
Inp32(SMBHSTCNT);
for (int byte = 0; byte < dat0; byte++)
{
printf("%02x ", Inp32(SMBBLKDAT));
}
printf("\n");
break;
}
}
}
}
fclose(file);
return a.exec();
#endif
}