libata: Fix several inaccuracies in developer's guide
Commit6bfff31e77
(libata: kill probe_ent and related helpers) killed ata_device_add() but didn't remove references to it from the libata developer's guide. Commits9363c3825e
(libata: rename SFF functions) and5682ed33aa
(libata: rename SFF port ops) renamed the taskfile access methods but didn't update the developer's guide. Commitc9f75b04ed
(libata: kill ata_noop_dev_select()) didn't update the developer's guide as well. The guide also refers to the long gone ata_pio_data_xfer_noirq(), ata_pio_data_xfer(), and ata_mmio_data_xfer() -- replace those by the modern ata_sff_data_xfer_noirq(), ata_sff_data_xfer(), and ata_sff_data_xfer32(). Also, remove the reference to non-existant ata_port_stop()... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
8777c793d6
commit
40868c85b8
|
@ -107,10 +107,6 @@ void (*dev_config) (struct ata_port *, struct ata_device *);
|
||||||
issue of SET FEATURES - XFER MODE, and prior to operation.
|
issue of SET FEATURES - XFER MODE, and prior to operation.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Called by ata_device_add() after ata_dev_identify() determines
|
|
||||||
a device is present.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
This entry may be specified as NULL in ata_port_operations.
|
This entry may be specified as NULL in ata_port_operations.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -154,8 +150,8 @@ unsigned int (*mode_filter) (struct ata_port *, struct ata_device *, unsigned in
|
||||||
|
|
||||||
<sect2><title>Taskfile read/write</title>
|
<sect2><title>Taskfile read/write</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
void (*tf_load) (struct ata_port *ap, struct ata_taskfile *tf);
|
void (*sff_tf_load) (struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
|
void (*sff_tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -164,36 +160,35 @@ void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
hardware registers / DMA buffers, to obtain the current set of
|
hardware registers / DMA buffers, to obtain the current set of
|
||||||
taskfile register values.
|
taskfile register values.
|
||||||
Most drivers for taskfile-based hardware (PIO or MMIO) use
|
Most drivers for taskfile-based hardware (PIO or MMIO) use
|
||||||
ata_tf_load() and ata_tf_read() for these hooks.
|
ata_sff_tf_load() and ata_sff_tf_read() for these hooks.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2><title>PIO data read/write</title>
|
<sect2><title>PIO data read/write</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
void (*data_xfer) (struct ata_device *, unsigned char *, unsigned int, int);
|
void (*sff_data_xfer) (struct ata_device *, unsigned char *, unsigned int, int);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
All bmdma-style drivers must implement this hook. This is the low-level
|
All bmdma-style drivers must implement this hook. This is the low-level
|
||||||
operation that actually copies the data bytes during a PIO data
|
operation that actually copies the data bytes during a PIO data
|
||||||
transfer.
|
transfer.
|
||||||
Typically the driver
|
Typically the driver will choose one of ata_sff_data_xfer_noirq(),
|
||||||
will choose one of ata_pio_data_xfer_noirq(), ata_pio_data_xfer(), or
|
ata_sff_data_xfer(), or ata_sff_data_xfer32().
|
||||||
ata_mmio_data_xfer().
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2><title>ATA command execute</title>
|
<sect2><title>ATA command execute</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
|
void (*sff_exec_command)(struct ata_port *ap, struct ata_taskfile *tf);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
causes an ATA command, previously loaded with
|
causes an ATA command, previously loaded with
|
||||||
->tf_load(), to be initiated in hardware.
|
->tf_load(), to be initiated in hardware.
|
||||||
Most drivers for taskfile-based hardware use ata_exec_command()
|
Most drivers for taskfile-based hardware use ata_sff_exec_command()
|
||||||
for this hook.
|
for this hook.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -218,8 +213,8 @@ command.
|
||||||
|
|
||||||
<sect2><title>Read specific ATA shadow registers</title>
|
<sect2><title>Read specific ATA shadow registers</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
u8 (*check_status)(struct ata_port *ap);
|
u8 (*sff_check_status)(struct ata_port *ap);
|
||||||
u8 (*check_altstatus)(struct ata_port *ap);
|
u8 (*sff_check_altstatus)(struct ata_port *ap);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -227,20 +222,14 @@ u8 (*check_altstatus)(struct ata_port *ap);
|
||||||
hardware. On some hardware, reading the Status register has
|
hardware. On some hardware, reading the Status register has
|
||||||
the side effect of clearing the interrupt condition.
|
the side effect of clearing the interrupt condition.
|
||||||
Most drivers for taskfile-based hardware use
|
Most drivers for taskfile-based hardware use
|
||||||
ata_check_status() for this hook.
|
ata_sff_check_status() for this hook.
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
Note that because this is called from ata_device_add(), at
|
|
||||||
least a dummy function that clears device interrupts must be
|
|
||||||
provided for all drivers, even if the controller doesn't
|
|
||||||
actually have a taskfile status register.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
<sect2><title>Select ATA device on bus</title>
|
<sect2><title>Select ATA device on bus</title>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
void (*dev_select)(struct ata_port *ap, unsigned int device);
|
void (*sff_dev_select)(struct ata_port *ap, unsigned int device);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
@ -251,9 +240,7 @@ void (*dev_select)(struct ata_port *ap, unsigned int device);
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Most drivers for taskfile-based hardware use
|
Most drivers for taskfile-based hardware use
|
||||||
ata_std_dev_select() for this hook. Controllers which do not
|
ata_sff_dev_select() for this hook.
|
||||||
support second drives on a port (such as SATA contollers) will
|
|
||||||
use ata_noop_dev_select().
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect2>
|
</sect2>
|
||||||
|
@ -441,13 +428,13 @@ void (*irq_clear) (struct ata_port *);
|
||||||
to struct ata_host_set.
|
to struct ata_host_set.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Most legacy IDE drivers use ata_interrupt() for the
|
Most legacy IDE drivers use ata_sff_interrupt() for the
|
||||||
irq_handler hook, which scans all ports in the host_set,
|
irq_handler hook, which scans all ports in the host_set,
|
||||||
determines which queued command was active (if any), and calls
|
determines which queued command was active (if any), and calls
|
||||||
ata_host_intr(ap,qc).
|
ata_sff_host_intr(ap,qc).
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Most legacy IDE drivers use ata_bmdma_irq_clear() for the
|
Most legacy IDE drivers use ata_sff_irq_clear() for the
|
||||||
irq_clear() hook, which simply clears the interrupt and error
|
irq_clear() hook, which simply clears the interrupt and error
|
||||||
flags in the DMA status register.
|
flags in the DMA status register.
|
||||||
</para>
|
</para>
|
||||||
|
@ -496,10 +483,6 @@ void (*host_stop) (struct ata_host_set *host_set);
|
||||||
data from port at this time.
|
data from port at this time.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Many drivers use ata_port_stop() as this hook, which frees the
|
|
||||||
PRD table.
|
|
||||||
</para>
|
|
||||||
<para>
|
|
||||||
->host_stop() is called after all ->port_stop() calls
|
->host_stop() is called after all ->port_stop() calls
|
||||||
have completed. The hook must finalize hardware shutdown, release DMA
|
have completed. The hook must finalize hardware shutdown, release DMA
|
||||||
and other resources, etc.
|
and other resources, etc.
|
||||||
|
|
Reference in New Issue