07 Jan, 2009

1 commit

  • * Merge ide_hwgroup_t with ide_hwif_t.

    * Cleanup init_irq() accordingly, then remove no longer needed
    ide_remove_port_from_hwgroup() and ide_ports[].

    * Remove now unused HWGROUP() macro.

    While at it:

    * ide_dump_ata_error() fixups

    v2:
    * Fix ->quirk_list check in do_ide_request()
    (s/hwif->cur_dev/prev_port->cur_dev).

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

30 Dec, 2008

3 commits


14 Oct, 2008

1 commit

  • Add 'unsigned long dev_flags' to ide_drive_t and convert bitfields
    to IDE_DFLAG_* flags.

    While at it:
    - IDE_DFLAG_ADDRESSING -> IDE_DFLAG_LBA48
    - fixup some comments
    - remove needless g->flags zeroing from ide*_probe()

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

11 Oct, 2008

4 commits

  • * Include directly in
    instead of through .

    * Include only when needed.

    Cc: Christoph Hellwig
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * ERR_STAT -> ATA_ERR
    * INDEX_STAT -> ATA_IDX
    * ECC_STAT -> ATA_CORR
    * DRQ_STAT -> ATA_DRQ
    * SEEK_STAT -> ATA_DSC
    * WRERR_STAT -> ATA_DF
    * READY_STAT -> ATA_DRDY
    * BUSY_STAT -> ATA_BUSY

    * MARK_ERR -> ATA_AMNF
    * TRK0_ERR -> ATA_TRK0NF
    * ABRT_ERR -> ATA_ABORTED
    * MCR_ERR -> ATA_MCR
    * ID_ERR -> ATA_IDNF
    * MC_ERR -> ATA_MC
    * ECC_ERR -> ATA_UNC
    * ICRC_ERR -> ATA_ICRC

    * BBD_ERR -> ATA_BBK

    Also:

    * ILI_ERR -> ATAPI_ILI
    * EOM_ERR -> ATAPI_EOM
    * LFS_ERR -> ATAPI_LFS

    * CD -> ATAPI_COD
    * IO -> ATAPI_IO

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Factor out HDIO_[OBSOLETE,GET]_IDENTITY ioctls handling
    to ide_get_identity_ioctl().

    * Use temporary buffer in ide_get_identity_ioctl() instead
    of accessing drive->id directly.

    * Add ide_id_to_hd_driveid() inline to convert raw id into
    struct hd_driveid format (needed on big-endian).

    * Use ide_id_to_hd_driveid() in ide_get_identity_ioctl(),
    cleanup ide_fix_driveid() and switch ide to use use raw id.

    * Remove no longer needed drive->driveid.

    This leaves us with 3 users of struct hd_driveid in tree:
    - arch/um/drivers/ubd_kern.c
    - drivers/block/xsysace.c
    - drivers/usb/storage/isd200.c

    While at it:

    * Use ata_id_u{32,64}() and ata_id_has_{dma,lba,iordy}() macros.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • Make drive->id an unnamed union so id can be accessed either by using
    'u16 *id' or 'struct hd_driveid *driveid'. Then convert all existing
    drive->id users accordingly (using 'u16 *id' when possible).

    This is an intermediate step to make ide 'struct hd_driveid'-free.

    While at it:

    - Add missing KERN_CONTs in it821x.c.

    - Use ATA_ID_WORDS and ATA_ID_*_LEN defines.

    - Remove unnecessary checks for drive->id.

    - s/drive_table/table/ in ide_in_drive_list().

    - Cleanup ide_config_drive_speed() a bit.

    - s/drive1/dev1/ & s/drive0/dev0/ in ide_undecoded_slave().

    v2:
    Fix typo in drivers/ide/ppc/pmac.c. (From Stephen Rothwell)

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

24 Jul, 2008

2 commits

  • * Add struct ide_tp_ops for transport methods.

    * Add 'const struct ide_tp_ops *tp_ops' to struct ide_port_info
    and ide_hwif_t.

    * Set the default hwif->tp_ops in ide_init_port_data().

    * Set host driver specific hwif->tp_ops in ide_init_port().

    * Export ide_exec_command(), ide_read_status(), ide_read_altstatus(),
    ide_read_sff_dma_status(), ide_set_irq(), ide_tf_{load,read}()
    and ata_{in,out}put_data().

    * Convert host drivers and core code to use struct ide_tp_ops.

    * Remove no longer needed default_hwif_transport().

    * Cleanup ide_hwif_t from methods that are now in struct ide_tp_ops.

    While at it:

    * Use struct ide_port_info in falconide.c and q40ide.c.

    * Rename ata_{in,out}put_data() to ide_{in,out}put_data().

    v2:

    * Fix missing convertion in ns87415.c.

    There should be no functional changes caused by this patch.

    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Filter out "default" transfer mode values (0x00 - default PIO mode,
    0x01 - default PIO mode w/ IORDY disabled) in write handler for obsoleted
    /proc/ide/hd?/settings:current_speed setting.

    Allowing "default" transfer mode values is a dangerous thing to do as
    we don't support programming controller to the "default" transfer mode
    and devices often use different values for the default and maximum PIO
    mode (i.e. PIO2 default and PIO4 maximum) so the controller will stay
    programmed for higher PIO mode while device will use the lower PIO mode.

    There is no functionality loss as by using special IOCTLs device can
    still be programmed to "default" transfer modes (it is only useful for
    debugging/testing purposes anyway).

    * Remove no longer needed IDE_HFLAG_ABUSE_SET_DMA_MODE host flag, it was
    previously used by few host drivers to program the controller to PIO0
    timings for "default" transfer mode == 0x01 (although some host drivers
    would program invalid PIO timings instead).

    * Cleanup ide_set_xfer_rate() and add BUG_ON().

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

    Bartlomiej Zolnierkiewicz
     

17 Jul, 2008

4 commits


29 Apr, 2008

1 commit

  • * Add ->tf_load and ->tf_read methods to ide_hwif_t and set the default
    methods in default_hwif_transport().

    * Use ->tf_{load,read} instead o calling ide_tf_{load,read}() directly.

    * Make ide_tf_{load,read}() static.

    There should be no functional changes caused by this patch.

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

    Bartlomiej Zolnierkiewicz
     

27 Apr, 2008

2 commits

  • __FUNCTION__ is gcc-specific, use __func__

    [bart: fix checkpatch.pl errors in ide-lib.c and ppc/mpc8xx.c while at it]

    Signed-off-by: Harvey Harrison
    Cc: Andrew Morton
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Harvey Harrison
     
  • * Move hooks for port/host specific methods from ide_hwif_t to
    'struct ide_port_ops'.

    * Add 'const struct ide_port_ops *port_ops' to 'struct ide_port_info'
    and ide_hwif_t.

    * Update host drivers and core code accordingly.

    While at it:

    * Rename ata66_*() cable detect functions to *_cable_detect() to match
    the standard naming. (Suggested by Sergei Shtylyov)

    v2:
    * Fix build for bast-ide. (Noticed by Andrew Morton)

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

    Bartlomiej Zolnierkiewicz
     

26 Apr, 2008

2 commits


22 Mar, 2008

1 commit


11 Feb, 2008

1 commit


06 Feb, 2008

1 commit


02 Feb, 2008

1 commit


27 Jan, 2008

1 commit


26 Jan, 2008

10 commits

  • * 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: Sergei Shtylyov
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Move the common code from ide_dump_{ata,atapi}_status() to
    ide_dump_status().

    * ide_dump_{ata,atapi}_status() -> ide_dump_{ata,atapi}_error().

    There should be no functionality changes caused by this patch.

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

    Bartlomiej Zolnierkiewicz
     
  • * Export ide_get_lba_addr().

    * Convert idedisk_{read_native,set}_max_address() to use ide_get_lba_addr().

    * Remove incorrect comment from idedisk_read_native_max_address()
    (noticed by Sergei).

    There should be no functionality changes caused by this patch.

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

    Bartlomiej Zolnierkiewicz
     
  • power4:

    drivers/ide/ide-lib.c: In function `ide_dump_sector':
    drivers/ide/ide-lib.c:516: warning: long long unsigned int format, u64 arg (arg 2)

    We don't know what type is used to implement u64 hence it must always be cast
    when printed.

    Signed-off-by: Andrew Morton
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Andrew Morton
     
  • * Factor out code reading taskfile registers from ide_end_drive_cmd()
    to the new ide_tf_read() helper.

    * Add IDE_TFLAG_IN_* taskfile flags to indicate the need to load
    particular IDE taskfile register in ide_tf_read().

    * Update ide_end_drive_cmd() to set respective IDE_TFLAG_IN_* taksfile flags.

    * Add ide_get_lba_addr() for getting LBA sector address from taskfile struct.

    * Factor out code getting sector address from ide_dump_ata_status()
    to the new ide_dump_sector() function.

    * Convert ide_dump_sector() to use ide_tf_read() and ide_get_lba_addr().

    * Remove no longer needed ide_read_24().

    The only change in functionality caused by this patch is that
    ide_dump_ata_status() no longer prints "high"/"low" parts of LBA48
    sector address (of course LBA48 sector address is still printed).

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

    Bartlomiej Zolnierkiewicz
     
  • Fix registers loading order in ide_dump_ata_status()/ide_read_24().

    Load registers in this order:
    * IDE_SECTOR_REG
    * IDE_LCYL_REG
    * IDE_HCYL_REG
    * IDE_SELECT_REG

    It shouldn't affect anything (just a usual paranoia to separate changes
    which change the way in which hardware is accessed from code cleanups).

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

    Bartlomiej Zolnierkiewicz
     
  • Remove atapi_error_t.

    While at it:
    * replace 'HWIF(drive)' by 'drive->hwif'

    v2:
    * Add {ILI,EOM,LFS}_ERR defines to .

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

    Bartlomiej Zolnierkiewicz
     
  • Remove ata_status_t (unused) and atapi_status_t.

    While at it:
    * replace 'HWIF(drive)' by 'drive->hwif' (or just 'hwif' where possible)

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

    Bartlomiej Zolnierkiewicz
     
  • Based on the earlier work by Tejun Heo.

    All users are gone so we can finally remove it.

    Cc: Tejun Heo
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     
  • * Don't set write-only ide_task_t.hobRegister[6] and ide_task_t.hobRegister[7]
    in idedisk_set_max_address_ext().

    * Add struct ide_taskfile and use it in ide_task_t instead of tfRegister[]
    and hobRegister[].

    * Remove no longer needed IDE_CONTROL_OFFSET_HOB define.

    * Add #ifndef/#endif __KERNEL__ around definitions of {task,hob}_struct_t.

    While at it:

    * Use ATA_LBA define for LBA bit (0x40) as suggested by Tejun Heo.

    v2:
    * Add missing newlines. (Noticed by Sergei)

    * Use ~ATA_LBA instead of 0xBF. (Noticed by Sergei)

    * Use unnamed unions for error/feature and status/command.
    (Suggested by Sergei).

    There should be no functionality changes caused by this patch.

    Acked-by: Sergei Shtylyov
    Cc: Tejun Heo
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

13 Dec, 2007

1 commit

  • * ide_xfer_verbose() fixups:
    - beautify returned mode names
    - fix PIO5 reporting
    - make it return 'const char *'

    * Change printk() level from KERN_DEBUG to KERN_INFO in ide_find_dma_mode().

    * Add ide_id_dma_bug() helper based on ide_dma_verbose() to check for invalid
    DMA info in identify block.

    * Use ide_id_dma_bug() in ide_tune_dma() and ide_driveid_update().

    As a result DMA won't be tuned or will be disabled after tuning if device
    reports inconsistent info about enabled DMA mode (ide_dma_verbose() does the
    same checks while the IDE device is probed by ide-{cd,disk} device driver).

    * Remove no longer needed ide_dma_verbose().

    This patch should fix the following problem with out-of-sync IDE messages
    reported by Nick Warne:

    hdd: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cachehdd:
    skipping word 93 validity check
    , UDMA(66)

    and later debugged by Mark Lord to be caused by:

    ide_dma_verbose()
    printk( ... "2048kB Cache");
    eighty_ninty_three()
    printk(KERN_DEBUG "%s: skipping word 93 validity check\n");
    ide_dma_verbose()
    printk(", UDMA(66)"

    Please note that as a result ide-{cd,disk} device drivers won't report the
    DMA speed used but this is intended since now DMA mode being used is always
    reported by IDE core code.

    v2:
    * fixes suggested by Randy:
    - use KERN_CONT for printk()-s in ide-{cd,disk}.c
    - don't remove argument name from ide_xfer_verbose() declaration

    v3:
    * Remove incorrect check for (id->field_valid & 1) from ide_id_dma_bug()
    (spotted by Sergei).

    * "XFER SLOW" -> "PIO SLOW" in ide_xfer_verbose() (suggested by Sergei).

    * Fix ide_find_dma_mode() to report the correct mode ('mode' after being
    limited by 'req_mode').

    Cc: Sergei Shtylyov
    Cc: Nick Warne
    Cc: Mark Lord
    Cc: Randy Dunlap
    Signed-off-by: Bartlomiej Zolnierkiewicz

    Bartlomiej Zolnierkiewicz
     

14 Nov, 2007

1 commit


17 Oct, 2007

1 commit

  • Remove ide_use_fast_pio() and just re-tune PIO unconditionally if DMA tuning
    has failed in ->ide_dma_check. All host drivers using ide_use_fast_pio() set
    drive->autotune so PIO is always tuned anyway and in some cases we _really_
    need to re-tune PIO because PIO and DMA timings are shared.

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

    Bartlomiej Zolnierkiewicz
     

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

1 commit