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: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
06993d2237
commit
a5987e0a1b
2 changed files with 8 additions and 6 deletions
|
@ -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)
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
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,
|
||||||
|
|
Loading…
Reference in a new issue