13 Oct, 2007

1 commit

  • * Convert {ide_hwif_t,ide_pci_device_t}->host_flag to be u16.

    * Add IDE_HFLAG_POST_SET_MODE host flag to indicate the need to program
    the host for the transfer mode after programming the device. Set it
    in au1xxx-ide, amd74xx, cs5530, cs5535, pdc202xx_new, sc1200, pmac
    and via82cxxx host drivers.

    * Add IDE_HFLAG_NO_SET_MODE host flag to indicate the need to completely
    skip programming of host/device for the transfer mode ("smart" hosts).
    Set it in it821x host driver and check it in ide_tune_dma().

    * Add ide_set_pio_mode()/ide_set_dma_mode() helpers and convert all
    direct ->set_pio_mode/->speedproc users to use these helpers.

    * Move ide_config_drive_speed() calls from ->set_pio_mode/->speedproc
    methods to callers.

    * Rename ->speedproc method to ->set_dma_mode, make it void and update
    all implementations accordingly.

    * Update ide_set_xfer_rate() comments.

    * Unexport ide_config_drive_speed().

    v2:
    * Fix issues noticed by Sergei:
    - export ide_set_dma_mode() instead of moving ->set_pio_mode abuse wrt
    to setting DMA modes from sc1200_set_pio_mode() to do_special()
    - check IDE_HFLAG_NO_SET_MODE in ide_tune_dma()
    - check for (hwif->set_pio_mode) == NULL in ide_set_pio_mode()
    - check for (hwif->set_dma_mode) == NULL in ide_set_dma_mode()
    - return -1 from ide_set_{pio,dma}_mode() if ->set_{pio,dma}_mode == NULL
    - don't set ->set_{pio,dma}_mode on it821x in "smart" mode
    - fix build problem in pmac.c
    - minor fixes in au1xxx-ide.c/cs5530.c/siimage.c
    - improve patch description

    Changes in behavior caused by this patch:
    - HDIO_SET_PIO_MODE ioctl would now return -ENOSYS for attempts to change
    PIO mode if it821x controller is in "smart" mode
    - removal of two debugging printk-s (from cs5530.c and sc1200.c)
    - transfer modes 0x00-0x07 passed from user space may be programmed twice on
    the device (not really an issue since 0x00 is not supported correctly by
    any host driver ATM, 0x01 is not supported at all and 0x02-0x07 are invalid)

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

    Bartlomiej Zolnierkiewicz
     

12 Oct, 2007

5 commits

  • Use ->set_pio_mode method to program PIO modes in ide_set_xfer_rate()
    (the only place which used ->speedproc to program PIO modes) and remove
    handling of PIO modes from all ->speedproc implementations.

    v2:
    * Fix pmac_ide_tune_chipset() comment.

    There should be no functionality changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

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

    Bartlomiej Zolnierkiewicz
     
  • * Add IDE_HFLAG_ABUSE_{PREFETCH,FAST_DEVSEL,DMA_MODES} flags
    and set them in ht6560, cmd640, cmd64x and sc1200 host drivers.

    * Add set_pio_mode_abuse() for checking if host driver has a non-standard
    ->tuneproc() implementation and use it in do_special().

    * Add ide_set_pio() for setting PIO mode (it uses hwif->pio_mask to find
    the maximum PIO mode supported by the host), also add ide_set_max_pio()
    wrapper for ide_set_pio() to use for auto-tuning. Convert users of
    ->tuneproc to use ide_set{_max}_pio() where possible. This leaves only
    do_special(), set_using_pio(), ide_hwif_restore() and ide_set_pio() as
    a direct users of ->tuneproc.

    * Remove no longer needed ide_get_best_pio_mode() calls and printk-s
    reporting PIO mode selected from ->tuneproc implementations.

    * Rename ->tuneproc hook to ->set_pio_mode and make 'pio' argument const.

    * Remove stale comment from ide_config_drive_speed().

    v2:
    * Fix "ata_" prefix (Noticed by Jeff).

    v3:
    * Minor cleanups/fixups per Sergei's suggestions.

    v4:
    * Fix compile problem in drivers/ide/pci/cmd640.c
    (Noticed by Andrew Morton).

    * Improve some ->set_pio_mode comments.

    Reviewed-by: Sergei Shtylyov
    Cc: Jeff Garzik
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Move ide_rate_filter() calls from host drivers to IDE core.

    * Make ide_rate_filter() static.

    * Make 'speed' argument of ->speedproc const.

    v2:
    * Fix it8213_tune_chipset() comment.

    There should be no functionality changes caused by this patch.

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

    Bartlomiej Zolnierkiewicz
     
  • * Add sis5513_ata133_udma_filter() for chipset_family >= ATA_133,
    use it to filter UDMA6 mode if ATA133 bit is disabled.

    * Remove no longer needed UDMA6 limiting logic from sis5513_tune_chipset().

    * Bump driver version.

    There should be no functionality changes caused by this patch.

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

    Bartlomiej Zolnierkiewicz
     

02 Aug, 2007

1 commit


20 Jul, 2007

3 commits

  • * Add ATA_PIO[0-6] defines to .

    * Add ->pio_mask field to ide_pci_device_t and ide_hwif_t.

    * Add PIO masks to host drivers.

    change ACK-ed by Jeff Garzik .

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

    Bartlomiej Zolnierkiewicz
     
  • * Drop no longer needed "PIO data" argument from ide_get_best_pio_mode()
    and convert all users accordingly.

    * Remove no longer needed ide_pio_data_t.

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

    Bartlomiej Zolnierkiewicz
     
  • * Rename ide_pci_device_t.flags to ide_pci_device_t.host_flags
    and IDEPCI_FLAG_ISA_PORTS flag to IDE_HFLAG_ISA_PORTS.

    * Add IDE_HFLAG_SINGLE flag for single channel devices.

    * Convert core code and all IDE PCI drivers to use IDE_HFLAG_SINGLE
    and remove no longer needed ide_pci_device_t.channels field.

    v2:
    * Fix issues noticed by Sergei:
    - correct code alignment in scc_pata.c
    - s/IDE_HFLAG_SINGLE/~IDE_HFLAG_SINGLE/ in serverworks.c

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

    Bartlomiej Zolnierkiewicz
     

12 Jul, 2007

1 commit

  • Instead of all drivers reading pci config space to get the revision
    ID, they can now use the pci_device->revision member.

    This exposes some issues where drivers where reading a word or a dword
    for the revision number, and adding useless error-handling around the
    read. Some drivers even just read it for no purpose of all.

    In devices where the revision ID is being copied over and used in what
    appears to be the equivalent of hotpath, I have left the copy code
    and the cached copy as not to influence the driver's performance.

    Compile tested with make all{yes,mod}config on x86_64 and i386.

    Signed-off-by: Auke Kok
    Acked-by: Dave Jones
    Signed-off-by: Greg Kroah-Hartman

    Auke Kok
     

10 Jul, 2007

2 commits

  • Backport short cables support from pata_sis.c.

    This patch allows UDMA > 2 modes on ASUS A6K.

    Thanks to testing this patch goes out to Jiri Stavinoha.

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

    Bartlomiej Zolnierkiewicz
     
  • This patch allows users to override both host and device side cable detection
    with "ideX=ata66" kernel parameter. Thanks to this it should be now possible
    to use UDMA > 2 modes on systems (laptops mainly) which use short 40-pin cable
    instead of 80-pin one.

    Next patches add automatic detection of some systems using short cables.

    Changes:

    * Rename hwif->udma_four to hwif->cbl and make it u8.

    * Convert all existing users accordingly (use ATA_CBL_* defines while at it).

    * Add ATA_CBL_PATA40_SHORT support to ide-iops.c:eighty_ninty_three().

    * Use ATA_CBL_PATA40_SHORT for "ideX=ata66" kernel parameter.

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

    Bartlomiej Zolnierkiewicz
     

08 Jul, 2007

1 commit

  • The SiS966 has one additional PCI-ID 1180.

    If the chipset is using this PCI-ID, the primary channel is connected to the
    first PATA-port. The secondary channel is connected to SATA-ports in IDE
    emulation mode. The legacy IO-ports are used.

    The including of the PCI-ID into pata_sis is not sufficient, because the legacy
    driver in drivers/ide is initialized before pata_sis.

    Signed-off-by: Uwe Koziolek
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Uwe Koziolek
     

16 May, 2007

1 commit

  • * limit max PIO mode to PIO4, this driver doesn't support PIO5 and attempt
    to program PIO5 by config_art_rwp_pio() could result in incorrect PIO
    timings being programmed and possibly the data corruption (for < ATA100
    family chipsets PIO0 timings were used, for ATA100 and ATA100a - the random
    content of test1 variable was used, for ATA133 - MWDMA0 timings were used)

    * BUG() in sis5513_tune_chipset() if somebody tries to force unsupported PIO5,
    also cleanup this function a bit while at it

    * add comment about PIO0 timings for < ATA100 family chipsets

    * remove open-coded best PIO mode selection from config_art_rwp_pio(),
    it contained numerous bugs:

    - it didn't check for validity of id->eide_pio_modes and id->eide_pio_iordy
    before using them

    - it tried to found out maximum PIO mode basing on minimum IORDY cycle time
    (moreover wrong cycle times were used for PIO1/5)

    - it was overriding PIO blacklist and conservative PIO "downgrade" done
    by ide_get_best_pio_mode()

    * use sis5513_tune_drive() instead of config_art_rwp_pio()
    in sis5513_config_xfer_rate() so the correct PIO mode is also set
    on drive even if the device is not IORDY/DMA capable

    * config_art_rwp_pio() was always setting the best possible mode and not
    the wanted one - fix it and move ide_get_best_pio_mode() call to
    config_chipset_for_pio()

    * don't use ide_find_best_mode() in config_chipset_for_pio(), it was being
    overriden by config_art_rwp_pio() for the host timings anyway + we need to
    set the same PIO mode on the device and the host

    * pass correct "pio" argument (255 instead of 5) to sis5513_tune_drive() call
    in sis5513_config_xfer_rate() so the best PIO mode is set on the drive
    and not PIO4

    * rename sis5513_tune_drive() to sis5513_tuneproc()
    and config_chipset_for_pio() to sis5513_tune_driver()

    * bump driver version

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

10 May, 2007

4 commits

  • All important information/features should be already available through
    sysfs and ioctl interfaces.

    Add CONFIG_IDE_PROC_FS (CONFIG_SCSI_PROC_FS rip-off) config option,
    disabling it makes IDE driver ~5 kB smaller (on x86-32).

    While at it add CONFIG_PROC_FS=n versions of proc_ide_{create,destroy}()
    and remove no longer needed #ifdefs.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • After reworking the code responsible for selecting the best DMA
    transfer mode it is now possible to add generic ide_tune_dma() helper.

    Convert some IDE PCI host drivers to use it (the ones left need more work).

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Depends on the "ide: fix UDMA/MWDMA/SWDMA masks" patch.

    * add ide_hwif_t.udma_filter hook for filtering UDMA mask
    (use it in alim15x3, hpt366, siimage and serverworks drivers)
    * add ide_max_dma_mode() for finding best DMA mode for the device
    (loosely based on some older libata-core.c code)
    * convert ide_dma_speed() users to use ide_max_dma_mode()
    * make ide_rate_filter() take "ide_drive_t *drive" as an argument instead
    of "u8 mode" and teach it to how to use UDMA mask to do filtering
    * use ide_rate_filter() in hpt366 driver
    * remove no longer needed ide_dma_speed() and *_ratemask()
    * unexport eighty_ninty_three()

    v2:
    * rename ->filter_udma_mask to ->udma_filter
    [ Suggested by Sergei Shtylyov . ]

    v3:
    * updated for scc_pata driver (fixes XFER_UDMA_6 filtering for user-space
    originated transfer mode change requests when 100MHz clock is used)

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * use 0x00 instead of 0x80 to disable ->{ultra,mwdma,swdma}_mask
    * add udma_mask field to ide_pci_device_t and use it to initialize
    ->ultra_mask in aec62xx, cmd64x, pdc202xx_{new,old} and piix drivers
    * fix UDMA masks to match with chipset specific *_ratemask()
    (alim15x3, hpt366, serverworks and siimage drivers need UDMA mask
    filtering method - done in the next patch)

    v2:
    * piix: fix cable detection for 82801AA_1 and 82372FB_1
    [ Noticed by Sergei Shtylyov . ]
    * cmd64x: use hwif->cds->udma_mask
    [ Suggested by Sergei Shtylyov . ]
    * aec62xx: fix newly introduced bug - check DMA status not command register
    [ Noticed by Sergei Shtylyov . ]

    v3:
    * piix: use hwif->cds->udma_mask
    [ Suggested by Sergei Shtylyov . ]

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

17 Feb, 2007

4 commits

  • * add ide_set_dma() helper and make ide_hwif_t.ide_dma_check return
    -1 when DMA needs to be disabled (== need to call ->ide_dma_off_quietly)
    0 when DMA needs to be enabled (== need to call ->ide_dma_on)
    1 when DMA setting shouldn't be changed
    * fix IDE code to use ide_set_dma() instead if using ->ide_dma_check directly

    v2:
    * updated for scc_pata

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • If DMA is unsupported ->ide_dma_check should disable DMA.

    v2:
    * updated for scc_pata

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * add ide_use_fast_pio() helper for use by host drivers

    * add DMA capability and hwif->autodma checks to ide_use_dma()

    - au1xxx-ide/it8213/it821x drivers didn't check for (id->capability & 1)

    [ for the IT8211/2 in SMART mode this check shouldn't be made but since
    in it821x_fixups() we set DMA bit explicitly:

    if(strstr(id->model, "Integrated Technology Express")) {
    /* In raid mode the ident block is slightly buggy
    We need to set the bits so that the IDE layer knows
    LBA28. LBA48 and DMA ar valid */
    id->capability |= 3; /* LBA28, DMA */

    we are better off using generic helper if we can ]

    - ide-cris driver didn't set ->autodma

    [ before the patch hwif->autodma was only checked in the chipset specific
    hwif->ide_dma_check implementations, for ide-cris it is cris_dma_check()
    function so there no behavior change here ]

    v2:
    * updated patch description (thanks to Alan Cox for the feedback)

    v3:
    * updated for scc_pata driver

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * remove bogus comment for sis5513_config_xfer_rate()
    * there is no need to call config_drive_art_rwp() because
    it is called by config_art_rwp_pio()
    * remove needless wrapper
    * remove stale "TODO" comment
    (IDE core should provide generic tuning code)

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

27 Jan, 2007

1 commit


09 Dec, 2006

1 commit


01 Oct, 2006

1 commit


09 Sep, 2006

1 commit


01 Jul, 2006

1 commit


29 Mar, 2006

1 commit

  • Some quick backport bits from the libata PATA work to fix things found in
    the sis driver. The piix driver needs some fixes too but those are way to
    large and need someone working on old IDE with time to do them.

    This patch fixes the case where random bits get loaded into SIS timing
    registers according to the description of the correct behaviour from
    Vojtech Pavlik. It also adds the SiS5517 ATA16 chipset which is not
    currently supported by the driver. Thanks to Conrad Harriss for loaning me
    the machine with the 5517 chipset.

    Signed-off-by: Alan Cox
    Acked-by: Bartlomiej Zolnierkiewicz
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

20 Nov, 2005

1 commit


06 May, 2005

1 commit


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds