• Bartlomiej Zolnierkiewicz's avatar
    icside: fix ->speedproc to return on unsupported modes (take 5) · f44ae58a
    Bartlomiej Zolnierkiewicz authored
    * All other implementations of ->speedproc return zero on success
      and non-zero on failure.  Currently it doesn't matter for icside host
      driver and isn't a bug per se since:
    
      - ide_set_xfer_rate() return value is ignored by all IDE core users
    
      - icside doesn't (yet!) use ide_tune_dma() in icside_dma_check()
    
      but sooner or later we will need to fix anyway - so lets do it now.
    
    * icside_set_speed() happily accepts unsupported transfer modes which
      results in drive->drive_data being set to the maximum value (480)
      and drive->current_speed being set to the unsupported transfer mode.
    
      Fix it.
    
    v2:
    * The initial version of the patch was broken because it didn't take into
      the account (the different from usual) return values of icside_set_speed()
      (Noticed by Russell).
    
    v3:
    * Remove no longer needed initialization/checking of cycle_time
      (Noticed by Sergei).
    
    * No need to set drive->drive_data if DMA is not going to be used
      (Noticed by Sergei).
    
    * Remove incorrect setting of drive->current_speed
      (Noticed by Sergei).
    
    * Move ide_config_drive_speed() at the end of icside_set_speed().
    
    v4:
    * If DMA mode is not found in icside_dma_check() then just return "-1" and
      don't call icside_set_speed() (v3 got it wrong and "1" was returned instead).
    
    v5:
    * Return "-1"/"0" in icside_set_speed() instead of icside_dma_check() return
      value (just like it was before this patch).
    
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    f44ae58a
icside.c 18.4 KB