TOS7301 disk controller support

Alastair Hughes <[email protected]>
Newsgroups gmane.os.netbsd.ports.i386
Message-ID <[email protected]>
Hi all!

I have an old Toshiba 310CDS with an obscure disk controller, which I'd like to get working with a proper driver (ideally with DMA). There is an existing NetBSD driver (pciide_pnpbios) for the TOS7300 controllers, which seem to be very similar to the TOS7301 controller in the laptop - they share a Windows driver.
The controller identifies itself as a TOS7301 PnP BIOS device. The device has a pair of I/O regions, in much the same vein as the TOS7300 device, however it is missing the 3rd (DMA) I/O region.

I have attempted to get the disk controller working using the TOS7300 driver by changing the device ID and commenting out the first call to pnpbios_io_map, the line setting sc->sc_dma_ok = 1 and the following for loop, the line setting sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_DMA, and both with and without the section below "idedma_ctl = 0". However, this always results in a crash ("fatal page fault") in bus_space_read_1 (called from wdc_do_reset). Strangely, calling bus_space_read_1 with the same arguments as listed from the ddb prompt works just fine (returning 50). I'd appreciate some help figuring out what I have done wrong, as getting something working would be helpful.

The drive works (very slowly) with the default driver. I don't know whether the driver works at all on a machine with a TOS7300 controller, and I doubt it gets much testing, so that might be a problem. I have disabled ACPI and SMP for now, as otherwise the disk controller only shows up as a PNP0600 device.

Alastair Hughes
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.