Work continues on this issue. I found a copy of the CompactFlash 3.0 specification at [1].
In section 1.3, "Overview of CompactFlash Storage Card": from file cfspc3_0.pdf: > A CompactFlash storage card also runs in True IDE mode that is > electrically compatible with an IDE disk drive." This is obviously the way I'm trying to use the card. > Once the CompactFlash Storage Card has been configured by the host, > it appears to the host as a standard ATA (IDE) disk drive. Note the term 'disk drive'. OpenBSD finds not a drive, but a controller with a drive attached. That would appear to be PCMCIA (or, as the standard puts it, 'PC Card') mode, alright. In section 4.2, "Electrical Description": > The CompactFlash Storage Card functions in three basic modes: 1) PC > Card ATA using I/O Mode, Aha, that's indeed what OpenBSD's using! > 2) PC Card ATA using Memory Mode, This must be the 'memory-mapped' mode that NetBSD appears to (at least theoretically) support, and which might yield a performance improvement compared to mode 1). Might... > 3) True IDE Mode, which is compatible with most disk drives. Yup, that's what I want alright. And that's also what I foolishly expected to work... Next, in table 4, "Pin Assignments and Pin Type", the OE signal is shown to double as 'ATA SEL' in ATA mode. In the the following table 5, "Signal Description", the following hint is given: > To enable True IDE Mode this input should be grounded by the host. In section 4.7.1, "True IDE Mode I/O Function": > The CompactFlash Storage Card and CF+ Card can be configured in a > True IDE Mode of operation. The CompactFlash Storage Card is > configured in this mode only when the -OE input signal is grounded by > the host during the power off to power on cycle. Power off to power on? Yelp. One could of course physically wire it so, but then the host (and quite possibly its firmware!) would need to know wtf is going on, or else it'd get very confused... However, some escape is provided: > Optionally, the CompactFlash Storage Cards and CF+ Cards may support > the following optional detection methods: > > 1. The card is permitted to monitor the -OE (-ATA SEL) signal at any > time(s) and switch to PCMCIA mode upon detecting a high level on > the pin. > > 2. The card is permitted to re-arbitrate the interface mode > determination following a transition of the (-)RESET pin. > > 3. The card is permitted to monitor the -OE (-ATA SEL) signal at any > time(s) and switch to True IDE mode upon detection of a continuous > low level on pin for an extended period of time. 'continuous'? 'extended'? That would seem to be rather open to interpretation. Nonetheless, when supported by the card, and given approrpriate host hardware, any of these methods would appear to suffice. Section 6, "Software Interface", as a whole appears to confirm that the wdc(4) detected and used by OpenBSD is in fact on the card itself. Table 61, "Pinout Differences Between CF Storage Card and CF Adapter", shows that the OE signal *does not* double as 'ATA SEL' on the PCMCIA end, even though the wiring is supposed to be passive. This is worrying. Next we consult the PCMCIA specification, volume 8, "PC Card Host System Specification", found at [2]. Specifically, section 4, "PCI-to-CardBus Bridge Register Description". Nothings there appears to say anything about ATA mode, or software control of the OE signal -- it was clearly not on the mind of anyone involved in writing that standard. So this is where it ends :( Just another piece of pee-cee pseudo-standardization. Yuck. Not an OpenBSD problem. Sorry for the noise. Hope it's been useful regardless. --schaafuit. [1] http://rumkin.com/reference/aquapad/media/cfspc3_0.pdf [2] http://affon.narod.ru/08ho80.pdf