diff options
author | Tejun Heo <htejun@gmail.com> | 2006-03-24 06:07:49 +0100 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-03-24 15:28:33 +0100 |
commit | c0489e4efcad44aeb16c55760daf3b487183e9f0 (patch) | |
tree | b5d58afdea53e2502b4191ebe6b0ea68a44dd33a | |
parent | [libata] Move some bmdma-specific code to libata-bmdma.c (diff) | |
download | linux-c0489e4efcad44aeb16c55760daf3b487183e9f0.tar.xz linux-c0489e4efcad44aeb16c55760daf3b487183e9f0.zip |
[PATCH] libata: implement ata_unpack_xfermask()
Implement ata_unpack_xfermask().
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/scsi/libata-core.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index f3c115b55681..1514cb5e35f7 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c @@ -252,6 +252,29 @@ static unsigned int ata_pack_xfermask(unsigned int pio_mask, ((udma_mask << ATA_SHIFT_UDMA) & ATA_MASK_UDMA); } +/** + * ata_unpack_xfermask - Unpack xfer_mask into pio, mwdma and udma masks + * @xfer_mask: xfer_mask to unpack + * @pio_mask: resulting pio_mask + * @mwdma_mask: resulting mwdma_mask + * @udma_mask: resulting udma_mask + * + * Unpack @xfer_mask into @pio_mask, @mwdma_mask and @udma_mask. + * Any NULL distination masks will be ignored. + */ +static void ata_unpack_xfermask(unsigned int xfer_mask, + unsigned int *pio_mask, + unsigned int *mwdma_mask, + unsigned int *udma_mask) +{ + if (pio_mask) + *pio_mask = (xfer_mask & ATA_MASK_PIO) >> ATA_SHIFT_PIO; + if (mwdma_mask) + *mwdma_mask = (xfer_mask & ATA_MASK_MWDMA) >> ATA_SHIFT_MWDMA; + if (udma_mask) + *udma_mask = (xfer_mask & ATA_MASK_UDMA) >> ATA_SHIFT_UDMA; +} + static const struct ata_xfer_ent { unsigned int shift, bits; u8 base; |