Yes, if I were you, then first I'd try to initialize this board to PPDMA. The question is - how did they wire the IT8888 chip to the ICH4? ICH4 has two pairs of PPDMA lines: REQA/GNTA, REQB/GNTB. The latter are multiplexed with REQ5/GNT5 PCI bus master lines. If they have connected ICH4_REQA<-IT8888_PPDREQ, ICH4_GNTA->IT8888_PPDGNT, ICH4_REQ5<-IT8888_IREQ, ICH4_GNT5->IT8888_IGNT, then it may be possible to use IT8888 in both modes (PPDMA and DDMA). But if they needed REQA/GNTA for a SuperIO chip, for example, they'd have to choose where to connect the remaing REQ5/GNT5 lines - to PP* pins (PPDMA) or to regular IREQ/IGNT pins (DDMA) of IT8888, thus making only PPDMA or DDMA mode possible.
Also you may check IT8888 PCI configuration space if PPDMA is enabled. By default it is, but what if they modify the value in BIOS? By the way, ITEXXX disables PPDMA in IT8888, because it was aimed at later chipsets, where PPDMA is absent.
Hi KYA, thanks for the interesting tips here. Your answer clarifies a few things, and since I'm fortunate enough to have a microscope (because I love tinkering with the hardware) and because the ITE888F is a QFP package I can answer a few of these questions:
First off, there is a winbond super I/O chip on this board handling the serial and parallel ports. However, this chip uses the LPC interface, it's not a PCI device, so I don't think that it needs REQA/GNTA.
Pin 131 (PPDGNT#)/Pin 132 (PPDREQ#) - These run to the ICH4. I can't see the traces in their entirety, some run on inside layers and they're very hard to follow, but I can follow them far enough to know that these signals are going toward the south bridge chip. Unfortunately, given the ICH4 is a BGA chip there's no way I can be 100% sure what pins they run to without removing the chip (and I'm fully capable of doing that - but I'm not capable of reballing it and putting it back on) - so i'm not willing to risk it.
Pin 138 (IGNT#)/Pin 139 (IREQ#) - Pin 138 is pulled up via a 4.7k resistor to 3.3V. If there's another trace running from this pin it's hidden under the chip. Pin 139 may be completely unconnected or the trace may also run under the chip where I can't see it. But given there's nothing more then a pull-up resistor on 138 that I can clearly see, I have a feeling this pair isn't used.
Based on what you said, if IREQ# and IGNT# aren't connected, DDMA can't work on this board the way it is wired. So the real question is why doesn't PPDMA work? I spent much of my morning trying to answer that and I pulled all the PCI configuration registers for the devices below and examined any registers related to PPDMA (or even DMA in general on them).
8086:1A30 - PCI Host Bridge - Didn't find much of interest here.
8086:24C0 - LPC Interface ICH4 - Lots of interesting stuff here as you'd expect
Sorry for asking an obvious thing you already mentioned, but are you sure you have both REQ5 and GNT5 pins set to native function?
A quick glance at the ICH4 datasheet reveals that REQ5 is also multiplexed with REQB! Three functions on one pin... So you have to somehow tell the chipset, you want to use that pin as REQ5, not as REQB. By disabling PPDMA in ICH4 somehow?
GEN_CNTL 32-bits starting at offset D0h - The initial value setup by the BIOS if you read this register after boot is 0x01002187. The interesting bits here are 24 and 25, which in this case are respectively 1 and 0. Bit 24 being 1 is of course what caused me so many issues earlier, that hides the bridge since IDSEL is indeed connected to AD22 (proven with my multimeter) and clearing this bit makes the bridge start to respond to configuration cycles. Bit 25 is the really interesting one here because it's initialized to 0 and yet according to the ICH4 datasheet this need to be 1 for REQ5 and GNT5 to be REQB and GNTB notwithstanding the contents of GPIO_USE_SEL. However, given the winbond chip is on the LPC bus, I think this is being accurately set and that the ITE8888F is using REQA and GNTA (but I can't prove it). I tried it, though - I wrote 0x02002187 to offset D0h, clearing bit 24 (though this isn't critical it also shouldn't matter for DOS) and setting bit 25, but alas. No go, DMA still doesn't work.
So, I took a look at GPIO_USE_SEL since REQ5 could also be GPIO1 and GNT5 could also be GPIO17. GPIO_USE_SEL is initialized to 0x01A203180. Based on that Bits 1 and 17 are clear, so these pins aren't used for GPIO.
PCI_DMA_CFG 16-bits at offset 90h - The initial value setup by the BIOS if you read this register after boot is 0x54d5. That would map the DMA's as follows:
DMA 0 - PC/PCI
DMA 1 - PC/PCI
DMA 2 - PC/PCI
DMA 3 - LPC
DMA 5 - PC/PCI
DMA 6 - PC/PCI
DMA 7 - PC/PCI
I think they reserved DMA 3 for the Super I/O parallel port - in one of the modes I think it defaults to using DMA 3. So that's not going to work regardless on the ISA bus, but this should not be an issue with the more common choices of 1 and 5. Interesting, but not really a problem.
I tried a few other misc things like turning off ACPI - none of it made any difference.
8086:244E - PCI Hub - Didn't find much of interest here.
1283:8888 - ITE8888F - So what of the bridge itself?
PPD_REGISTER 8-bits at offset 0x48 - The default value is 0xFF and if you unhide the bridge and read this register the value is 0xFF. As far as I can tell this is what it needs to be for PPDMA to work.
CMD_REGISTER 16-bits at offset 0x04 - I think that for PPDMA the bridge needs to be able to act as a bus master??? The default value for this register is 0x07 which would enable that (bit 2) and if you unhide the bridge and read it this register returns 0x07.
I've had the same symptoms on my IMBA board, when GNT5 was GPIO, which is quite understandable. The bridge sends a REQ to become a bus master, but never gets a GNT. PCI bus (and the entire system) locks up.
This makes me wonder then, can you confirm with your knowledge, does the ITE8888F need to become a bus master for PPDMA to work? Are all 4 of PPDREQ#, PPDGNT#, IREQ# and IGNT# required? The AI (Gemini) seems to think so. I wish I could see for certain if IREQ# and IGNT# were wired to something - I might even remove the chip and take a look (i've removed and soldered large QFPs before). The ICH4 can have a maximum of 6 bus masters on the PCI bus. But there's an issue here - this board has 2x 1GE NICs, 4x PCI slots and the ITE8888F = 7 total potential bus masters. Did they run out of pins so they sacrificed DMA on the ITE8888F? If so why did they bother wiring PPDREQ# and PPDGNT# though?
download/file.php?mode=view&id=236341
Are they also connected to traces under the chip?