2006-05-23 17:14:44

by Russell McConnachie

[permalink] [raw]
Subject: Compact Flash Serial ATA patch

I was having some trouble with a serial ATA compact flash adapter with
libata. I wrote a small patch for the kernel to work around the sanity
check, dma blacklisting and device ID detections in ata_dev_classify().

I am not exactly a programmer, I'm sure this can be written much better
but for anyone who may run into a similar problem with compact flash.

Russell McConnachie.


Attachments:
linux-2.6.16.16-compactflash-sata.patch (1.23 kB)

2006-05-23 17:23:56

by Matthew Dharm

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

On Tue, May 23, 2006 at 04:16:37AM -0600, Russell McConnachie wrote:
> I was having some trouble with a serial ATA compact flash adapter with
> libata. I wrote a small patch for the kernel to work around the sanity
> check, dma blacklisting and device ID detections in ata_dev_classify().

I've had this problem, too. Apparently, my CF/SATA bridge doesn't support
DMA, but libata requires it.

I don't know if this is the right fix (if nothing else the patch needs to
be sent in unified diff format), but it's certainly something that needs
fixing.

Matt

--
Matthew Dharm Home: [email protected]
Maintainer, Linux USB Mass Storage Driver

Somebody call an exorcist!
-- Dust Puppy
User Friendly, 5/16/1998


Attachments:
(No filename) (756.00 B)
(No filename) (191.00 B)
Download all attachments

2006-05-23 17:39:11

by Russell McConnachie

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

Hi Matt,

The patch which stopped the DMA problems was adding the model ID to the
dma blacklist in the libata-core.c file. I will create another patch in
unified diff format, it seems that compact flash uses different device
IDs than regular ATA/ATAPI devices.

On Tue, 2006-05-23 at 10:23 -0700, Matthew Dharm wrote:
> On Tue, May 23, 2006 at 04:16:37AM -0600, Russell McConnachie wrote:
> > I was having some trouble with a serial ATA compact flash adapter with
> > libata. I wrote a small patch for the kernel to work around the sanity
> > check, dma blacklisting and device ID detections in ata_dev_classify().
>
> I've had this problem, too. Apparently, my CF/SATA bridge doesn't support
> DMA, but libata requires it.
>
> I don't know if this is the right fix (if nothing else the patch needs to
> be sent in unified diff format), but it's certainly something that needs
> fixing.
>
> Matt
>

2006-05-23 18:41:11

by Alan

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

On Maw, 2006-05-23 at 10:23 -0700, Matthew Dharm wrote:
> I don't know if this is the right fix (if nothing else the patch needs to
> be sent in unified diff format), but it's certainly something that needs
> fixing.

I sent Jeff the patch to fix that a few days ago. Jeff can probably tell
you if its been applied yet. If not grab the libata PATA patches as they
include the needed fixes for 2.6.17-rc. The 2.6.17-mm tree is a bit
different so may be ok anyway.

2006-05-23 18:42:42

by Alan

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

On Maw, 2006-05-23 at 04:16 -0600, Russell McConnachie wrote:
> I am not exactly a programmer, I'm sure this can be written much better
> but for anyone who may run into a similar problem with compact flash.

Some CF adapters do not include all the neccessary pins for DMA because
they were designed to be cheap before the idea of CF using DMA seemed
realistic.

Alan

2006-05-23 20:47:53

by markus reichelt

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

* Alan Cox <[email protected]> wrote:

> On Maw, 2006-05-23 at 04:16 -0600, Russell McConnachie wrote:
> > I am not exactly a programmer, I'm sure this can be written much
> > better but for anyone who may run into a similar problem with
> > compact flash.
>
> Some CF adapters do not include all the neccessary pins for DMA
> because they were designed to be cheap before the idea of CF using
> DMA seemed realistic.

Some CF adapters I've seen included all necessary pins but the pin
connections for DMA were missing. Someone at a slackware mailing list
was having the same problem, and if I recall correctly (better check
specs though) it can be fixed quite easily:

CF pin 44: disconnect from +V, connect to IDE pin 29.
CF pin 43: connect to IDE pin 21.

Typical transfer rates increased to about 10-12 MB/s

--
left blank, right bald


Attachments:
(No filename) (848.00 B)
(No filename) (189.00 B)
Download all attachments

2006-05-24 07:17:11

by Helge Hafting

[permalink] [raw]
Subject: Re: Compact Flash Serial ATA patch

markus reichelt wrote:
> * Alan Cox <[email protected]> wrote:
>
>
>> On Maw, 2006-05-23 at 04:16 -0600, Russell McConnachie wrote:
>>
>>> I am not exactly a programmer, I'm sure this can be written much
>>> better but for anyone who may run into a similar problem with
>>> compact flash.
>>>
>> Some CF adapters do not include all the neccessary pins for DMA
>> because they were designed to be cheap before the idea of CF using
>> DMA seemed realistic.
>>
>
> Some CF adapters I've seen included all necessary pins but the pin
> connections for DMA were missing. Someone at a slackware mailing list
> was having the same problem, and if I recall correctly (better check
> specs though) it can be fixed quite easily:
>
> CF pin 44: disconnect from +V, connect to IDE pin 29.
> CF pin 43: connect to IDE pin 21.
>
> Typical transfer rates increased to about 10-12 MB/s
>
No more than that? I have a CF card on parallel IDE,
hdparm can read 20MB/s from it with the 4GB 100xKingston
card I use to boot from. Of course this card was bought
precisely for its speed (and size).

Helge Hafting