Skip to contentSkip to conversation

libata atapi work #2

PATCH In review Jeff Garzik 2 participants 3 messages May 14, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 libata atapi work #2

# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/05/13 21:15:42-04:00 [email protected]
# [libata] use new ->bmdma_{start,setup} method to properly support ATAPI
#

drivers/scsi/libata-core.c +9 -2
diff -Nru a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c
@@ -2445,7 +2445,7 @@
 
 	case ATA_PROT_DMA:
 		ap->ops->tf_load(ap, &qc->tf);	 /* load tf registers */
-		ap->ops->bmdma_setup(qc);	    /* initiate bmdma */
+		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
 		ap->ops->bmdma_start(qc);	    /* initiate bmdma */
 		break;
 
@@ -2457,6 +2457,13 @@
 		queue_work(ata_wq, &ap->pio_task);
 		break;
 
+	case ATA_PROT_ATAPI:
+	case ATA_PROT_ATAPI_DMA:
+		ap->ops->tf_load(ap, &qc->tf);	 /* load tf registers */
+		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
+		queue_work(ata_wq, &ap->packet_task);
+		break;
+
 	default:
 		WARN_ON(1);
 		return -1;
@@ -2843,7 +2850,7 @@
 
 	/* if we are DMA'ing, irq handler takes over from here */
 	if (qc->tf.protocol == ATA_PROT_ATAPI_DMA) {
-		/* FIXME: start DMA here */
+		ap->ops->bmdma_start(qc);	    /* initiate bmdma */
 	} else {
 		ap->pio_task_state = PIO_ST;
 		queue_work(ata_wq, &ap->pio_task);
#1 lore raw

Jeff, is this intentional?

@@ -2457,6 +2457,13 @@
queue_work(ata_wq, &ap->pio_task); break;

+ case ATA_PROT_ATAPI:
+ case ATA_PROT_ATAPI_DMA:
+ ap->ops->tf_load(ap, &qc->tf); /* load tf registers */
+ ap->ops->bmdma_setup(qc); /* set up bmdma */
+ queue_work(ata_wq, &ap->packet_task);
+ break;
+
default:
WARN_ON(1);
return -1;

#2 lore raw

drivers/scsi/libata-core.c line 2465

Quoted 12 lines · Bartlomiej Zolnierkiewicz

Jeff, is this intentional?

drivers/scsi/libata-core.c +6 -0
@@ -2457,6 +2457,13 @@
 		queue_work(ata_wq, &ap->pio_task);
 		break;
 
+	case ATA_PROT_ATAPI:
+	case ATA_PROT_ATAPI_DMA:
+		ap->ops->tf_load(ap, &qc->tf);	 /* load tf registers */
+		ap->ops->bmdma_setup(qc);	    /* set up bmdma */
+		queue_work(ata_wq, &ap->packet_task);
+		break;

yeah, caught and fixed that...

Jeff