Subject: mpc5200 ata driver question

From: John Bonesio <[email-masked]>
Date: Fri, 13 Nov 2009 14:13:36 -0800

Hello,

I have seen an intermittent problem in the driver:
	drivers/ata/pata_mpc52xx.c

The intermittent error is that the bestcomm dma engine gets stuck. I
don't believe the driver itself is causing the dma error. However, I do
want to enhance the driver so that it can recover from the dma error and
continue operation.

I haven't been able to find much information on the ata driver layer
other than the code. I've looked through and run some test code. The ata
layer will call either the driver's softreset() or hardreset() operation
if an error is detected.

I'm thinking about adding one or both of these reset routines, but I'm
not sure if this is the right approach since the error isn't with the
ata device itself. An alternative could be to recover dma from
mpc52xx_bmdma_status() - when the error is detected and reported.

How is error recovery supposed to work in the ata layer, and what is the
best approach for recovering from a dma error (as opposed to a drive
error)?

What is supposed to be the difference between the softreset() and
hardreset() routines? If recovering from the dma error, would one of
these routines be better to use?

Thanks for your help,

- John