19 Jan, 2010

5 commits


04 Dec, 2009

1 commit


29 Oct, 2009

1 commit

  • CMD646 corrupts data on concurrent transfers on both channels when IDE SSD is
    connected to one of the channels.

    Setup that demonstrates this hardware bug: Ultra 5, onboard CMD646, rev 3.
    /dev/hda is 8GB Seagate ST38410A in MWDMA2
    /dev/hdd is 32GB SSD SiliconHardDisk in MWDMA2

    - When reading /dev/hdd (for example with dd or fsck), reads from /dev/hda
    are corrupted, there are twiddled single bits 1->0 and some full 32-bit
    words corrupted, sometimes commands fail (which switches /dev/hda to
    PIO mode but the corruptions happen even in PIO).
    - Reads from /dev/hdd don't seem to be corrupted (i.e. fsck passes fine).
    - When I connected normal rotating harddisk to /dev/hdd, there was no
    corruption, so the corruption is something specific to SSD.
    - I tried the same setup on a PCI card with CMD649 and saw no corruption.

    This patch serializes the operation for CMD646 and 643 (I didn't test
    CMD643 but it may have the same hw bug too because it's earlier design).
    CMD649 is good. I don't know anything about CMD 648.

    Signed-off-by: Mikulas Patocka
    Tested-by: Frans Pop
    Signed-off-by: David S. Miller

    Mikulas Patocka
     

22 Jun, 2009

1 commit


16 Jun, 2009

3 commits

  • Change ide_drive_t 'drive_data' field from 'unsigned int' type to 'void *'
    type, allowing a wider range of values/types to be stored in this field.

    Added 'ide_get_drivedata' and 'ide_set_drivedata' helpers to get and set
    the 'drive_data' field.

    Fixed all host drivers to maintain coherency with the change in the
    'drive_data' field type.

    Signed-off-by: Joao Ramos
    [bart: fix qd65xx build, cast to 'unsigned long', minor Coding Style fixups]
    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Joao Ramos
     
  • Convert the driver's two dma_test_irq() methods into test_irq() methods. The
    driver will now use the standard dma_test_irq() method implementation which
    allows to remove 'cmd54x_dma_ops' and 'cmd648_dma_ops' that become identical
    to 'sff_dma_ops'...

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Sergei Shtylyov
     
  • Convert the driver's two dma_end() methods into clear_irq() methods -- the
    driver will now use the standard dma_end() method implementation, ide_dma_end().

    Signed-off-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Sergei Shtylyov
     

01 Apr, 2009

3 commits

  • Set/clear drive->waiting_for_dma flag in the core code
    instead of in ->dma_setup and ->dma_end methods.

    There should be no functional changes caused by this patch.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Move ide_destroy_dmatable() call out from ->dma_end method to
    {ide_pc,cdrom_newpc,ide_dma}_intr(), ide_dma_timeout_retry()
    and sgiioc4_resetproc().

    This causes minor/safe behavior changes w.r.t.:
    * cmd64x.c::cmd64{8,x}_dma_end()
    * cs5536.c::cs5536_dma_end()
    * icside.c::icside_dma_end()
    * it821x.c::it821x_dma_end()
    * scc_pata.c::__scc_dma_end()
    * sl82c105.c::sl82c105_dma_end()
    * tx4939ide.c::tx4939ide_dma_end()

    v2:
    * Fix build for CONFIG_BLK_DEV_IDEDMA=n (reported by Randy Dunlap).

    Cc: Randy Dunlap
    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • All custom ->dma_timeout implementations call the generic one thus it is
    possible to have only an optional method for resetting DMA engine instead:

    * Add ->dma_clear method and convert hpt366, pdc202xx_old and sl82c105
    host drivers to use it.

    * Always use ide_dma_timeout() in ide_dma_timeout_retry() and remove
    ->dma_timeout method.

    * Make ide_dma_timeout() static.

    There should be no functional changes caused by this patch.

    Acked-by: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

27 Mar, 2009

1 commit

  • * Rename dma_timer_expiry() to ide_dma_sff_timer_expiry() and export it.

    * Add ->dma_timer_expiry method and use it to set hwif->expiry for
    ATA_PROT_DMA protocol in do_rw_taskfile().

    * Initialize ->dma_timer_expiry to ide_dma_sff_timer_expiry() for SFF hosts.

    * Move setting hwif->expiry from ide_execute_command() to its users and drop
    'expiry' argument.

    * Use ide_execute_command() instead of ->dma_exec_cmd in do_rw_taskfile().

    * Remove ->dma_exec_cmd method and its implementations.

    * Unexport ide_execute_command() and ide_dma_intr().

    v2:
    * Fix CONFIG_BLK_DEV_IDEDMA=n build (noticed by Randy Dunlap).

    * Fix *dma_expiry naming (suggested by Sergei Shtylyov).

    There should be no functional changes caused by this patch.

    Cc: Randy Dunlap
    Cc: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

25 Mar, 2009

1 commit


07 Jan, 2009

3 commits


30 Dec, 2008

1 commit


22 Oct, 2008

1 commit