Commit a5987e0a authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik

libata: make ata_tf_to_lba[48]() generic

ata_tf_to_lba[48]() currently return LBA in tf + 1 for
ata_read_native_max_address().  Make them return LBA and make it
global so that it can be used to read LBA off TF for other purposes.
ata_read_native_max_address() now adds 1 itself.
Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 06993d22
...@@ -1211,7 +1211,7 @@ static u64 ata_id_n_sectors(const u16 *id) ...@@ -1211,7 +1211,7 @@ static u64 ata_id_n_sectors(const u16 *id)
} }
} }
static u64 ata_tf_to_lba48(struct ata_taskfile *tf) u64 ata_tf_to_lba48(const struct ata_taskfile *tf)
{ {
u64 sectors = 0; u64 sectors = 0;
...@@ -1222,10 +1222,10 @@ static u64 ata_tf_to_lba48(struct ata_taskfile *tf) ...@@ -1222,10 +1222,10 @@ static u64 ata_tf_to_lba48(struct ata_taskfile *tf)
sectors |= (tf->lbam & 0xff) << 8; sectors |= (tf->lbam & 0xff) << 8;
sectors |= (tf->lbal & 0xff); sectors |= (tf->lbal & 0xff);
return ++sectors; return sectors;
} }
static u64 ata_tf_to_lba(struct ata_taskfile *tf) u64 ata_tf_to_lba(const struct ata_taskfile *tf)
{ {
u64 sectors = 0; u64 sectors = 0;
...@@ -1234,7 +1234,7 @@ static u64 ata_tf_to_lba(struct ata_taskfile *tf) ...@@ -1234,7 +1234,7 @@ static u64 ata_tf_to_lba(struct ata_taskfile *tf)
sectors |= (tf->lbam & 0xff) << 8; sectors |= (tf->lbam & 0xff) << 8;
sectors |= (tf->lbal & 0xff); sectors |= (tf->lbal & 0xff);
return ++sectors; return sectors;
} }
/** /**
...@@ -1279,9 +1279,9 @@ static int ata_read_native_max_address(struct ata_device *dev, u64 *max_sectors) ...@@ -1279,9 +1279,9 @@ static int ata_read_native_max_address(struct ata_device *dev, u64 *max_sectors)
} }
if (lba48) if (lba48)
*max_sectors = ata_tf_to_lba48(&tf); *max_sectors = ata_tf_to_lba48(&tf) + 1;
else else
*max_sectors = ata_tf_to_lba(&tf); *max_sectors = ata_tf_to_lba(&tf) + 1;
if (dev->horkage & ATA_HORKAGE_HPA_SIZE) if (dev->horkage & ATA_HORKAGE_HPA_SIZE)
(*max_sectors)--; (*max_sectors)--;
return 0; return 0;
......
...@@ -61,6 +61,8 @@ extern int libata_fua; ...@@ -61,6 +61,8 @@ extern int libata_fua;
extern int libata_noacpi; extern int libata_noacpi;
extern int libata_allow_tpm; extern int libata_allow_tpm;
extern void ata_force_cbl(struct ata_port *ap); extern void ata_force_cbl(struct ata_port *ap);
extern u64 ata_tf_to_lba(const struct ata_taskfile *tf);
extern u64 ata_tf_to_lba48(const struct ata_taskfile *tf);
extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev);
extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
u64 block, u32 n_block, unsigned int tf_flags, u64 block, u32 n_block, unsigned int tf_flags,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment