linux-mips
[Top] [All Lists]

Re: [PATCH] ide: New libata driver for OCTEON SOC Compact Flash interfac

To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: [PATCH] ide: New libata driver for OCTEON SOC Compact Flash interface.
From: David Daney <ddaney@caviumnetworks.com>
Date: Fri, 21 Nov 2008 09:47:55 -0800
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>, linux-ide@vger.kernel.org, linux-mips <linux-mips@linux-mips.org>
In-reply-to: <4926EF55.7080004@ru.mvista.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <49261BE5.2010406@caviumnetworks.com> <20081121102137.634616c5@lxorguk.ukuu.org.uk> <4926EA6A.7040704@caviumnetworks.com> <4926EF55.7080004@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Thunderbird 2.0.0.16 (X11/20080723)
Sergei Shtylyov wrote:
David Daney wrote:
[...]

What stops the following occuring

    ATA irq
        BUSY still set
        Queue tasklet

    Other irq on same line
    ATA busy clear
        Handle command

   Is CF interrupt indeed shared with anything?

    Tasklet runs but command was sorted out

(or a reset of the ata controller in the gap)

Probably nothing.  I will try to sort it out.

   It's the need for the tasklet that seems doubtful to me...


The interrupt occurs *before* the device de-asserts BUSY. A small pause is needed to allow the device to clear BUSY and allow libata to function normally.

Calling ata_sff_host_intr() while BUSY is asserted causes the driver to fail, as it is expecting to be called from a true IDE interrupt routine. Delaying calling ata_sff_host_intr() until BUSY is clear (using the tasklet) seemed to be the cleanest way to write the driver given that we are using an interrupt generated by DMA complete.

David Daney.

<Prev in Thread] Current Thread [Next in Thread>