Picked some comments from OpenXbox
This commit is contained in:
parent
85325ea3b4
commit
6d9d89c5f1
|
@ -3,13 +3,15 @@ DEVICE_READ32(PBUS)
|
||||||
DEVICE_READ32_SWITCH() {
|
DEVICE_READ32_SWITCH() {
|
||||||
case NV_PBUS_PCI_NV_0:
|
case NV_PBUS_PCI_NV_0:
|
||||||
result = 0x10de; // PCI_VENDOR_ID_NVIDIA (?where to return PCI_DEVICE_ID_NVIDIA_NV2A = 0x01b7)
|
result = 0x10de; // PCI_VENDOR_ID_NVIDIA (?where to return PCI_DEVICE_ID_NVIDIA_NV2A = 0x01b7)
|
||||||
|
// TODO : result = pci_get_long(d->dev.config + PCI_VENDOR_ID);
|
||||||
break;
|
break;
|
||||||
case NV_PBUS_PCI_NV_1:
|
case NV_PBUS_PCI_NV_1:
|
||||||
result = 1; // NV_PBUS_PCI_NV_1_IO_SPACE_ENABLED
|
result = 1; // NV_PBUS_PCI_NV_1_IO_SPACE_ENABLED
|
||||||
|
// TODO : result = pci_get_long(d->dev.config + PCI_COMMAND);
|
||||||
break;
|
break;
|
||||||
case NV_PBUS_PCI_NV_2:
|
case NV_PBUS_PCI_NV_2:
|
||||||
result = (0x02 << 24) | 161; // PCI_CLASS_DISPLAY_3D (0x02) Rev 161 (0xA1)
|
result = (0x02 << 24) | 161; // PCI_CLASS_DISPLAY_3D (0x02) Rev 161 (0xA1)
|
||||||
|
// TODO : result = pci_get_long(d->dev.config + PCI_CLASS_REVISION);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -25,6 +27,7 @@ DEVICE_WRITE32(PBUS)
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
case NV_PBUS_PCI_NV_1:
|
case NV_PBUS_PCI_NV_1:
|
||||||
// TODO : Handle write on NV_PBUS_PCI_NV_1 with 1 (NV_PBUS_PCI_NV_1_IO_SPACE_ENABLED) + 4 (NV_PBUS_PCI_NV_1_BUS_MASTER_ENABLED)
|
// TODO : Handle write on NV_PBUS_PCI_NV_1 with 1 (NV_PBUS_PCI_NV_1_IO_SPACE_ENABLED) + 4 (NV_PBUS_PCI_NV_1_BUS_MASTER_ENABLED)
|
||||||
|
// pci_set_long(d->dev.config + PCI_COMMAND, val);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DEBUG_WRITE32_UNHANDLED(PBUS); // TODO : DEVICE_WRITE32_REG(pbus);
|
DEBUG_WRITE32_UNHANDLED(PBUS); // TODO : DEVICE_WRITE32_REG(pbus);
|
||||||
|
|
|
@ -33,7 +33,9 @@ DEVICE_WRITE32(PCRTC)
|
||||||
update_irq();
|
update_irq();
|
||||||
break;
|
break;
|
||||||
case NV_PCRTC_START:
|
case NV_PCRTC_START:
|
||||||
pcrtc.start = value &= 0x07FFFFFF;
|
value &= 0x07FFFFFF;
|
||||||
|
// assert(val < memory_region_size(d->vram));
|
||||||
|
pcrtc.start = value;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -2,6 +2,7 @@ DEVICE_READ32(PFB)
|
||||||
{
|
{
|
||||||
DEVICE_READ32_SWITCH() {
|
DEVICE_READ32_SWITCH() {
|
||||||
case NV_PFB_CFG0:
|
case NV_PFB_CFG0:
|
||||||
|
/* 3-4 memory partitions. The debug bios checks this. */
|
||||||
result = 3; // = NV_PFB_CFG0_PART_4
|
result = 3; // = NV_PFB_CFG0_PART_4
|
||||||
break;
|
break;
|
||||||
case NV_PFB_CSTATUS:
|
case NV_PFB_CSTATUS:
|
||||||
|
@ -11,7 +12,7 @@ DEVICE_READ32(PFB)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NV_PFB_WBC:
|
case NV_PFB_WBC:
|
||||||
result = 0; // = !NV_PFB_WBC_FLUSH
|
result = 0; // = !NV_PFB_WBC_FLUSH /* Flush not pending. */
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DEVICE_READ32_REG(pfb);
|
DEVICE_READ32_REG(pfb);
|
||||||
|
|
|
@ -26,6 +26,7 @@ DEVICE_WRITE32(PMC)
|
||||||
{
|
{
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
case NV_PMC_INTR_0:
|
case NV_PMC_INTR_0:
|
||||||
|
/* the bits of the interrupts to clear are wrtten */
|
||||||
pmc.pending_interrupts &= ~value;
|
pmc.pending_interrupts &= ~value;
|
||||||
update_irq();
|
update_irq();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -24,6 +24,9 @@ DEVICE_READ32(PRAMDAC)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Surprisingly, QEMU doesn't handle unaligned access for you properly */
|
||||||
|
// result >>= 32 - 8 * size - 8 * (addr & 3);
|
||||||
|
|
||||||
DEVICE_READ32_END(PRAMDAC);
|
DEVICE_READ32_END(PRAMDAC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
DEVICE_READ32(PRMCIO)
|
DEVICE_READ32(PRMCIO)
|
||||||
{
|
{
|
||||||
|
// vga_ioport_read :
|
||||||
DEVICE_READ32_SWITCH() {
|
DEVICE_READ32_SWITCH() {
|
||||||
case VGA_CRT_IM:
|
case VGA_CRT_IM:
|
||||||
case VGA_CRT_IC:
|
case VGA_CRT_IC:
|
||||||
|
@ -23,6 +24,19 @@ DEVICE_READ32(PRMCIO)
|
||||||
DEVICE_WRITE32(PRMCIO)
|
DEVICE_WRITE32(PRMCIO)
|
||||||
{
|
{
|
||||||
switch (addr) {
|
switch (addr) {
|
||||||
|
#if 0 // TODO : Enable
|
||||||
|
case VGA_ATT_W:
|
||||||
|
/* Cromwell sets attrs without enabling VGA_AR_ENABLE_DISPLAY
|
||||||
|
* (which should result in a blank screen).
|
||||||
|
* Either nvidia's hardware is lenient or it is set through
|
||||||
|
* something else. The former seems more likely.
|
||||||
|
*/
|
||||||
|
if (d->vga.ar_flip_flop == 0) {
|
||||||
|
value |= VGA_AR_ENABLE_DISPLAY;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
// vga_ioport_write :
|
||||||
case VGA_CRT_IM:
|
case VGA_CRT_IM:
|
||||||
case VGA_CRT_IC:
|
case VGA_CRT_IC:
|
||||||
prmcio.cr_index = value;
|
prmcio.cr_index = value;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
DEVICE_READ32(PRMVIO)
|
DEVICE_READ32(PRMVIO)
|
||||||
{
|
{
|
||||||
|
// vga_ioport_read
|
||||||
DEVICE_READ32_SWITCH() {
|
DEVICE_READ32_SWITCH() {
|
||||||
default:
|
default:
|
||||||
DEBUG_READ32_UNHANDLED(PRMVIO); // TODO : DEVICE_READ32_REG(prmvio);
|
DEBUG_READ32_UNHANDLED(PRMVIO); // TODO : DEVICE_READ32_REG(prmvio);
|
||||||
|
@ -11,6 +12,7 @@ DEVICE_READ32(PRMVIO)
|
||||||
|
|
||||||
DEVICE_WRITE32(PRMVIO)
|
DEVICE_WRITE32(PRMVIO)
|
||||||
{
|
{
|
||||||
|
// vga_ioport_write
|
||||||
switch (addr) {
|
switch (addr) {
|
||||||
default:
|
default:
|
||||||
DEBUG_WRITE32_UNHANDLED(PRMVIO); // TODO : DEVICE_WRITE32_REG(prmvio);
|
DEBUG_WRITE32_UNHANDLED(PRMVIO); // TODO : DEVICE_WRITE32_REG(prmvio);
|
||||||
|
|
Loading…
Reference in New Issue