diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:39 -0400 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 07:46:39 -0400 |
commit | 0dfb991c6943c810175376b58d1c29cfe532541b (patch) | |
tree | c7b82d2ea9159e94c40f8df1a178dab4d2590ed3 /drivers/ide/ide-disk.c | |
parent | 04d09b0e62f2180a7e3fa8578ed778eca0c454fd (diff) |
ide: use ata_tf_protocols enums
* Add IDE_TFLAG_MULTI_PIO taskfile flag and set it for commands
using multi-PIO protocol.
* Use ata_tf_protocols enums instead of TASKFILE_* defines to
denote command's protocol and then rename ->data_phase field
to ->protocol.
* Remove no longer needed <linux/hdreg.h> includes.
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Diffstat (limited to 'drivers/ide/ide-disk.c')
-rw-r--r-- | drivers/ide/ide-disk.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index d00d807c0f53..dae9d988de10 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/mutex.h> | 28 | #include <linux/mutex.h> |
29 | #include <linux/leds.h> | 29 | #include <linux/leds.h> |
30 | #include <linux/ide.h> | 30 | #include <linux/ide.h> |
31 | #include <linux/hdreg.h> | ||
32 | 31 | ||
33 | #include <asm/byteorder.h> | 32 | #include <asm/byteorder.h> |
34 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
@@ -53,15 +52,6 @@ static const u8 ide_rw_cmds[] = { | |||
53 | ATA_CMD_WRITE_EXT, | 52 | ATA_CMD_WRITE_EXT, |
54 | }; | 53 | }; |
55 | 54 | ||
56 | static const u8 ide_data_phases[] = { | ||
57 | TASKFILE_MULTI_IN, | ||
58 | TASKFILE_MULTI_OUT, | ||
59 | TASKFILE_IN, | ||
60 | TASKFILE_OUT, | ||
61 | TASKFILE_IN_DMA, | ||
62 | TASKFILE_OUT_DMA, | ||
63 | }; | ||
64 | |||
65 | static void ide_tf_set_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 dma) | 55 | static void ide_tf_set_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 dma) |
66 | { | 56 | { |
67 | u8 index, lba48, write; | 57 | u8 index, lba48, write; |
@@ -69,17 +59,19 @@ static void ide_tf_set_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 dma) | |||
69 | lba48 = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 2 : 0; | 59 | lba48 = (cmd->tf_flags & IDE_TFLAG_LBA48) ? 2 : 0; |
70 | write = (cmd->tf_flags & IDE_TFLAG_WRITE) ? 1 : 0; | 60 | write = (cmd->tf_flags & IDE_TFLAG_WRITE) ? 1 : 0; |
71 | 61 | ||
72 | if (dma) | 62 | if (dma) { |
63 | cmd->protocol = ATA_PROT_DMA; | ||
73 | index = 8; | 64 | index = 8; |
74 | else | 65 | } else { |
75 | index = drive->mult_count ? 0 : 4; | 66 | cmd->protocol = ATA_PROT_PIO; |
67 | if (drive->mult_count) { | ||
68 | cmd->tf_flags |= IDE_TFLAG_MULTI_PIO; | ||
69 | index = 0; | ||
70 | } else | ||
71 | index = 4; | ||
72 | } | ||
76 | 73 | ||
77 | cmd->tf.command = ide_rw_cmds[index + lba48 + write]; | 74 | cmd->tf.command = ide_rw_cmds[index + lba48 + write]; |
78 | |||
79 | if (dma) | ||
80 | index = 8; /* fixup index */ | ||
81 | |||
82 | cmd->data_phase = ide_data_phases[index / 2 + write]; | ||
83 | } | 75 | } |
84 | 76 | ||
85 | /* | 77 | /* |
@@ -401,9 +393,9 @@ static void idedisk_prepare_flush(struct request_queue *q, struct request *rq) | |||
401 | cmd->tf.command = ATA_CMD_FLUSH_EXT; | 393 | cmd->tf.command = ATA_CMD_FLUSH_EXT; |
402 | else | 394 | else |
403 | cmd->tf.command = ATA_CMD_FLUSH; | 395 | cmd->tf.command = ATA_CMD_FLUSH; |
404 | cmd->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE | | 396 | cmd->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE | |
405 | IDE_TFLAG_DYN; | 397 | IDE_TFLAG_DYN; |
406 | cmd->data_phase = TASKFILE_NO_DATA; | 398 | cmd->protocol = ATA_PROT_NODATA; |
407 | 399 | ||
408 | rq->cmd_type = REQ_TYPE_ATA_TASKFILE; | 400 | rq->cmd_type = REQ_TYPE_ATA_TASKFILE; |
409 | rq->cmd_flags |= REQ_SOFTBARRIER; | 401 | rq->cmd_flags |= REQ_SOFTBARRIER; |