• Bartlomiej Zolnierkiewicz's avatar
    it821x: PIO mode setup fixes · 0e9b4e53
    Bartlomiej Zolnierkiewicz authored
    * limit max PIO mode to PIO4, this driver doesn't support PIO5 and attempt
      to setup PIO5 by it821x_tuneproc() could result in incorrect PIO timings
      + incorrect base clock being set for controller in the passthrough mode
    
    * move code limiting max PIO according to the pair device capabilities from
      config_it821x_chipset_for_pio() to it821x_tuneproc() so the check is also
      applied for mode change requests coming through ->tuneproc and ->speedproc
      interfaces
    
    * set device speed in it821x_tuneproc()
    
    * in it821x_tune_chipset() call it821x_tuneproc() also if the controller is
      in the smart mode (so the check for pair device max PIO is done)
    
    * rename it821x_tuneproc() to it821x_tune_pio(), then add it821x_tuneproc()
      wrapper which does the max PIO mode check;  it worked by the pure luck
      previously, pio[4] and pio_want[4] arrays were used with index == 255
      so random PIO timings and base clock were set for the controller in the
      passthrough mode, thankfully PIO timings and base clock were corrected
      later by config_it821x_chipset_for_pio() call (but it was not called for
      PIO-only devices during resume and for user requested PIO autotuning)
    
    * remove config_it821x_chipset_for_pio() call from config_chipset_for_dma()
      as the driver sets ->autotune to 1 and ->tuneproc does the proper job now
    
    * convert the last user of config_it821x_chipset_for_pio() to use
      it821x_tuneproc(drive, 255) and remove no longer needed function
    
    While at it:
    
    * fix few comments
    
    * bump driver version
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    0e9b4e53
it821x.c 21.9 KB