1. 06 3月, 2007 1 次提交
    • B
      pata_pdc202xx_old: fix data corruption and other problems · 63ed7101
      Bartlomiej Zolnierkiewicz 提交于
      Fix wrong "port" calculations in pdc202xx_{configure_piomode,set_dmamode}()
      They were broken for all configurations except one (master device on primary
      channel, no other devices) and as a result device settings + PIO/DMA timings
      were being programmed into the wrong PCI registers.  This could result in
      a large variety of problems including data corruption, hangs etc. (depending
      on devices used and your luck :-).
      
        ap->port_no   ap->devno   used PCI registers   correct PCI registers
                  0           0            0x60-0x62               0x60-0x62
                  0           1            0x62-0x64               0x64-0x66
                  1           0            0x64-0x66               0x68-0x6a
                  1           1            0x66-0x68               0x6c-0x6e
      
      Also forward port recent fixes from drivers/ide pdc202xx_old driver:
      
      * fix XFER_MW_DMA0 timings (they were overclocked, use the official ones)
      
      * fix bitmasks for clearing bits of register B:
      
        - when programming DMA mode bit 0x10 of register B was cleared which
          resulted in overclocked PIO timing setting (iff PIO0 was used)
      
        - when programming PIO mode bits 0x18 weren't cleared so suboptimal
          timings were used for PIO1-4 if PIO0 was previously set (bit 0x10)
          and for PIO0/3/4 if PIO1/2 was previously set (bit 0x08)
      
      and finally bump driver version.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      63ed7101
  2. 03 3月, 2007 1 次提交
  3. 26 2月, 2007 1 次提交
  4. 10 2月, 2007 4 次提交
    • A
      libata: add another IRQ calls (libata drivers) · 246ce3b6
      Akira Iguchi 提交于
      This patch is against each libata driver.
      
      Two IRQ calls are added in ata_port_operations.
      - irq_on() is used to enable interrupts.
      - irq_ack() is used to acknowledge a device interrupt.
      
      In most drivers, ata_irq_on() and ata_irq_ack() are used for
      irq_on and irq_ack respectively.
      
      In some drivers (ex: ahci, sata_sil24) which cannot use them
      as is, ata_dummy_irq_on() and ata_dummy_irq_ack() are used.
      Signed-off-by: NKou Ishizaki <kou.ishizaki@toshiba.co.jp>
      Signed-off-by: NAkira Iguchi <akira2.iguchi@toshiba.co.jp>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      246ce3b6
    • T
      libata: convert to iomap · 0d5ff566
      Tejun Heo 提交于
      Convert libata core layer and LLDs to use iomap.
      
      * managed iomap is used.  Pointer to pcim_iomap_table() is cached at
        host->iomap and used through out LLDs.  This basically replaces
        host->mmio_base.
      
      * if possible, pcim_iomap_regions() is used
      
      Most iomap operation conversions are taken from Jeff Garzik
      <jgarzik@pobox.com>'s iomap branch.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      0d5ff566
    • T
      libata: update libata LLDs to use devres · 24dc5f33
      Tejun Heo 提交于
      Update libata LLDs to use devres.  Core layer is already converted to
      support managed LLDs.  This patch simplifies initialization and fixes
      many resource related bugs in init failure and detach path.  For
      example, all converted drivers now handle ata_device_add() failure
      gracefully without excessive resource rollback code.
      
      As most resources are released automatically on driver detach, many
      drivers don't need or can do with much simpler ->{port|host}_stop().
      In general, stop callbacks are need iff port or host needs to be given
      commands to shut it down.  Note that freezing is enough in many cases
      and ports are automatically frozen before being detached.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      24dc5f33
    • T
      libata: kill qc->nsect and cursect · 726f0785
      Tejun Heo 提交于
      libata used two separate sets of variables to record request size and
      current offset for ATA and ATAPI.  This is confusing and fragile.
      This patch replaces qc->nsect/cursect with qc->nbytes/curbytes and
      kills them.  Also, ata_pio_sector() is updated to use bytes for
      qc->cursg_ofs instead of sectors.  The field used to be used in bytes
      for ATAPI and in sectors for ATA.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      726f0785
  5. 03 12月, 2006 1 次提交
  6. 02 12月, 2006 2 次提交
  7. 29 11月, 2006 1 次提交
  8. 29 9月, 2006 1 次提交
  9. 31 8月, 2006 1 次提交
  10. 30 8月, 2006 1 次提交