1. 27 4月, 2008 9 次提交
  2. 26 4月, 2008 1 次提交
  3. 18 4月, 2008 2 次提交
    • B
      ide: remove ->hold field from ide_hwif_t (take 2) · 2304dc64
      Bartlomiej Zolnierkiewicz 提交于
      ->hold is write-only now, remove it.
      
      v2:
      * v1 missed bast-ide, palm_bk3710, ide-cs and delkin_cb host drivers.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2304dc64
    • B
      ide: remove broken/dangerous HDIO_[UNREGISTER,SCAN]_HWIF ioctls (take 3) · 93de00fd
      Bartlomiej Zolnierkiewicz 提交于
      hdparm explicitely marks HDIO_[UNREGISTER,SCAN]_HWIF ioctls as DANGEROUS
      and given the number of bugs we can assume that there are no real users:
      
      * DMA has no chance of working because DMA resources are released by
        ide_unregister() and they are never allocated again.
      
      * Since ide_init_hwif_ports() is used for ->io_ports[] setup the ioctls
        don't work for almost all hosts with "non-standard" (== non ISA-like)
        layout of IDE taskfile registers (there is a lot of such host drivers).
      
      * ide_port_init_devices() is not called when probing IDE devices so:
        - drive->autotune is never set and IDE host/devices are not programmed
          for the correct PIO/DMA transfer modes (=> possible data corruption)
        - host specific I/O 32-bit and IRQ unmasking settings are not applied
          (=> possible data corruption)
        - host specific ->port_init_devs method is not called (=> no luck with
          ht6560b, qd65xx and opti621 host drivers)
      
      * ->rw_disk method is not preserved (=> no HPT3xxN chipsets support).
      
      * ->serialized flag is not preserved (=> possible data corruption when
         using icside, aec62xx (ATP850UF chipset), cmd640, cs5530, hpt366
         (HPT3xxN chipsets), rz1000, sc1200, dtc2278 and ht6560b host drivers).
      
      * ->ack_intr method is not preserved (=> needed by ide-cris, buddha,
        gayle and macide host drivers).
      
      * ->sata_scr[] and sata_misc[] is cleared by ide_unregister() and it
        isn't initialized again (SiI3112 support needs them).
      
      * To issue an ioctl() there need to be at least one IDE device present
        in the system.
      
      * ->cable_detect method is not preserved + it is not called when probing
        IDE devices so cable detection is broken (however since DMA support is
        also broken it doesn't really matter ;-).
      
      * Some objects which may have already been freed in ide_unregister()
        are restored by ide_hwif_restore() (i.e. ->hwgroup).
      
      * ide_register_hw() may unregister unrelated IDE ports if free ide_hwifs[]
        slot cannot be found.
      
      * When IDE host drivers are modular unregistered port may be re-used by
        different host driver that owned it first causing subtle bugs.
      
      Since we now have a proper warm-plug support remove these ioctls,
      then remove no longer needed:
      - ide_register_hw() and ide_hwif_restore() functions
      - 'init_default' and 'restore' arguments of ide_unregister()
      - zeroeing of hwif->{dma,extra}_* fields in ide_unregister()
      
      As an added bonus IDE core code size shrinks by ~3kB (x86-32).
      
      v2:
      * fix ide_unregister() arguments in cleanup_module() (Andrew Morton).
      
      v3:
      * fix ide_unregister() arguments in palm_bk3710.c.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      93de00fd
  4. 17 4月, 2008 3 次提交
    • S
      Pb1200/DBAu1200: fix bad IDE resource size · b4dcaea3
      Sergei Shtylyov 提交于
      The header files for the Pb1200/DBAu1200 boards have wrong definition for the
      IDE interface's decoded range length -- it should be 512 bytes according to
      what the IDE driver does.  In addition, the IDE platform device claims 1 byte
      too many for its memory resource -- fix the platform code and the IDE driver
      in accordance.
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b4dcaea3
    • S
      Au1200: IDE driver build fix · fabd3a22
      Sergei Shtylyov 提交于
      The driver fails to compile with CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA enabled:
      
      drivers/ide/mips/au1xxx-ide.c: In function `auide_build_dmatable':
      drivers/ide/mips/au1xxx-ide.c:256: error: implicit declaration of function
      `sg_virt'
      drivers/ide/mips/au1xxx-ide.c:275: error: implicit declaration of function
      `sg_next'
      drivers/ide/mips/au1xxx-ide.c:275: warning: assignment makes pointer from
      integer without a cast
      
      Fix this by including <linux/scatterlist.h>. While at it, remove the #include's
      without which the driver happily builds.
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      fabd3a22
    • S
      Au1200: kill IDE driver function prototypes · 09a77441
      Sergei Shtylyov 提交于
      Fix these warnings emitted when compiling drivers/ide/mips/au1xxx-ide.c:
      
      include/asm/mach-au1x00/au1xxx_ide.h:137: warning: 'auide_tune_drive' declared 
      `static' but never defined
      include/asm/mach-au1x00/au1xxx_ide.h:138: warning: 'auide_tune_chipset' declared
       `static' but never defined
      
      by wiping out the whole "function prototyping" section from the header file
      <asm-mips/mach-au1x00/au1xxx_ide.h> as it mostly declared functions that are
      already dead in the IDE driver; move the only useful prototype into the driver.
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      09a77441
  5. 03 2月, 2008 5 次提交
    • B
      ide: add IDE_HFLAG_NO_{IO32_BIT,UNMASK_IRQS} host flags · 807b90d0
      Bartlomiej Zolnierkiewicz 提交于
      * Use the same bit for IDE_HFLAG_CS5520 and IDE_HFLAG_VDMA host flags
        (both are used only by cs5520 host driver currently).
      
      * Add IDE_HFLAG_NO_IO32_BIT host flag and use it instead of ->no_io_32bit
        ide_hwif_t field.
      
      * Add IDE_HFLAG_NO_UNMASK_IRQS host flag, then convert dtc2278 and rz1000
        host drivers to use it.
      
      There should be no functionality changes caused by this patch.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      807b90d0
    • B
      ide: fix ide_unregister() usage in host drivers · 909f4369
      Bartlomiej Zolnierkiewicz 提交于
      bast-ide.c/ide-cs.c/delkin_cb.c:
      
      * Don't set 'restore' flag for ide_unregister() when initializing new
        interface.
      
      rapide.c/ide-pnp.c/ide-cs.c/ide_platform.c/au1xxx-ide.c/delkin_cb.c/scc_pata.c:
      
      * Don't set 'init_default' and 'restore' flags for ide_unregister() when
        removing interface.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      909f4369
    • B
      ide: add 'init_default' and 'restore' arguments to ide_unregister() · f82c2b17
      Bartlomiej Zolnierkiewicz 提交于
      * Add 'init_default' (flag for calling init_hwif_default()) and 'restore'
        (flag for calling ide_hwif_restore()) arguments to ide_unregister().
      
      * Update ide_unregister() users to set 'init_default' and 'restore' flags.
      
      * No need to set 'init_default' flag in ide_register_hw() if the setup done
        by init_hwif_default() is going to be overridden by ide_init_port_hw().
      
      * No need to set 'init_default' and 'restore' flags in cleanup_module().
      
      There should be no functionality changes caused by this patch.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      f82c2b17
    • B
      ide: add struct ide_port_info instances to legacy host drivers · c413b9b9
      Bartlomiej Zolnierkiewicz 提交于
      * Remove 'struct pci_dev *dev' argument from ide_hwif_setup_dma().
      
      * Un-static ide_hwif_setup_dma() and add CONFIG_BLK_DEV_IDEDMA_PCI=n version.
      
      * Add 'const struct ide_port_info *d' argument to ide_device_add[_all]().
      
      * Factor out generic ports init from ide_pci_setup_ports() to ide_init_port(),
        move it to ide-probe.c and call it in in ide_device_add_all() instead of
        ide_pci_setup_ports().
      
      * Move ->mate setup to ide_device_add_all() from ide_port_init().
      
      * Add IDE_HFLAG_NO_AUTOTUNE host flag for host drivers that don't enable
        ->autotune currently.
      
      * Setup hwif->chipset in ide_init_port() but iff pi->chipset is set
        (to not override setup done by ide_hwif_configure()).
      
      * Add ETRAX host handling to ide_device_add_all().
      
      * cmd640.c: set IDE_HFLAG_ABUSE_* also for CONFIG_BLK_DEV_CMD640_ENHANCED=n.
      
      * pmac.c: make pmac_ide_setup_dma() return an error value and move DMA masks
        setup to pmac_ide_setup_device().
      
      * Add 'struct ide_port_info' instances to legacy host drivers, pass them to
        ide_device_add() calls and then remove open-coded ports initialization.
      Reviewed-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      c413b9b9
    • B
      au1xxx-ide: fix ->io_32bit handling · bd38dd3c
      Bartlomiej Zolnierkiewicz 提交于
      The host driver must set hwif's ->no_io_32bit setting not drive's one
      (ide_port_tune_devices() overrides drive's setting).
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      bd38dd3c
  6. 02 2月, 2008 5 次提交
  7. 27 1月, 2008 5 次提交
  8. 26 1月, 2008 1 次提交
    • B
      ide: add IDE_HFLAG_ABUSE_SET_DMA_MODE host flag · 4db90a14
      Bartlomiej Zolnierkiewicz 提交于
      * Add IDE_HFLAG_ABUSE_SET_DMA_MODE host flag and use it to decide
        what to do with transfer modes < XFER_PIO_0 in ide_set_xfer_rate().
      
      * Set IDE_HFLAG_ABUSE_SET_DMA_MODE in host drivers that need it
        (aec62xx, amd74xx, cs5520, cs5535, hpt34x, hpt366, pdc202xx_old,
        serverworks, tc86c001 and via82cxxx) and cleanup ->set_dma_mode
        methods in host drivers that don't (IDE core code guarantees that
        ->set_dma_mode will be called only for modes which are present
        in SWDMA/MWDMA/UDMA masks).
      
      While at it:
      
      * Add IDE_HFLAGS_HPT34X/HPT3XX/PDC202XX/SVWKS define in
        hpt34x/hpt366/pdc202xx_old/serverworks host driver.
      
      There should be no functionality changes caused by this patch.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      4db90a14
  9. 23 10月, 2007 1 次提交
  10. 20 10月, 2007 3 次提交
  11. 19 10月, 2007 1 次提交
  12. 17 10月, 2007 3 次提交
    • B
      ide: remove hwif->autodma and drive->autodma · 9ff6f72f
      Bartlomiej Zolnierkiewicz 提交于
      * hpt34x.c: disable DMA masks for HPT345
        (hwif->autodma is zero so DMA won't be enabled anyway).
      
      * trm290.c: disable IDE_HFLAG_TRUST_BIOS_FOR_DMA flag
        (hwif->autodma is zero so DMA won't be enabled anyway).
      
      * Check noautodma global variable instead of drive->autodma in ide_tune_dma().
      
        This fixes handling of "ide=nodma" kernel parameter for icside, ide-cris,
        au1xxx-ide, pmac, it821x, jmicron, sgiioc4 and siimage host drivers.
      
      * Remove hwif->autodma (it was not checked by IDE core code anyway) and
        drive->autodma (was set by all host drivers - except HPT345/TRM290 special
        cases - unless "ide=nodma" was used).
      
      While at it:
      - remove needless printk() from icside.c
      - remove stale FIXME/comment from ide-probe.c
      - don't force DMA off if PCI bus-mastering had to be enabled in setup-pci.c
        (this setting was always later over-ridden by host drivers anyway)
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      9ff6f72f
    • B
      ide: remove ->ide_dma_check (take 2) · 0ae2e178
      Bartlomiej Zolnierkiewicz 提交于
      * Add IDE_HFLAG_TRUST_BIOS_FOR_DMA host flag for host drivers that depend
        on BIOS for programming device/controller for DMA.  Set it in cy82c693,
        generic, ns87415, opti621 and trm290 host drivers.
      
      * Add IDE_HFLAG_VDMA host flag for host drivers using VDMA.  Set it in cs5520
        host driver.
      
      * Teach ide_tune_dma() about IDE_HFLAG_TRUST_BIOS_FOR_DMA flag.
      
      * Add generic ide_dma_check() helper and remove all open coded ->ide_dma_check
        implementations.  Fix all places checking for presence of ->ide_dma_check
        hook to check for ->ide_dma_on instead.
      
      * Remove no longer needed code from config_drive_for_dma().
      
      * Make ide_tune_dma() static.
      
      v2:
      * Fix config_drive_for_dma() return values.
      
      * Fix ide-dma.c build for CONFIG_BLK_DEV_IDEDMA_PCI=n by adding
        dummy config_drive_for_dma() inline.
      
      * Fix IDE_HFLAG_TRUST_BIOS_FOR_DMA handling in ide_dma_check().
      
      * Fix init_hwif_it8213() comment.
      
      There should be no functionality changes caused by this patch.
      
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      0ae2e178
    • B
      au1xxx-ide: use ide_tune_dma() · 8446f659
      Bartlomiej Zolnierkiewicz 提交于
      * Remove needless setting of drive->using_dma from auide_dma_check().
      
      * Split off auide_mdma_filter() from auide_dma_check().
      
      * Use ide_tune_dma() in auide_dma_check(), this fixes following issues:
        - device's DMA capability bit not being checked
        - device not being checked against generic DMA blacklist
        - transfer mode not being set on device/host
      
      * Add PIO autotune fallback to auide_dma_check().
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      8446f659
  13. 16 10月, 2007 1 次提交