]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Merge branch 'upstream-2.6.17'
authorJeff Garzik <jgarzik@pobox.com>
Fri, 27 Jan 2006 07:45:00 +0000 (02:45 -0500)
committerJeff Garzik <jgarzik@pobox.com>
Fri, 27 Jan 2006 07:45:00 +0000 (02:45 -0500)
1  2 
drivers/scsi/libata-core.c
include/linux/libata.h

index c67c7a49c8bab2b9fcdb40823db9891afc38a85e,147e1461062df7d3b6ad9d3bc3e1e9b0c723f286..6daba4e2c3fd16b2efae04fd702a2ff48839c6be
@@@ -3598,8 -3447,8 +3631,8 @@@ fsm_start
        }
  
        if (timeout)
-               queue_delayed_work(ata_wq, &ap->pio_task, timeout);
+               ata_queue_delayed_pio_task(ap, timeout);
 -      else if (!qc_completed)
 +      else if (has_next)
                goto fsm_start;
  }
  
@@@ -3948,61 -3764,32 +3981,62 @@@ unsigned int ata_qc_issue_prot(struct a
                ap->ops->tf_load(ap, &qc->tf);   /* load tf registers */
                ap->ops->bmdma_setup(qc);           /* set up bmdma */
                ap->ops->bmdma_start(qc);           /* initiate bmdma */
 +              ap->hsm_task_state = HSM_ST_LAST;
                break;
  
 -      case ATA_PROT_PIO: /* load tf registers, initiate polling pio */
 -              ata_qc_set_polling(qc);
 -              ata_tf_to_host(ap, &qc->tf);
 -              ap->hsm_task_state = HSM_ST;
 -              ata_queue_pio_task(ap);
 -              break;
 +      case ATA_PROT_PIO:
 +              if (qc->tf.flags & ATA_TFLAG_POLLING)
 +                      ata_qc_set_polling(qc);
  
 -      case ATA_PROT_ATAPI:
 -              ata_qc_set_polling(qc);
                ata_tf_to_host(ap, &qc->tf);
 -              ata_queue_packet_task(ap);
 +
 +              if (qc->tf.flags & ATA_TFLAG_WRITE) {
 +                      /* PIO data out protocol */
 +                      ap->hsm_task_state = HSM_ST_FIRST;
-                       queue_work(ata_wq, &ap->pio_task);
++                      ata_queue_pio_task(ap);
 +
 +                      /* always send first data block using
 +                       * the ata_pio_task() codepath.
 +                       */
 +              } else {
 +                      /* PIO data in protocol */
 +                      ap->hsm_task_state = HSM_ST;
 +
 +                      if (qc->tf.flags & ATA_TFLAG_POLLING)
-                               queue_work(ata_wq, &ap->pio_task);
++                              ata_queue_pio_task(ap);
 +
 +                      /* if polling, ata_pio_task() handles the rest.
 +                       * otherwise, interrupt handler takes over from here.
 +                       */
 +              }
 +
                break;
  
 +      case ATA_PROT_ATAPI:
        case ATA_PROT_ATAPI_NODATA:
 -              ap->flags |= ATA_FLAG_NOINTR;
 +              if (qc->tf.flags & ATA_TFLAG_POLLING)
 +                      ata_qc_set_polling(qc);
 +
                ata_tf_to_host(ap, &qc->tf);
 -              ata_queue_packet_task(ap);
++
 +              ap->hsm_task_state = HSM_ST_FIRST;
 +
 +              /* send cdb by polling if no cdb interrupt */
 +              if ((!(qc->dev->flags & ATA_DFLAG_CDB_INTR)) ||
 +                  (qc->tf.flags & ATA_TFLAG_POLLING))
-                       queue_work(ata_wq, &ap->pio_task);
++                      ata_queue_packet_task(ap);
                break;
  
        case ATA_PROT_ATAPI_DMA:
 -              ap->flags |= ATA_FLAG_NOINTR;
 +              assert(!(qc->tf.flags & ATA_TFLAG_POLLING));
 +
                ap->ops->tf_load(ap, &qc->tf);   /* load tf registers */
                ap->ops->bmdma_setup(qc);           /* set up bmdma */
 -              ata_queue_packet_task(ap);
 +              ap->hsm_task_state = HSM_ST_FIRST;
 +
 +              /* send cdb by polling if no cdb interrupt */
 +              if (!(qc->dev->flags & ATA_DFLAG_CDB_INTR))
-                       queue_work(ata_wq, &ap->pio_task);
++                      ata_queue_packet_task(ap);
                break;
  
        default:
index 88f0a27cc7c352b3ee2a5dfe5e1485c347f1b5c1,a84d1c3a5429dcb18dbd80d7e4b8ab0c176d2328..f8a04ef5c7c3295768c858e2f71b08fb1993c4be
@@@ -149,12 -148,12 +149,12 @@@ enum 
        ATA_FLAG_PORT_DISABLED  = (1 << 2), /* port is disabled, ignore it */
        ATA_FLAG_SATA           = (1 << 3),
        ATA_FLAG_NO_LEGACY      = (1 << 4), /* no legacy mode check */
-       ATA_FLAG_SRST           = (1 << 5), /* use ATA SRST, not E.D.D. */
+       ATA_FLAG_SRST           = (1 << 5), /* (obsolete) use ATA SRST, not E.D.D. */
        ATA_FLAG_MMIO           = (1 << 6), /* use MMIO, not PIO */
-       ATA_FLAG_SATA_RESET     = (1 << 7), /* use COMRESET */
+       ATA_FLAG_SATA_RESET     = (1 << 7), /* (obsolete) use COMRESET */
        ATA_FLAG_PIO_DMA        = (1 << 8), /* PIO cmds via DMA */
 -      ATA_FLAG_NOINTR         = (1 << 9), /* FIXME: Remove this once
 -                                           * proper HSM is in place. */
 +      ATA_FLAG_PIO_POLLING    = (1 << 9), /* use polling PIO if LLD
 +                                           * doesn't handle PIO interrupts */
        ATA_FLAG_DEBUGMSG       = (1 << 10),
        ATA_FLAG_NO_ATAPI       = (1 << 11), /* No ATAPI support */