1. 19 Jul, 2007 3 commits
    • Bartlomiej Zolnierkiewicz's avatar
      serverworks: fix DMA · 1c164acf
      Bartlomiej Zolnierkiewicz authored
      
      
      The driver used to depend on BIOS settings for deciding whether it is OK
      to use DMA.  However it seems that BIOS doesn't always handle all cases
      correctly so just let IDE core to decide about this.  It should be a safe
      thing to do now, after the driver went through heavy bugfixing.
      
      Thanks for bugreport and testing the patch goes out to Sven Niedner.
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      1c164acf
    • Bartlomiej Zolnierkiewicz's avatar
      serverworks: always tune PIO · 1880a8d7
      Bartlomiej Zolnierkiewicz authored
      
      
      * Always set ->autotune so PIO gets correctly auto-tuned (previously
        ->autotune was only set when ->dma_base wasn't available, however
        ->ide_dma_check()/->speedproc() was always trying to tune PIO when
        tuning DMA).
      
      * Move code responsible for programming chipset for PIO mode from
        svwks_tune_chipset() to svwks_tune_pio().  Don't tune PIO when tuning
        DMA (this is no longer needed since ->autotune is always set now).
      
      * Handle PIO modes early in svwks_tune_chipset() so DMA configuration
        registers don't get cleared when programming PIO mode.
      
      * Bump driver version.
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      1880a8d7
    • Bartlomiej Zolnierkiewicz's avatar
      ide: add ide_pci_device_t.host_flags (take 2) · a5d8c5c8
      Bartlomiej Zolnierkiewicz authored
      
      
      * Rename ide_pci_device_t.flags to ide_pci_device_t.host_flags
        and IDEPCI_FLAG_ISA_PORTS flag to IDE_HFLAG_ISA_PORTS.
      
      * Add IDE_HFLAG_SINGLE flag for single channel devices.
      
      * Convert core code and all IDE PCI drivers to use IDE_HFLAG_SINGLE
        and remove no longer needed ide_pci_device_t.channels field.
      
      v2:
      * Fix issues noticed by Sergei:
        - correct code alignment in scc_pata.c
        - s/IDE_HFLAG_SINGLE/~IDE_HFLAG_SINGLE/ in serverworks.c
      
      Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      a5d8c5c8
  2. 11 Jul, 2007 1 commit
    • Auke Kok's avatar
      PCI: Change all drivers to use pci_device->revision · 44c10138
      Auke Kok authored
      
      
      Instead of all drivers reading pci config space to get the revision
      ID, they can now use the pci_device->revision member.
      
      This exposes some issues where drivers where reading a word or a dword
      for the revision number, and adding useless error-handling around the
      read. Some drivers even just read it for no purpose of all.
      
      In devices where the revision ID is being copied over and used in what
      appears to be the equivalent of hotpath, I have left the copy code
      and the cached copy as not to influence the driver's performance.
      
      Compile tested with make all{yes,mod}config on x86_64 and i386.
      
      Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
      Acked-by: default avatarDave Jones <davej@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      44c10138
  3. 09 Jul, 2007 2 commits
    • Bartlomiej Zolnierkiewicz's avatar
      ide: add short cables support · 49521f97
      Bartlomiej Zolnierkiewicz authored
      
      
      This patch allows users to override both host and device side cable detection
      with "ideX=ata66" kernel parameter.  Thanks to this it should be now possible
      to use UDMA > 2 modes on systems (laptops mainly) which use short 40-pin cable
      instead of 80-pin one.
      
      Next patches add automatic detection of some systems using short cables.
      
      Changes:
      
      * Rename hwif->udma_four to hwif->cbl and make it u8.
      
      * Convert all existing users accordingly (use ATA_CBL_* defines while at it).  
      
      * Add ATA_CBL_PATA40_SHORT support to ide-iops.c:eighty_ninty_three().
      
      * Use ATA_CBL_PATA40_SHORT for "ideX=ata66" kernel parameter.
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Reviewed-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      49521f97
    • Bartlomiej Zolnierkiewicz's avatar
      serverworks: always tune CSB6 · b740d884
      Bartlomiej Zolnierkiewicz authored
      
      
      Switch the driver to always program DMA/PIO timings and set device transfer
      mode instead of trusting BIOS on CSB6 controllers (libata pata_serverworks.c
      driver is also doing things this way and there were no problems reported so
      far).  While doing conversion I noticed that the old code had many issues:
      
      * the code was assuming that hwif->dma_status is always valid
        (which obviously isn't true if hwif->dma_base == NULL)
      
      * value of "(ultra_timing >> (4*unit)) & ~(0xF0)" expression wasn't checked
        to fit into udma_modes[5]
      
      * code validating DMA timings didn't validate corresponding PIO timings
      
      * extra CSB5 PIO register wasn't validated et all
      
      * hwif->ide_dma_off_quietly() is always called before ide_set_dma() (which in
        turn calls hwif->speedproc() method - svwks_tune_chipset() in this case)
        so the code depending on DMA capable bit of DMA status to be set was never
        executed (=> the code was never validating DMA timings despite actually
        enabling DMA if the PIO timings were OK!)
      
      * on resume driver dependend entirely on BIOS to restore timings and set
        transfer mode on the device
      
      While at it:
      
      There is no need to read PIO/MWDMA timings now so don't do it.
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      Acked-by: default avatarAlan Cox <alan@lxorguk.ukuu.org.uk>
      b740d884
  4. 08 Jun, 2007 2 commits
  5. 23 May, 2007 2 commits
    • Andrew Morton's avatar
      ide serverworks warning fixes · 585a2858
      Andrew Morton authored
      
      
      gcc-4.3:
      
      drivers/ide/pci/serverworks.c: In function 'svwks_tune_chipset':
      drivers/ide/pci/serverworks.c:176: warning: overflow in implicit constant conversion
      drivers/ide/pci/serverworks.c:190: warning: overflow in implicit constant conversion
      drivers/ide/pci/serverworks.c:211: warning: overflow in implicit constant conversion
      drivers/ide/pci/serverworks.c:212: warning: overflow in implicit constant conversion
      
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      585a2858
    • Alan Cox's avatar
      ide/pci/serverworks.c: Fix corruption/timeouts with MegaIDE · 2074a106
      Alan Cox authored
      
      
      It turns out from customer reports to Red Hat and some PCI dumps that the
      MegaIDE in RAID mode doesn't provide the drive tuning data that the
      serverworks driver expects but sometimes does provide something that
      fools the code.
      
      For the RAID class case skip the oem setup and don't trust the BIOS data.
      We then tune from scratch and this sorts it out. (This has been confirmed
      on an afflicted IBM blade)
      
      [libata serverworks.c never trusts the BIOS in the first place so is
      accidentally immune]
      
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2074a106
  6. 15 May, 2007 2 commits
    • Bartlomiej Zolnierkiewicz's avatar
      ide: use ide_tune_dma() part #2 · bd203b57
      Bartlomiej Zolnierkiewicz authored
      
      
      Use ide_tune_dma() in ide-cris/it821x/pdc202xx_old/serverworks drivers.
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      bd203b57
    • Bartlomiej Zolnierkiewicz's avatar
      serverworks: PIO mode setup fixes · 9445de76
      Bartlomiej Zolnierkiewicz authored
      
      
      * limit max PIO mode to PIO4, this driver doesn't support PIO5 and attempt
        to program PIO5 by svwks_tune_chipset() could result in incorrect PIO
        timings being programmed and possibly the data corruption (it seems that
        the minimum possible values were used but I lack the datasheets to be sure)
      
      * select best PIO mode in svwks_tune_drive() and not in svwks_tune_chipset()
        when doing PIO autotuning (pio == 255)
      
      * don't try to tune PIO in config_chipset_for_dma() as ide_dma_enable() could
        return 1 if DMA was previously enabled (svwks_config_drive_xfer_rate()
        takes care of PIO tuning if no suitable DMA mode is found)
      
      * remove config_chipset_for_pio() and use svwks_tune_drive() instead,
        config_chipset_for_pio() contained numerous bugs when selecting PIO mode
        (luckily it was only used for devices limited to PIO by capabilities/BIOS):
      
        - it didn't check for validity of id->eide_pio_modes and id->eide_pio_iordy
          before using them
      
        - it tried to found out maximum PIO mode basing on minimum IORDY cycle time
          (moreover wrong cycle times were used for PIO0/1/5)
      
        - it was overriding PIO blacklist and conservative PIO "downgrade" done
          by ide_get_best_pio_mode()
      
        - if the max drive PIO was PIO5 then XFER_PIO_0/XFER_PIO_SLOW was selected
          (XFER_PIO_SLOW is not supported by svwks_tune_chipset() so the result
           was the same as if using XFER_PIO_5 => wrong PIO timings were set)
      
        - it was overriding drive->current_speed
      
      * bump driver version
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      9445de76
  7. 09 May, 2007 1 commit
    • Bartlomiej Zolnierkiewicz's avatar
      ide: rework the code for selecting the best DMA transfer mode (v3) · 2d5eaa6d
      Bartlomiej Zolnierkiewicz authored
      
      
      Depends on the "ide: fix UDMA/MWDMA/SWDMA masks" patch.
      
      * add ide_hwif_t.udma_filter hook for filtering UDMA mask
        (use it in alim15x3, hpt366, siimage and serverworks drivers)
      * add ide_max_dma_mode() for finding best DMA mode for the device
        (loosely based on some older libata-core.c code)
      * convert ide_dma_speed() users to use ide_max_dma_mode()
      * make ide_rate_filter() take "ide_drive_t *drive" as an argument instead
        of "u8 mode" and teach it to how to use UDMA mask to do filtering
      * use ide_rate_filter() in hpt366 driver
      * remove no longer needed ide_dma_speed() and *_ratemask()
      * unexport eighty_ninty_three()
      
      v2:
      * rename ->filter_udma_mask to ->udma_filter
        [ Suggested by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      
      v3:
      * updated for scc_pata driver (fixes XFER_UDMA_6 filtering for user-space
        originated transfer mode change requests when 100MHz clock is used)
      
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2d5eaa6d
  8. 16 Feb, 2007 5 commits
  9. 27 Jan, 2007 1 commit
  10. 01 Oct, 2006 1 commit
  11. 11 Sep, 2006 1 commit
  12. 30 Jun, 2006 1 commit
  13. 28 Jun, 2006 1 commit
  14. 08 Jan, 2006 1 commit
  15. 18 Aug, 2005 1 commit
  16. 27 Jun, 2005 1 commit
  17. 16 Apr, 2005 1 commit
    • Linus Torvalds's avatar
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds authored
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4