diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2005-10-05 17:09:16 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-10-05 17:09:16 -0400 |
commit | a939c9631527053aa38aa8795a6f7203c7f20b69 (patch) | |
tree | ef7aabee7439909153ef05f2651d8f456dd39ce1 /drivers/scsi/libata-core.c | |
parent | a15dbeb4772626a015337dea06da67095aec3862 (diff) |
libata: move atapi_request_sense() to libata-scsi module
No content changes, just moving code around.
Diffstat (limited to 'drivers/scsi/libata-core.c')
-rw-r--r-- | drivers/scsi/libata-core.c | 49 |
1 files changed, 1 insertions, 48 deletions
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index ceffaef37d17..f731bbdd4236 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -71,7 +71,6 @@ static int fgb(u32 bitmap); | |||
71 | static int ata_choose_xfer_mode(struct ata_port *ap, | 71 | static int ata_choose_xfer_mode(struct ata_port *ap, |
72 | u8 *xfer_mode_out, | 72 | u8 *xfer_mode_out, |
73 | unsigned int *xfer_shift_out); | 73 | unsigned int *xfer_shift_out); |
74 | static int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat); | ||
75 | static void __ata_qc_complete(struct ata_queued_cmd *qc); | 74 | static void __ata_qc_complete(struct ata_queued_cmd *qc); |
76 | 75 | ||
77 | static unsigned int ata_unique_id = 1; | 76 | static unsigned int ata_unique_id = 1; |
@@ -3015,52 +3014,6 @@ fsm_start: | |||
3015 | goto fsm_start; | 3014 | goto fsm_start; |
3016 | } | 3015 | } |
3017 | 3016 | ||
3018 | static void atapi_request_sense(struct ata_port *ap, struct ata_device *dev, | ||
3019 | struct scsi_cmnd *cmd) | ||
3020 | { | ||
3021 | DECLARE_COMPLETION(wait); | ||
3022 | struct ata_queued_cmd *qc; | ||
3023 | unsigned long flags; | ||
3024 | int rc; | ||
3025 | |||
3026 | DPRINTK("ATAPI request sense\n"); | ||
3027 | |||
3028 | qc = ata_qc_new_init(ap, dev); | ||
3029 | BUG_ON(qc == NULL); | ||
3030 | |||
3031 | /* FIXME: is this needed? */ | ||
3032 | memset(cmd->sense_buffer, 0, sizeof(cmd->sense_buffer)); | ||
3033 | |||
3034 | ata_sg_init_one(qc, cmd->sense_buffer, sizeof(cmd->sense_buffer)); | ||
3035 | qc->dma_dir = DMA_FROM_DEVICE; | ||
3036 | |||
3037 | memset(&qc->cdb, 0, ap->cdb_len); | ||
3038 | qc->cdb[0] = REQUEST_SENSE; | ||
3039 | qc->cdb[4] = SCSI_SENSE_BUFFERSIZE; | ||
3040 | |||
3041 | qc->tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE; | ||
3042 | qc->tf.command = ATA_CMD_PACKET; | ||
3043 | |||
3044 | qc->tf.protocol = ATA_PROT_ATAPI; | ||
3045 | qc->tf.lbam = (8 * 1024) & 0xff; | ||
3046 | qc->tf.lbah = (8 * 1024) >> 8; | ||
3047 | qc->nbytes = SCSI_SENSE_BUFFERSIZE; | ||
3048 | |||
3049 | qc->waiting = &wait; | ||
3050 | qc->complete_fn = ata_qc_complete_noop; | ||
3051 | |||
3052 | spin_lock_irqsave(&ap->host_set->lock, flags); | ||
3053 | rc = ata_qc_issue(qc); | ||
3054 | spin_unlock_irqrestore(&ap->host_set->lock, flags); | ||
3055 | |||
3056 | if (rc) | ||
3057 | ata_port_disable(ap); | ||
3058 | else | ||
3059 | wait_for_completion(&wait); | ||
3060 | |||
3061 | DPRINTK("EXIT\n"); | ||
3062 | } | ||
3063 | |||
3064 | /** | 3017 | /** |
3065 | * ata_qc_timeout - Handle timeout of queued command | 3018 | * ata_qc_timeout - Handle timeout of queued command |
3066 | * @qc: Command that timed out | 3019 | * @qc: Command that timed out |
@@ -3254,7 +3207,7 @@ struct ata_queued_cmd *ata_qc_new_init(struct ata_port *ap, | |||
3254 | return qc; | 3207 | return qc; |
3255 | } | 3208 | } |
3256 | 3209 | ||
3257 | static int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat) | 3210 | int ata_qc_complete_noop(struct ata_queued_cmd *qc, u8 drv_stat) |
3258 | { | 3211 | { |
3259 | return 0; | 3212 | return 0; |
3260 | } | 3213 | } |