I've been having a quick play with the SD controller in my Toshiba Portege M200 laptop. It's emphatically not supported by Toshiba (they claim confidentiality for not releasing specs) and it's not compatible with Linux's SDHCI. The Linux MMC/SD pages quote the chipset for this laptop as just 'Toshiba', and I haven't been able to take mine apart to check (I suspect it may be within a system ASIC in any case). Linux reports it as:
0000:02:0d.0 System peripheral: Toshiba America Info Systems SD TypA Controller (rev 05)
Windows driver. That's a self-extracting Zip - just run it through unzip to unpack.
ToSDPCI.sys seems to be the SCSI miniport driver - it accepts Windows' idea of simplified SCSI and converts it into whatever the hardware wants. The HW_INITIALIZATION_DATA structure supplied to ScsiPortInitialise says the driver is for Vendor 0x1179 and Product 0x0805. It has NumberOfAccessRanges=1 (only one range of I/O ports or memory addresses).
If TosSdPCI.sys has its base at 0x000102C0, the SCSIPort interrupt routine is at 0x0001092E, which immediately does CALL 0x0001297E. This starts poking the hardware using ScsiPortReadRegisterUshort and similar.
The other driver tsdhd.sys does low-level stuff. I can't quite work it out, but it only calls ntoskrnl.exe and hal.sys, mostly things like WRITE/READ_REGISTER_USHORT, PoSetPowerState, PoCallDriver, InterlockedExchange and IoGetAttachedDeviceReference. tsdhdexl.sys contains less code, but calls the same sort of functions.
Please don't contact me about this... I really know nothing more than what's here, and it was just the result of a few hours hacking. Hopefully it might be a few more snippets of information for someone else to spend more time figuring out how the device works... I have little experience in Windows hacking.
--15 May 2007.
Update: Linux driver
Richard Betts has produced some patches that are almost a working Linux driver.
Page by Theo Markettos (email at theo [at@] markettos.org.uk), last modified 2011-11-01
Return to electronics pages.