Problems getting dma working with the sc1200.c ide driver

From: Axel Waggershauser
Date: Tue Feb 10 2004 - 07:32:24 EST


Hi,

I have the <subject> problem and tried to contact Mark Lord, which seems
to be the author of the driver. There is no response yet, so I decided to
post it here...

I have a peace of hardware called "X-board" in front of me (if your are
interested: http://www.jumptec.de/product/data/xboard/xb-861.html). It is
based on the Geode SC1200 cpu. This module is plugged into a development
board which I connected a standard IDE drive to.

I tried to get dma access working with a 2.4 and the 2.6.2 kernel without
success. The 2.6.2 kernel compiled with CONFIG_IDEDMA_PCI_AUTO=y hangs at
boot with the last line on the screen containing
"sc1200_set_xfer_mode(UDMA2)". Both kernel versions compiled without
CONFIG_IDEDMA_PCI_AUTO=y boot fine, but trying to enable dma with hdparm
after boot fails with "SC1200: set xfer mode failure". I took a look at the
2.6.2 driver code and found that if IDEDMA_PCI_AUTO is not configured every
attempt to enable dma later on fails because sc1200_autoselect_dma_mode()
returns 0 since hwif->autodma is false. So without the IDEDMA_PCI_AUTO option
(which locks my machine) there seems to be no way to enable dma, or is there?

I did not further try to track down the lockup, yet. I could start debugging
this on the level of "inserting printks". I have no knowledge of the IDE
part of the kernel, though.

I have seen lines like:

if (!((d->device == PCI_DEVICE_ID_CYRIX_5530_IDE && d->vendor == PCI_VENDOR_ID_CYRIX)
||(d->device == PCI_DEVICE_ID_NS_SCx200_IDE && d->vendor == PCI_VENDOR_ID_NS)))
{
hwif->autodma = 0;
}

which I do not understand in their context but made me suspect that
dma is not really expected to work on this setup.


I would appreciate any help or hints to a solution.


Thanks,
Axel.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/