libata.h revision 242f9dcb8ba6f68fcd217a119a7648a4f69290e9
11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * libata.h - helper library for ATA 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 2003-2004 Red Hat, Inc. All rights reserved. 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 2003-2004 Jeff Garzik 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is free software; you can redistribute it and/or modify 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * it under the terms of the GNU General Public License as published by 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the Free Software Foundation; either version 2, or (at your option) 11d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley * any later version. 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is distributed in the hope that it will be useful, 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * but WITHOUT ANY WARRANTY; without even the implied warranty of 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * GNU General Public License for more details. 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * You should have received a copy of the GNU General Public License 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * along with this program; see the file COPYING. If not, write to 20faead26d7a06605add627f29aee73ba654ce11f9James Bottomley * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 21c6132da1704be252ee6c923f47501083d835c238Jens Axboe * 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * libata documentation is available via 'make {ps|pdf}docs', 24beb40487508290f5d6565598c60a3f44261beef2Christoph Hellwig * as Documentation/DocBook/libata.* 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __LIBATA_H__ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __LIBATA_H__ 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DRV_NAME "libata" 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DRV_VERSION "3.00" /* must be exactly four chars */ 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct ata_scsi_args { 356391a11375de5e2bb1eb8481e54619761dc65d9fTobias Klauser struct ata_device *dev; 365972511b77809cb7c9ccdb79b825c54921c5c546Jens Axboe u16 *id; 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct scsi_cmnd *cmd; 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void (*done)(struct scsi_cmnd *); 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 40a8474ce23a73185dd2bae4c884b1716474032d31Jens Axboe 41e18b890bb0881bbab6f4f1a6cd20d9c60d66b003Christoph Lameterstatic inline int ata_is_builtin_hardreset(ata_reset_fn_t reset) 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds if (reset == sata_std_hardreset) 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return 1; 45d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley#ifdef CONFIG_ATA_SFF 46d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley if (reset == sata_sff_hardreset) 47d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley return 1; 48d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley#endif 4952c1da39534fb382c061de58b65f678ad74b59f5Adrian Bunk return 0; 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 52fd820f405574a30aacf9a859886e173d641f080bFUJITA Tomonori/* libata-core.c */ 53d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomleyenum { 54fd820f405574a30aacf9a859886e173d641f080bFUJITA Tomonori /* flags for ata_dev_read_id() */ 55d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley ATA_READID_POSTRESET = (1 << 0), /* reading ID after reset */ 56d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* selector for ata_down_xfermask_limit() */ 58d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley ATA_DNXFER_PIO = 0, /* speed down PIO */ 59d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley ATA_DNXFER_DMA = 1, /* speed down DMA */ 60fd820f405574a30aacf9a859886e173d641f080bFUJITA Tomonori ATA_DNXFER_40C = 2, /* apply 40c cable limit */ 61fd820f405574a30aacf9a859886e173d641f080bFUJITA Tomonori ATA_DNXFER_FORCE_PIO = 3, /* force PIO */ 62fd820f405574a30aacf9a859886e173d641f080bFUJITA Tomonori ATA_DNXFER_FORCE_PIO0 = 4, /* force PIO0 */ 63d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley 64d3f46f39b7092594b498abc12f0c73b0b9913bdeJames Bottomley ATA_DNXFER_QUIET = (1 << 31), 65a8474ce23a73185dd2bae4c884b1716474032d31Jens Axboe}; 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern unsigned int ata_print_id; 687027ad72a689797475973c6feb5f0b673382f779Martin K. Petersenextern struct workqueue_struct *ata_aux_wq; 696f9a35e2dafa0f855ab051c11bdbf739745ff6f5Boaz Harroshextern int atapi_passthru16; 70a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern int libata_fua; 71e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern int libata_noacpi; 72e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern int libata_allow_tpm; 73e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern void ata_force_cbl(struct ata_port *ap); 74e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern u64 ata_tf_to_lba(const struct ata_taskfile *tf); 75e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern u64 ata_tf_to_lba48(const struct ata_taskfile *tf); 76e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); 77e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, 78e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley u64 block, u32 n_block, unsigned int tf_flags, 79e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley unsigned int tag); 80e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern u64 ata_tf_read_block(struct ata_taskfile *tf, struct ata_device *dev); 81e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern void ata_dev_disable(struct ata_device *dev); 82e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern void ata_pio_queue_task(struct ata_port *ap, void *data, 83e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley unsigned long delay); 84e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern void ata_port_flush_task(struct ata_port *ap); 85e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomleyextern unsigned ata_exec_internal(struct ata_device *dev, 86e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley struct ata_taskfile *tf, const u8 *cdb, 87e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley int dma_dir, void *buf, unsigned int buflen, 884aff5e2333c9a1609662f2091f55c3f6fffdad36Jens Axboe unsigned long timeout); 89beb40487508290f5d6565598c60a3f44261beef2Christoph Hellwigextern unsigned ata_exec_internal_sg(struct ata_device *dev, 90e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley struct ata_taskfile *tf, const u8 *cdb, 91e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley int dma_dir, struct scatterlist *sg, 92e91442b635be776ea205fba233bdd5bc74b62bc3James Bottomley unsigned int n_elem, unsigned long timeout); 93a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern unsigned int ata_do_simple_cmd(struct ata_device *dev, u8 cmd); 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_wait_ready(struct ata_link *link, unsigned long deadline, 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int (*check_ready)(struct ata_link *link)); 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class, 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int flags, u16 *id); 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_dev_reread_id(struct ata_device *dev, unsigned int readid_flags); 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_dev_revalidate(struct ata_device *dev, unsigned int new_class, 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int readid_flags); 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_dev_configure(struct ata_device *dev); 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int sata_down_spd_limit(struct ata_link *link); 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel); 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_sg_clean(struct ata_queued_cmd *qc); 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_qc_free(struct ata_queued_cmd *qc); 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_qc_issue(struct ata_queued_cmd *qc); 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void __ata_qc_complete(struct ata_queued_cmd *qc); 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int atapi_check_dma(struct ata_queued_cmd *qc); 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void swap_buf_le16(u16 *buf, unsigned int buf_words); 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_dev_init(struct ata_device *dev); 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_link_init(struct ata_port *ap, struct ata_link *link, int pmp); 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int sata_link_init_spd(struct ata_link *link); 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_task_ioctl(struct scsi_device *scsidev, void __user *arg); 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_cmd_ioctl(struct scsi_device *scsidev, void __user *arg); 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern struct ata_port *ata_port_alloc(struct ata_host *host); 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_dev_enable_pm(struct ata_device *dev, enum link_pm policy); 117f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christieextern void ata_lpm_schedule(struct ata_port *ap, enum link_pm); 118a1bf9d1d9272708922e83e465104106131f6415fTejun Heo 119a1bf9d1d9272708922e83e465104106131f6415fTejun Heo/* libata-acpi.c */ 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef CONFIG_ATA_ACPI 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_acpi_associate_sata_port(struct ata_port *ap); 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_acpi_associate(struct ata_host *host); 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_acpi_dissociate(struct ata_host *host); 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_acpi_on_suspend(struct ata_port *ap); 125d8c37e7b9a619855e05d5d4e56c68f799b1f539cTejun Heoextern void ata_acpi_on_resume(struct ata_port *ap); 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_acpi_on_devcfg(struct ata_device *dev); 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_acpi_on_disable(struct ata_device *dev); 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_acpi_set_state(struct ata_port *ap, pm_message_t state); 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void ata_acpi_associate_sata_port(struct ata_port *ap) { } 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void ata_acpi_associate(struct ata_host *host) { } 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void ata_acpi_dissociate(struct ata_host *host) { } 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline int ata_acpi_on_suspend(struct ata_port *ap) { return 0; } 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void ata_acpi_on_resume(struct ata_port *ap) { } 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline int ata_acpi_on_devcfg(struct ata_device *dev) { return 0; } 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void ata_acpi_on_disable(struct ata_device *dev) { } 137f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christiestatic inline void ata_acpi_set_state(struct ata_port *ap, 138f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christie pm_message_t state) { } 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 140f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christie 141f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christie/* libata-scsi.c */ 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_scsi_add_hosts(struct ata_host *host, 143f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christie struct scsi_host_template *sht); 144f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christieextern void ata_scsi_scan_host(struct ata_port *ap, int sync); 145f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christieextern int ata_scsi_offline_dev(struct ata_device *dev); 146f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christieextern void ata_scsi_media_change_notify(struct ata_device *dev); 147f0c0a376d0fcd4c5579ecf5e95f88387cba85211Mike Christieextern void ata_scsi_hotplug(struct work_struct *work); 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_schedule_scsi_eh(struct Scsi_Host *shost); 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_scsi_dev_rescan(struct work_struct *work); 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int ata_bus_probe(struct ata_port *ap); 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* libata-eh.c */ 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern unsigned long ata_internal_cmd_timeout(struct ata_device *dev, u8 cmd); 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_internal_cmd_timed_out(struct ata_device *dev, u8 cmd); 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern enum blk_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd); 156a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern void ata_scsi_error(struct Scsi_Host *host); 157a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern void ata_port_wait_eh(struct ata_port *ap); 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_eh_fastdrain_timerfn(unsigned long arg); 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_qc_schedule_eh(struct ata_queued_cmd *qc); 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_eh_detach_dev(struct ata_device *dev); 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev, 162a1bf9d1d9272708922e83e465104106131f6415fTejun Heo unsigned int action); 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern void ata_eh_done(struct ata_link *link, struct ata_device *dev, 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int action); 165a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern void ata_eh_autopsy(struct ata_port *ap); 166a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern void ata_eh_report(struct ata_port *ap); 16759897dad98d63ac15e1e36fcc3a107c892b1826cJames Bottomleyextern int ata_eh_reset(struct ata_link *link, int classify, 168a1bf9d1d9272708922e83e465104106131f6415fTejun Heo ata_prereset_fn_t prereset, ata_reset_fn_t softreset, 169a1bf9d1d9272708922e83e465104106131f6415fTejun Heo ata_reset_fn_t hardreset, ata_postreset_fn_t postreset); 170a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern int ata_set_mode(struct ata_link *link, struct ata_device **r_failed_dev); 171a1bf9d1d9272708922e83e465104106131f6415fTejun Heoextern int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ata_reset_fn_t softreset, ata_reset_fn_t hardreset, 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ata_postreset_fn_t postreset, 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct ata_link **r_failed_disk); 175392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern void ata_eh_finish(struct ata_port *ap); 17633aa687db90dd8541bd5e9a762eebf880eaee767James Bottomley 177392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley/* libata-pmp.c */ 178392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#ifdef CONFIG_SATA_PMP 179392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern int sata_pmp_scr_read(struct ata_link *link, int reg, u32 *val); 180392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern int sata_pmp_scr_write(struct ata_link *link, int reg, u32 val); 181392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern int sata_pmp_attach(struct ata_device *dev); 182392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#else /* CONFIG_SATA_PMP */ 183392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleystatic inline int sata_pmp_scr_read(struct ata_link *link, int reg, u32 *val) 184392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley{ 18533aa687db90dd8541bd5e9a762eebf880eaee767James Bottomley return -EINVAL; 186f4f4e47e4af6b02dd1c425b931c65d0165356e33FUJITA Tomonori} 187392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley 18859c51591a0ac7568824f541f57de967e88adaa07Michael Opdenackerstatic inline int sata_pmp_scr_write(struct ata_link *link, int reg, u32 val) 189ea73a9f23906c374b697cd5b0d64f6dceced63deJames Bottomley{ 190eb44820c28bc9a042e1157b41c677018a8fdfc74Rob Landley return -EINVAL; 19133aa687db90dd8541bd5e9a762eebf880eaee767James Bottomley} 19233aa687db90dd8541bd5e9a762eebf880eaee767James Bottomley 193f4f4e47e4af6b02dd1c425b931c65d0165356e33FUJITA Tomonoristatic inline int sata_pmp_attach(struct ata_device *dev) 194f4f4e47e4af6b02dd1c425b931c65d0165356e33FUJITA Tomonori{ 195392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley return -EINVAL; 196392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley} 197392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#endif /* CONFIG_SATA_PMP */ 198392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley 199392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley/* libata-sff.c */ 200392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#ifdef CONFIG_ATA_SFF 201392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern void ata_dev_select(struct ata_port *ap, unsigned int device, 202392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley unsigned int wait, unsigned int can_sleep); 203392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern u8 ata_irq_on(struct ata_port *ap); 204392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomleyextern void ata_pio_task(struct work_struct *work); 205392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#endif /* CONFIG_ATA_SFF */ 206392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley 207392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley#endif /* __LIBATA_H__ */ 208392160335c798bbe94ab3aae6ea0c85d32b81bbcJames Bottomley