ata: drop unused ata_id_is_lba_capacity_ok()
This function was renamed from lba_capacity_is_ok()() and moved from drivers/ide/ to <linux/ata.h> but it never got used by libata, thus it became useless after drivers/ide/ removal... Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
This commit is contained in:
Родитель
8d857540f5
Коммит
dc2e107e2d
|
@ -1016,56 +1016,6 @@ static inline bool atapi_id_dmadir(const u16 *dev_id)
|
||||||
return ata_id_major_version(dev_id) >= 7 && (dev_id[62] & 0x8000);
|
return ata_id_major_version(dev_id) >= 7 && (dev_id[62] & 0x8000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* ata_id_is_lba_capacity_ok() performs a sanity check on
|
|
||||||
* the claimed LBA capacity value for the device.
|
|
||||||
*
|
|
||||||
* Returns 1 if LBA capacity looks sensible, 0 otherwise.
|
|
||||||
*
|
|
||||||
* It is called only once for each device.
|
|
||||||
*/
|
|
||||||
static inline bool ata_id_is_lba_capacity_ok(u16 *id)
|
|
||||||
{
|
|
||||||
unsigned long lba_sects, chs_sects, head, tail;
|
|
||||||
|
|
||||||
/* No non-LBA info .. so valid! */
|
|
||||||
if (id[ATA_ID_CYLS] == 0)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
lba_sects = ata_id_u32(id, ATA_ID_LBA_CAPACITY);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The ATA spec tells large drives to return
|
|
||||||
* C/H/S = 16383/16/63 independent of their size.
|
|
||||||
* Some drives can be jumpered to use 15 heads instead of 16.
|
|
||||||
* Some drives can be jumpered to use 4092 cyls instead of 16383.
|
|
||||||
*/
|
|
||||||
if ((id[ATA_ID_CYLS] == 16383 ||
|
|
||||||
(id[ATA_ID_CYLS] == 4092 && id[ATA_ID_CUR_CYLS] == 16383)) &&
|
|
||||||
id[ATA_ID_SECTORS] == 63 &&
|
|
||||||
(id[ATA_ID_HEADS] == 15 || id[ATA_ID_HEADS] == 16) &&
|
|
||||||
(lba_sects >= 16383 * 63 * id[ATA_ID_HEADS]))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
chs_sects = id[ATA_ID_CYLS] * id[ATA_ID_HEADS] * id[ATA_ID_SECTORS];
|
|
||||||
|
|
||||||
/* perform a rough sanity check on lba_sects: within 10% is OK */
|
|
||||||
if (lba_sects - chs_sects < chs_sects/10)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
/* some drives have the word order reversed */
|
|
||||||
head = (lba_sects >> 16) & 0xffff;
|
|
||||||
tail = lba_sects & 0xffff;
|
|
||||||
lba_sects = head | (tail << 16);
|
|
||||||
|
|
||||||
if (lba_sects - chs_sects < chs_sects/10) {
|
|
||||||
*(__le32 *)&id[ATA_ID_LBA_CAPACITY] = __cpu_to_le32(lba_sects);
|
|
||||||
return true; /* LBA capacity is (now) good */
|
|
||||||
}
|
|
||||||
|
|
||||||
return false; /* LBA capacity value may be bad */
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool ata_ok(u8 status)
|
static inline bool ata_ok(u8 status)
|
||||||
{
|
{
|
||||||
return ((status & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ | ATA_ERR))
|
return ((status & (ATA_BUSY | ATA_DRDY | ATA_DF | ATA_DRQ | ATA_ERR))
|
||||||
|
|
Загрузка…
Ссылка в новой задаче