• Bartlomiej Zolnierkiewicz's avatar
    siimage: PIO mode setup fixes (take 2) · 328dcbb6
    Bartlomiej Zolnierkiewicz authored
    * Add sil_tuneproc() wrapper for siimage_tuneproc() which also sets
      PIO mode on the device.
    
    * Add missing ide_get_best_pio_mode() call to sil_tuneproc() so
      "pio" == 255 (autotune) is handled correctly (previously PIO0 was used)
      and "pio" values > 4 && < 255 are filtered to PIO4 (instead of PIO0).
    
    * Add code limiting maximum PIO mode according to the pair device capabilities
      to sil_tuneproc().
    
    * Convert users of config_siimage_chipset_for_pio() to use sil_tune_pio() and
      sil_tuneproc().  This fixes PIO fallback in siimage_config_drive_for_dma() to
      use max PIO mode available instead of PIO4 (config_siimage_chipset_for_pio()
      used wrong arguments for ide_get_best_pio_mode() and as a results always
      tried to set PIO4).
    
    * Remove no longer needed siimage_taskfile_timing()
      and config_siimage_chipset_for_pio().
    
    * Enable ->autotune unconditionally and remove PIO tuning for UDMA/MDMA modes
      from siimage_speedproc()
    
    * Bump driver version.
    
    v2:
    * Fix issues noticed by Sergei:
      - correct pair device check
      - trim only taskfile PIO to the slowest of the master/slave
      - enable ->autotune unconditionally and remove PIO tuning for UDMA/MDMA modes
        from siimage_speedproc()
      - add TODO item for IORDY bugs
      - minor cleanups
    Reviewed-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    328dcbb6
siimage.c 25.3 KB