Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 21891
b: refs/heads/master
c: 1da7b0d
h: refs/heads/master
i:
  21889: fb82a51
  21887: fafa134
v: v3
  • Loading branch information
Tejun Heo authored and Jeff Garzik committed Mar 12, 2006
1 parent 03becee commit 1f48922
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 32 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2e755f68ee23b03484fde18d978f910cc5479cb8
refs/heads/master: 1da7b0d01b20bf21f3263d8d2f17fa49a214d773
44 changes: 17 additions & 27 deletions trunk/drivers/scsi/libata-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,14 @@ int ata_rwcmd_protocol(struct ata_queued_cmd *qc)
}

static const char * const xfer_mode_str[] = {
"PIO0",
"PIO1",
"PIO2",
"PIO3",
"PIO4",
"MWDMA0",
"MWDMA1",
"MWDMA2",
"UDMA/16",
"UDMA/25",
"UDMA/33",
Expand All @@ -240,49 +248,31 @@ static const char * const xfer_mode_str[] = {
"UDMA/100",
"UDMA/133",
"UDMA7",
"MWDMA0",
"MWDMA1",
"MWDMA2",
"PIO0",
"PIO1",
"PIO2",
"PIO3",
"PIO4",
};

/**
* ata_udma_string - convert UDMA bit offset to string
* @mask: mask of bits supported; only highest bit counts.
* ata_mode_string - convert xfer_mask to string
* @xfer_mask: mask of bits supported; only highest bit counts.
*
* Determine string which represents the highest speed
* (highest bit in @udma_mask).
* (highest bit in @modemask).
*
* LOCKING:
* None.
*
* RETURNS:
* Constant C string representing highest speed listed in
* @udma_mask, or the constant C string "<n/a>".
* @mode_mask, or the constant C string "<n/a>".
*/

static const char *ata_mode_string(unsigned int mask)
static const char *ata_mode_string(unsigned int xfer_mask)
{
int i;

for (i = 7; i >= 0; i--)
if (mask & (1 << i))
goto out;
for (i = ATA_SHIFT_MWDMA + 2; i >= ATA_SHIFT_MWDMA; i--)
if (mask & (1 << i))
goto out;
for (i = ATA_SHIFT_PIO + 4; i >= ATA_SHIFT_PIO; i--)
if (mask & (1 << i))
goto out;
int highbit;

highbit = fls(xfer_mask) - 1;
if (highbit >= 0 && highbit < ARRAY_SIZE(xfer_mode_str))
return xfer_mode_str[highbit];
return "<n/a>";

out:
return xfer_mode_str[i];
}

/**
Expand Down
16 changes: 12 additions & 4 deletions trunk/include/linux/libata.h
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,19 @@ enum {
PORT_DISABLED = 2,

/* encoding various smaller bitmaps into a single
* unsigned long bitmap
* unsigned int bitmap
*/
ATA_SHIFT_UDMA = 0,
ATA_SHIFT_MWDMA = 8,
ATA_SHIFT_PIO = 11,
ATA_BITS_PIO = 5,
ATA_BITS_MWDMA = 3,
ATA_BITS_UDMA = 8,

ATA_SHIFT_PIO = 0,
ATA_SHIFT_MWDMA = ATA_SHIFT_PIO + ATA_BITS_PIO,
ATA_SHIFT_UDMA = ATA_SHIFT_MWDMA + ATA_BITS_MWDMA,

ATA_MASK_PIO = ((1 << ATA_BITS_PIO) - 1) << ATA_SHIFT_PIO,
ATA_MASK_MWDMA = ((1 << ATA_BITS_MWDMA) - 1) << ATA_SHIFT_MWDMA,
ATA_MASK_UDMA = ((1 << ATA_BITS_UDMA) - 1) << ATA_SHIFT_UDMA,

/* size of buffer to pad xfers ending on unaligned boundaries */
ATA_DMA_PAD_SZ = 4,
Expand Down

0 comments on commit 1f48922

Please sign in to comment.