summaryrefslogtreecommitdiffstats
path: root/drivers/ide
AgeCommit message (Collapse)Author
2009-04-19ide: add helpers for preparing sense requestsBorislav Petkov
This is in preparation of removing the queueing of a sense request out of the IRQ handler path. Use struct request_sense as a general sense buffer for all ATAPI devices ide-{floppy,tape,cd}. tj: * blk_get_request(__GFP_WAIT) can't be called from do_request() as it can cause deadlock. Converted to use inline struct request and blk_rq_init(). * Added xfer / cdb len selection depending on device type. * All sense prep logics folded into ide_prep_sense() which never fails. * hwif->rq clearing and sense_rq used handling moved into ide_queue_sense_rq(). * blk_rq_map_kern() conversion is moved to later patch. CC: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> CC: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
2009-04-19ide-cd: don't abuse rq->bufferTejun Heo
Impact: rq->buffer usage cleanup ide-cd uses rq->buffer to carry pointer to the original request when issuing REQUEST_SENSE. Use rq->special instead. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk>
2009-04-19ide-atapi: don't abuse rq->bufferTejun Heo
Impact: rq->buffer usage cleanup ide-atapi uses rq->buffer as private opaque value for internal special requests. rq->special isn't used for these cases (the only case where rq->special is used is for ide-tape rw requests). Use rq->special instead. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk>
2009-04-19ide-taskfile: don't abuse rq->bufferTejun Heo
Impact: rq->buffer usage cleanup ide_raw_taskfile() directly uses rq->buffer to carry pointer to the data buffer. This complicates both block interface and ide backend request handling. Use blk_rq_map_kern() instead and drop special handling for REQ_TYPE_ATA_TASKFILE from ide_map_sg(). Note that REQ_RW setting is moved upwards as blk_rq_map_kern() uses it to initialize bio rw flag. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk>
2009-04-19ide-floppy: block pc always uses bioTejun Heo
Impact: remove unnecessary code path Block pc requests always use bio and rq->data is always NULL. No need to worry about !rq->bio cases in idefloppy_block_pc_cmd(). Note that ide-atapi uses ide_pio_bytes() for bio PIO transfer which handle sg fine. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk>
2009-04-19ide-cd: clear sense buffer before issuing request senseTejun Heo
Impact: code simplification ide_cd_request_sense_fixup() clears the tail of the sense buffer if the device didn't completely fill it. This patch makes cdrom_queue_request_sense() clear the sense buffer before issuing the command instead of clearing it afterwards. This simplifies code and eases future changes. Signed-off-by: Tejun Heo <tj@kernel.org>
2009-04-19ide: don't set REQ_SOFTBARRIERTejun Heo
ide doesn't have to worry about REQ_SOFTBARRIER. Don't set it. Signed-off-by: Tejun Heo <tj@kernel.org>
2009-04-19ide: use blk_run_queue() instead of blk_start_queueing()Tejun Heo
blk_start_queueing() is being phased out in favor of [__]blk_run_queue(). Switch. Signed-off-by: Tejun Heo <tj@kernel.org>
2009-04-19ide-tape: remove back-to-back REQUEST_SENSE detectionTejun Heo
Impact: fix an oops which always triggers ide_tape_issue_pc() assumed drive->pc isn't NULL on invocation when checking for back-to-back request sense issues but drive->pc can be NULL and even when it's not NULL, it's not safe to dereference it once the previous command is complete because pc could have been freed or was on stack. Kill back-to-back REQUEST_SENSE detection. Signed-off-by: Tejun Heo <tj@kernel.org>
2009-04-18cs5536: define dma_sff_read_status() methodSergei Shtylyov
The driver somehow got merged with the initializer for the dma_sff_read_status() method missing which caused kernel panic on bootup. This should fix the kernel.org bug #13026... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Reported-by: Arnd Hannemann <hannemann@nets.rwth-aachen.de> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-18ide: fix barriers supportBartlomiej Zolnierkiewicz
Freeing non-slab objects is bad and results in an oops. Fix it. Reported-and-tested-by: Andrew Price <andy@andrewprice.me.uk> Cc: Theodore Tso <tytso@mit.edu> Cc: "Rafael J. Wysocki" <rjw@sisk.pl> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-18ide: Remove void castsJack Stone
Remove uneeded void casts Signed-off-by: Jack Stone <jwjstone@fastmail.fm> Cc: jeff@garzik.org Cc: kernel-janitors@vger.kernel.org Cc: Jack Stone <jwjstone@fastmail.fm> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-18hpt366: use ATA_DMA_* constantsSergei Shtylyov
Use ATA_DMA_* constants instead of the bare numbers for the BMIDE register bits. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-18hpt366: fix HPT370 DMA timeoutsSergei Shtylyov
The big driver change in 2.4.19-rc1 introduced a regression for many HPT370[A] chips -- DMA stopped to work completely, only causing endless timeouts... The culprit has been identified (at last!): it turned to be the code resetting the DMA state machine before each transfer. Stop doing it now as this counter- measure has clearly caused more harm than good. This should fix the kernel.org bug #7703. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08at91_ide: turn on PIO 6 supportStanislaw Gruszka
As we have already PIO 6 transfer mode supported in IDE layer, we can turn it on in the driver. Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl> Tested-by: "Steve Wootton" <swootton@esi-estech.com> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08at91_ide: remove unused ide_mm_{outb,inb}Stanislaw Gruszka
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
2009-04-08ide-cd: reverse NOT_READY sense key logicBorislav Petkov
Make the case of flushing the drive's cache explicit. There should be no functional change resulting from this patch. Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: refactor tf_read() methodSergei Shtylyov
Simplify tf_read() method, making it deal only with 'struct ide_taskfile' and the validity flags that the upper layer passes, and factoring out the code that deals with the high order bytes into ide_tf_readback() to be called from the only two functions interested, ide_complete_cmd() and ide_dump_sector(). This should stop the needless code duplication in this method and so make it about twice smaller than it was; along with simplifying the setup for the method call, this should save both time and space... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: refactor tf_load() methodSergei Shtylyov
Simplify tf_load() method, making it deal only with 'struct ide_taskfile' and the validity flags that the upper layer passes, and moving the code that deals with the high order bytes into the only function interested, do_rw_taskfile(). This should stop the needless code duplication in this method and so make it about twice smaller than it was; along with simplifying the setup for the method call, this should save both time and space... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: call write_devctl() method from tf_read() methodSergei Shtylyov
Use write_devctl() method to clear/set the HOB bit in tf_read() method. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: move common code out of tf_load() methodSergei Shtylyov
Move device register masking (and setting drive->select) out of tf_load() method and into the only function that needs to use this code, do_rw_taskfile()... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> [bart: fix whitespace error] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: simplify 'struct ide_taskfile'Sergei Shtylyov
Make 'struct ide_taskfile' cover only 8 register values and thus put two such fields ('tf' and 'hob') into 'struct ide_cmd', dropping unnecessary 'tf_array' field from it. This required changing the prototype of ide_get_lba_addr() and ide_tf_dump(). Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> [bart: fix setting of ATA_LBA bit for LBA48 commands in __ide_do_rw_disk()] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: replace IDE_TFLAG_* flags by IDE_VALID_*Sergei Shtylyov
Replace IDE_TFLAG_{IN|OUT}_* flags meaning to the taskfile register validity on input/output by the IDE_VALID_* flags and introduce 4 symmetric 8-bit register validity indicator subfields, 'valid.{input/output}.{tf|hob}', into the 'struct ide_cmd' instead of using the 'tf_flags' field for that purpose (this field can then be turned from 32-bit into 8-bit one). Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: fix intendation in cdrom_decode_status()Bartlomiej Zolnierkiewicz
Based on earlier work by Borislav Petkov. Fix intendation in cdrom_decode_status(), no real code changes. While at it: - beautify comments There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: unify handling of fs and pc requests in cdrom_decode_status()Bartlomiej Zolnierkiewicz
Based on earlier work by Borislav Petkov. Unify handling of fs and pc requests in cdrom_decode_status(). While at it: - remove unreachable code The only change in functionality is that for pc requests more detailed error message will be printed for following sense keys: * ILLEGAL_REQUEST * DATA_PROTECT * MEDIUM_ERROR * BLANK_CHECK Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: convert cdrom_decode_status() to use switch statementsBartlomiej Zolnierkiewicz
Based on earlier work by Borislav Petkov. Convert cdrom_decode_status() to use switch statements in preparation to unify handling of fs and pc requests. While at it: - remove superfluous comments and do minor CodingStyle fixups There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: update debugging supportBorislav Petkov
Signed-off-by: Borislav Petkov <petkovbb@gmail.com> [bart: extracted from "ide-cd: cleanup cdrom_decode_status" patch] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: respect REQ_QUIET for fs requests in cdrom_decode_status()Borislav Petkov
There should be no functional change resulting from this patch. Suggested-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: remove unused #include <linux/version.h>Huang Weiyi
Remove unused #include <linux/version.h> in drivers/ide/at91_ide.c. Signed-off-by: Huang Weiyi <weiyi.huang@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08tx4939ide: Fix tx4939ide_{in,out}put_data_swap argumentAtsushi Nemoto
The commit adb1af9 ("ide: pass command instead of request to ide_pio_datablock()") missed tx4939ide driver. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08tx493[89]ide: Remove big endian version of tx493[89]ide_tf_{load,read}Atsushi Nemoto
Now tx493[89]ide_tf_{load,read} do not contain word I/O operations. They are endian-free now. Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>, Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: carve out an ide_cd_breathe()-helper for fs write requestsBorislav Petkov
There should be no functional change resulting from this patch. Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-cd: move status checking into the IRQ handlerBorislav Petkov
There should be no functional change resulting from this patch. Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-h8300: remove custom tf_{read|load}() methodsSergei Shtylyov
Since tf_{read|load}() methods of this driver have now become identical to their standard counterparts using I/O port accesses, there's no need to override those anymore... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08at91_ide: remove custom tf_{read|load}() methodsSergei Shtylyov
Since tf_{read|load}() methods of this driver have now become identical to their standard counterparts using MMIO accesses, there's no need to override those anymore... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide-h8300: remove mm_{inw|outw}()Sergei Shtylyov
Remove two no longer used functions that I've overlooked... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08tx4939ide: remove wmb()Atsushi Nemoto
* define CHECK_DMA_MASK * remove use of wmb() Reported-by: Grant Grundler <grundler@google.com> Reviewed-by: Grant Grundler <grundler@google.com> Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
2009-04-08ide: remove wmb() from ide-dma-sff.c and scc_pata.cGrant Grundler
This patch: o replaces "mask" variable in ide_dma_end() with #define. o removes use of wmb() in ide-dma-sff.c and scc_pata.c. o is not tested - I don't have (or want) the HW. Signed-off-by: Grant Grundler <grundler@google.com> Cc: KOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: falconide/q40ide - Use __ide_mm_{in,out}sw() for dataGeert Uytterhoeven
Both of commits f94116aeec7a299640dd692128e1d22178affa8d ("ide: cleanup <asm-m68k/ide.h>") and 15a453a955f89f6545118770c669b52e925368bd ("ide: include <asm/ide.h> only when needed") break falconide: | Uniform Multi-Platform E-IDE driver | ide: Falcon IDE controller | Probing IDE interface ide0... | hda: Sarge m68k, ATA DISK drive | ide0 at 0xfff00000 on irq 15 (serialized) | ide-gd driver 1.18 | hda: max request size: 128KiB | hda: 2118816 sectors (1084 MB) w/256KiB Cache, CHS=2102/16/63 | hda:<4>hda: lost interrupt This happens because falconide relies on {in,out}sw() being redefined in <asm/ide.h>, as included by <linux/ide.h>, which is no longer the case. Use __ide_mm_{in,out}sw() from <asm/ide.h> instead, just like ide_{in,out}put_data() do. The same problem seems to exist in q40ide. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-08ide: Fix host drivers that need IRQF_SHAREDGeert Uytterhoeven
commit 255115fb35f80735c21a1cbe9809e9795a3af26e ("ide: allow host drivers to specify IRQ flags") added irq_flags fields to struct ide_port_info and struct ide_host. Drivers can now set ide_port_info.irq_flags = IRQF_SHARED, while init_irq() passes ide_host.irq_flags to request_irq(). Unfortunately ide_host.irq_flags is never set, causing (on ARAnyM): | Uniform Multi-Platform E-IDE driver | ide: Falcon IDE controller | Probing IDE interface ide0... | hda: Sarge m68k, ATA DISK drive | init_irq: sa = 0 | ide0: disabled, unable to get IRQ 15 | ide0: failed to initialize IDE interface | ide0: disabling port Solve this by copying ide_port_info.irq_flags to ide_host.irq_flags in ide_host_alloc(). This bug probably affects the following IDE host drivers: - buddha - delkin_cb - falconide - gayle - ide-cs - macide - q40ide - scc_pata - sgiioc4 Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-04-07dma-mapping: replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32)Yang Hongyang
Replace all DMA_32BIT_MASK macro with DMA_BIT_MASK(32) Signed-off-by: Yang Hongyang<yanghy@cn.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-03-31ide-floppy: do not complete rq's prematurelyBorislav Petkov
... and access them afterwards. Simplify rq completing code while at it. Spotted-by: Tejun Heo <tj@kernel.org> Signed-off-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: be able to build pmac driver without IDE built-inGilles Espinasse
No reason to need IDE built-in to be able to compile pmac driver. Tested to work on 2.6.29-rc8 and 2.6.28.8 with ide and pmac as modules inside an initramfs. Signed-off-by: Gilles Espinasse <g.esp@free.fr> Cc: sam@ravnborg.org Cc: benh@kernel.crashing.org [bart: remove now superfluous IDE check] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide-pmac: IDE cable detection on Apple PowerBookTOMARI Hisanobu
As IDE cable used on Apple PowerBook/iBook laptops are always of "Short 40" type when the firmware says it's 80 conductor one, the cable detection should return ATA_CBL_PATA40_SHORT on those machines. This enables to automatically use UDMA5 even with drives that doesn't correctly detect those cables on Apple laptops. Signed-off-by: TOMARI Hisanobu <posco.grubb@gmail.com> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: benh@kernel.crashing.org [bart: beautify patch description] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: inline SELECT_DRIVE()Sergei Shtylyov
Since SELECT_DRIVE() has boiled down to a mere dev_select() method call, it now makes sense to just inline it... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: turn selectproc() method into dev_select() method (take 5)Sergei Shtylyov
Turn selectproc() method into dev_select() method by teaching it to write to the device register and moving it from 'struct ide_port_ops' to 'struct ide_tp_ops'. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Cc: benh@kernel.crashing.org Cc: petkovbb@gmail.com [bart: add ->dev_select to at91_ide.c and tx4939.c (__BIG_ENDIAN case)] Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: move data register access out of tf_{read|load}() methods (take 2)Sergei Shtylyov
Move IDE_FTFLAG_{IN|OUT}_DATA flag handling out of tf_{read|load}() methods into the only two functions where these flags actually need to be handled: do_rw_taskfile() and ide_complete_cmd()... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: call {in|out}put_data() methods from tf_{read|load}() methods (take 2)Sergei Shtylyov
Handle IDE_FTFLAG_{IN|OUT}_DATA flags in tf_{read|load}() methods by calling {in|out}put_data() methods to transfer 2 bytes -- this will allow us to move that handling out of those methods altogether... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide-io-std: shorten ide_{in|out}put_data()Sergei Shtylyov
ide_{in|out|put_data() can be somewhat shortened by merging the paths doing 16-bit I/O... Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
2009-03-31ide: rename IDE_TFLAG_IN_[HOB_]FEATURESergei Shtylyov
The feature register has never been readable -- when its location is read, one gets the error register value; hence rename IDE_TFLAG_IN_[HOB_]FEATURE into IDE_TFLAG_IN_[HOB_]ERROR and introduce the 'hob_error' field into the 'struct ide_taskfile' (despite the error register not really depending on the HOB bit). Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>