2005-04-17 02:20:36 +04:00
/*
2005-08-29 04:18:39 +04:00
* libata . h - helper library for ATA
*
* Copyright 2003 - 2004 Red Hat , Inc . All rights reserved .
* Copyright 2003 - 2004 Jeff Garzik
*
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 , or ( at your option )
* any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; see the file COPYING . If not , write to
* the Free Software Foundation , 675 Mass Ave , Cambridge , MA 0213 9 , USA .
*
*
* libata documentation is available via ' make { ps | pdf } docs ' ,
* as Documentation / DocBook / libata . *
*
2005-04-17 02:20:36 +04:00
*/
# ifndef __LIBATA_H__
# define __LIBATA_H__
# define DRV_NAME "libata"
2005-11-16 19:06:59 +03:00
# define DRV_VERSION "1.20" /* must be exactly four chars */
2005-04-17 02:20:36 +04:00
struct ata_scsi_args {
2006-01-06 11:56:18 +03:00
struct ata_port * ap ;
struct ata_device * dev ;
2005-04-17 02:20:36 +04:00
u16 * id ;
struct scsi_cmnd * cmd ;
void ( * done ) ( struct scsi_cmnd * ) ;
} ;
/* libata-core.c */
2005-08-30 11:37:42 +04:00
extern int atapi_enabled ;
2006-02-28 06:31:19 +03:00
extern int libata_fua ;
2005-04-17 02:20:36 +04:00
extern struct ata_queued_cmd * ata_qc_new_init ( struct ata_port * ap ,
struct ata_device * dev ) ;
2006-01-06 11:56:18 +03:00
extern int ata_rwcmd_protocol ( struct ata_queued_cmd * qc ) ;
2006-03-05 09:29:09 +03:00
extern void ata_port_flush_task ( struct ata_port * ap ) ;
2005-04-17 02:20:36 +04:00
extern void ata_qc_free ( struct ata_queued_cmd * qc ) ;
2006-03-31 15:41:11 +04:00
extern void ata_qc_issue ( struct ata_queued_cmd * qc ) ;
2005-04-17 02:20:36 +04:00
extern int ata_check_atapi_dma ( struct ata_queued_cmd * qc ) ;
extern void ata_dev_select ( struct ata_port * ap , unsigned int device ,
unsigned int wait , unsigned int can_sleep ) ;
extern void swap_buf_le16 ( u16 * buf , unsigned int buf_words ) ;
2005-05-12 23:45:22 +04:00
extern int ata_task_ioctl ( struct scsi_device * scsidev , void __user * arg ) ;
extern int ata_cmd_ioctl ( struct scsi_device * scsidev , void __user * arg ) ;
2005-04-17 02:20:36 +04:00
/* libata-scsi.c */
2006-03-18 12:40:14 +03:00
extern struct scsi_transport_template ata_scsi_transport_template ;
2005-10-03 23:55:19 +04:00
extern void ata_scsi_scan_host ( struct ata_port * ap ) ;
2005-04-17 02:20:36 +04:00
extern int ata_scsi_error ( struct Scsi_Host * host ) ;
extern unsigned int ata_scsiop_inq_std ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_inq_00 ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_inq_80 ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_inq_83 ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_noop ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_sync_cache ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_mode_sense ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_read_cap ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern unsigned int ata_scsiop_report_luns ( struct ata_scsi_args * args , u8 * rbuf ,
unsigned int buflen ) ;
extern void ata_scsi_badcmd ( struct scsi_cmnd * cmd ,
void ( * done ) ( struct scsi_cmnd * ) ,
u8 asc , u8 ascq ) ;
2005-10-09 16:55:41 +04:00
extern void ata_scsi_set_sense ( struct scsi_cmnd * cmd ,
u8 sk , u8 asc , u8 ascq ) ;
2005-07-31 21:13:24 +04:00
extern void ata_scsi_rbuf_fill ( struct ata_scsi_args * args ,
2005-04-17 02:20:36 +04:00
unsigned int ( * actor ) ( struct ata_scsi_args * args ,
u8 * rbuf , unsigned int buflen ) ) ;
# endif /* __LIBATA_H__ */