ide: ide_id_to_hd_driveid() -> ata_id_to_hd_driveid()
PATCH 2/3 ide: ide_id_to_hd_driveid() -> ata_id_to_hd_driveid()
Rename ide_id_to_hd_driveid() to ata_id_to_hd_driveid() and move it to <linux/ata.h>.
Cc Jeff Garzik <[email protected]>
Signed-off-by Bartlomiej Zolnierkiewicz <[email protected]>
---
I just thought that somebody may want to fix libata's HDIO_GET_IDENTITY implementation
drivers/ide/ide.c | 22 +--------------------- include/linux/ata.h | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 21 deletions(-)
drivers/ide/ide.c +1 -21
@@ -509,26 +509,6 @@ static int generic_drive_reset(ide_drivereturn ret; } -static inline void ide_id_to_hd_driveid (u16 *id) -{ -#ifdef __BIG_ENDIAN -/* accessed in struct hd_driveid as 8-bit values */ - id[ATA_ID_MAX_MULTSECT ] =__cpu_to_le16 (id[ATA_ID_MAX_MULTSECT ]); - id[ATA_ID_CAPABILITY ] =__cpu_to_le16 (id[ATA_ID_CAPABILITY ]); - id[ATA_ID_OLD_PIO_MODES ] =__cpu_to_le16 (id[ATA_ID_OLD_PIO_MODES ]); - id[ATA_ID_OLD_DMA_MODES ] =__cpu_to_le16 (id[ATA_ID_OLD_DMA_MODES ]); - id[ATA_ID_MULTSECT ] =__cpu_to_le16 (id[ATA_ID_MULTSECT ]); - -/* as 32-bit values */ - *(u32 *)&id[ATA_ID_LBA_CAPACITY ] =ata_id_u32 (id,ATA_ID_LBA_CAPACITY ); - *(u32 *)&id[ATA_ID_SPG ] =ata_id_u32 (id,ATA_ID_SPG ); - -/* as 64-bit value */ - *(u64 *)&id[ATA_ID_LBA_CAPACITY_2 ] = -ata_id_u64 (id,ATA_ID_LBA_CAPACITY_2 ); -#endif -} -static int ide_get_identity_ioctl (ide_drive_t *drive,unsigned int cmd,unsigned long arg) {
@@ -548,7 +528,7 @@ static int ide_get_identity_ioctl(ide_dr }memcpy (id, drive->id, size); -ide_id_to_hd_driveid (id); +ata_id_to_hd_driveid (id);if (copy_to_user ((void __user *)arg, id, size)) rc = -EFAULT ;
include/linux/ata.h +21 -0
@@ -30,6 +30,7 @@#define __LINUX_ATA_H__#include <linux/types.h> +#include <asm/byteorder.h> /* defines only for the constants which don't work well as enums */ #define ATA_DMA_BOUNDARY 0xffffUL
@@ -766,6 +767,26 @@ static inline int atapi_id_dmadir(constreturn ata_id_major_version (dev_id) >=7 && (dev_id[62 ] &0x8000 ); } +static inline void ata_id_to_hd_driveid (u16 *id) +{ +#ifdef __BIG_ENDIAN +/* accessed in struct hd_driveid as 8-bit values */ + id[ATA_ID_MAX_MULTSECT ] =__cpu_to_le16 (id[ATA_ID_MAX_MULTSECT ]); + id[ATA_ID_CAPABILITY ] =__cpu_to_le16 (id[ATA_ID_CAPABILITY ]); + id[ATA_ID_OLD_PIO_MODES ] =__cpu_to_le16 (id[ATA_ID_OLD_PIO_MODES ]); + id[ATA_ID_OLD_DMA_MODES ] =__cpu_to_le16 (id[ATA_ID_OLD_DMA_MODES ]); + id[ATA_ID_MULTSECT ] =__cpu_to_le16 (id[ATA_ID_MULTSECT ]); + +/* as 32-bit values */ + *(u32 *)&id[ATA_ID_LBA_CAPACITY ] =ata_id_u32 (id,ATA_ID_LBA_CAPACITY ); + *(u32 *)&id[ATA_ID_SPG ] =ata_id_u32 (id,ATA_ID_SPG ); + +/* as 64-bit value */ + *(u64 *)&id[ATA_ID_LBA_CAPACITY_2 ] = +ata_id_u64 (id,ATA_ID_LBA_CAPACITY_2 ); +#endif +} +static inline int is_multi_taskfile (struct ata_taskfile *tf) { return (tf->command == ATA_CMD_READ_MULTI) ||