aboutsummaryrefslogtreecommitdiff
path: root/include/linux/ata.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-03-21 09:20:12 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-21 09:20:12 -0800
commitcbe037b46f564188045937e6006c5c1d6093618a (patch)
treea06d32fbe5c19fbd674ab3df05476743803c9615 /include/linux/ata.h
parentf0481730c827421cf1548bfd73c073c0f47f2907 (diff)
parentcd85f6e2f58282186ad720fc18482be228f0b972 (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev: (112 commits) [libata] sata_mv: fix irq port status usage [PATCH] libata: move IDENTIFY info printing from ata_dev_read_id() to ata_dev_configure() [PATCH] libata: use local *id instead of dev->id in ata_dev_configure() [PATCH] libata: check Word 88 validity in ata_id_xfer_mask() [PATCH] libata: fix class handling in ata_bus_probe() [PATCH] ahci: enable prefetching for PACKET commands libata: turn on ATAPI by default [PATCH] sata_sil24: lengthen softreset timeout [PATCH] sata_sil24: exit early from softreset if SStatus reports no device [PATCH] libata: fix missing classes[] initialization in ata_bus_probe() [PATCH] libata: kill unused xfer_mode functions [PATCH] libata: reimplement ata_set_mode() using xfer_mask helpers [PATCH] libata: use xfer_mask helpers in ata_dev_set_mode() [PATCH] libata: use ata_id_xfermask() in ata_dev_configure() [PATCH] libata: add xfer_mask handling functions [PATCH] libata: improve xfer mask constants and update ata_mode_string() [PATCH] libata: rename ATA_FLAG_FLUSH_PIO_TASK to ATA_FLAG_FLUSH_PORT_TASK [PATCH] libata: kill unused pio_task and packet_task [PATCH] libata: convert pio_task and packet_task to port_task [PATCH] libata: implement port_task ...
Diffstat (limited to 'include/linux/ata.h')
-rw-r--r--include/linux/ata.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 94f77cce27f..b02a16c435e 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -267,6 +267,16 @@ struct ata_taskfile {
((u64) (id)[(n) + 1] << 16) | \
((u64) (id)[(n) + 0]) )
+static inline unsigned int ata_id_major_version(const u16 *id)
+{
+ unsigned int mver;
+
+ for (mver = 14; mver >= 1; mver--)
+ if (id[ATA_ID_MAJOR_VER] & (1 << mver))
+ break;
+ return mver;
+}
+
static inline int ata_id_current_chs_valid(const u16 *id)
{
/* For ATA-1 devices, if the INITIALIZE DEVICE PARAMETERS command
@@ -302,4 +312,16 @@ static inline int ata_ok(u8 status)
== ATA_DRDY);
}
+static inline int lba_28_ok(u64 block, u32 n_block)
+{
+ /* check the ending block number */
+ return ((block + n_block - 1) < ((u64)1 << 28)) && (n_block <= 256);
+}
+
+static inline int lba_48_ok(u64 block, u32 n_block)
+{
+ /* check the ending block number */
+ return ((block + n_block - 1) < ((u64)1 << 48)) && (n_block <= 65536);
+}
+
#endif /* __LINUX_ATA_H__ */