1. 17 Feb, 2007 8 commits
    • Sergei Shtylyov's avatar
      sl82c105: DMA support fixes · ea266ba1
      Sergei Shtylyov authored
      Fix a number of issues with the DMA support code:
      
      - driver claims support for all SW/MW DMA modes while supporting only MWDMA2;
      
      - ide_dma_check() method tries to enable DMA on the "known good" drives which
        don't support MWDMA2;
      
      - ide_dma_on() method upon failure to set drive to MWDMA2 re-tunes already
        tuned PIO mode and calls ide_dma_off() method instead of returning error;
      
      - ide_dma_off() method sets drive->current_speed while it doesn't actually
        change (only the PIO timings are re-loaded into the chip's registers);
      
      - init_hwif() method forcibly sets/resets both "drive DMA capable" bits while
        this is properly handled by ide_dma_{on,off}() methods being called later...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      ea266ba1
    • Sergei Shtylyov's avatar
      pdc202xx_old: fix PIO mode setup · fed21641
      Sergei Shtylyov authored
      Fix the driver's tuneproc() method to always set the PIO mode requested and not
      pick the best possible one, rename it to pdc202xx_tune_drive(), and change the
      calls to it accordingly; remove the preceding comment which has nothing to do
      with the code.
      
      Sergei Shtylyov wrote:
      >     The tuneproc() method should take arg 255 for auto-selecting the best PIO
      > mode, not 5 as it did here + this driver's method always auto-selected instead
      > of setting the mode it's been told to -- issue typical to drivers/ide/...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      fed21641
    • Sergei Shtylyov's avatar
      siimage: PIO1/2 taskfile transfer overclocking fix · 075cb655
      Sergei Shtylyov authored
      Fix two typos found by SiI680A documentation check.  They caused the taskfile
      transfer overclocking:
      
      - in PIO mode 1 as 0x2283 must be used for both data and taskfile transfers;
      
      - in PIO mode 2 as data and taskfile timings are swapped when writing to the
        MMIO regs.
      
      Fix coding style and trailing whitespace in enclosing statements while at it...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      
       drivers/ide/pci/siimage.c |   59 ++++++++++++++++++++++------------------------
       1 file changed, 29 insertions(+), 30 deletions(-)
      075cb655
    • Albert Lee's avatar
      ide: remove clearing bmdma status from cdrom_decode_status() (rev #4) · 6e6cd4c4
      Albert Lee authored
      patch 2/2:
        Remove clearing bmdma status from cdrom_decode_status() since ATA devices
        might need it as well.
      
        (http://lkml.org/lkml/2006/12/4/201 and http://lkml.org/lkml/2006/11/15/94)
      Signed-off-by: default avatarAlbert Lee <albertcc@tw.ibm.com>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: "Adam W. Hawks" <awhawks@us.ibm.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      6e6cd4c4
    • Albert Lee's avatar
      ide: clear bmdma status in ide_intr() for ICHx controllers (revised #4) · f0dd8712
      Albert Lee authored
      patch 1/2 (revised):
      - Fix drive->waiting_for_dma to work with CDB-intr devices.
      - Do the dma status clearing in ide_intr() and add a new
        hwif->ide_dma_clear_irq for Intel ICHx controllers.
      
      Revised per Alan, Sergei and Bart's advice.
      
      Patch against 2.6.20-rc6. Tested ok on my ICH4 and pdc20275 adapters.
      Please review/apply, thanks.
      Signed-off-by: default avatarAlbert Lee <albertcc@tw.ibm.com>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: "Adam W. Hawks" <awhawks@us.ibm.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      f0dd8712
    • Alan Cox's avatar
      ide-floppy: Fix unformatted media crash · fdb77da4
      Alan Cox authored
      A ZIP or similar with unformatted media will cause crashes when attempts
      are made to read/write it in some cases. This is because bs_factor is
      zero and we divide by it causing an oops.
      
      As the size of a non-accessible/non-existant media is really a bit of a
      zen question it doesn't matter if non-existant media is 512 bytes per
      sector or zero. Setting it to 1 causes us to generate 512 bytes/sector
      accesses and error properly.
      
      Based on a fix found lurking in an ancient bugzilla entry since about 2004 (ugghhh)
      Signed-off-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      fdb77da4
    • Bartlomiej Zolnierkiewicz's avatar
      atiixp/jmicron/triflex: fix PIO fallback · 39baf8a7
      Bartlomiej Zolnierkiewicz authored
      * atiixp: if DMA can't be used atiixp_config_drive_for_dma() should return 0,
        atiixp_dma_check() will tune the correct PIO mode anyway
      
      * jmicron: if DMA can't be used config_chipset_for_dma() should return 0,
        micron_config_drive_for_dma() will tune the correct PIO mode anyway
      
        config_jmicron_chipset_for_pio(drive, !speed) doesn't program
        device transfer mode for speed != 0 (only wastes some CPU cycles
        on ide_get_best_pio_mode() call) so remove it
      
      * triflex: if DMA can't be used triflex_config_drive_for_dma() should return 0,
        triflex_config_drive_xfer_rate() will tune correct PIO mode anyway
      
      Above changes also fix (theoretical) issue when ->speedproc fails to set
      device transfer mode (i.e. when ide_config_drive_speed() fails to program it)
      but one of DMA transfer modes is already enabled on the device by the BIOS.
      In such scenario ide_dma_enable() will incorrectly return true statement
      and ->ide_dma_check will try to enable DMA on the device.
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      39baf8a7
    • Bartlomiej Zolnierkiewicz's avatar
      hpt34x: hpt34x_tune_chipset() (->speedproc) fix · 296d9bcc
      Bartlomiej Zolnierkiewicz authored
      * remember to clear reg2 bits for the current device before setting mode
      * remove no longer needed hpt34x_clear_chipset()
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      296d9bcc
  2. 16 Feb, 2007 32 commits