mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-14 09:09:56 +00:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6: ide: remove stale comment from ide-lib.c ide: fix comment in init_irq() ide: ide_init_port() bugfix ide-disk: fix flush requests (take 2) ide: introduce CONFIG_BLK_DEV_IDEDMA_SFF option bast-ide: build fix ide-tape: remove never executed code ide: fix ide/legacy/gayle.c compilation ide-cd: replace ntohs with generic byteorder macro be16_to_cpu ide: remove stale version number pdc202xx_old: always enable burst mode palm_bk3710: use struct ide_port_info palm_bk3710: port initialization/probing bugfix palm_bk3710: fix ide_unregister() usage palm_bk3710: ide_register_hw() -> ide_device_add() ide: insert BUG_ON() into __ide_set_handler() (take 2) cs5520: remove stale comment ide: another possible ide panic fix for blk-end-request
This commit is contained in:
commit
eedcdefb1a
@ -378,6 +378,9 @@ config BLK_DEV_IDEPNP
|
||||
would like the kernel to automatically detect and activate
|
||||
it, say Y here.
|
||||
|
||||
config BLK_DEV_IDEDMA_SFF
|
||||
bool
|
||||
|
||||
if PCI
|
||||
|
||||
comment "PCI IDE chipsets support"
|
||||
@ -459,6 +462,7 @@ config BLK_DEV_RZ1000
|
||||
config BLK_DEV_IDEDMA_PCI
|
||||
bool
|
||||
select BLK_DEV_IDEPCI
|
||||
select BLK_DEV_IDEDMA_SFF
|
||||
|
||||
config BLK_DEV_AEC62XX
|
||||
tristate "AEC62XX chipset support"
|
||||
@ -688,23 +692,6 @@ config BLK_DEV_PDC202XX_OLD
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config PDC202XX_BURST
|
||||
bool "Special UDMA Feature"
|
||||
depends on BLK_DEV_PDC202XX_OLD
|
||||
help
|
||||
This option causes the pdc202xx driver to enable UDMA modes on the
|
||||
PDC202xx even when the PDC202xx BIOS has not done so.
|
||||
|
||||
It was originally designed for the PDC20246/Ultra33, whose BIOS will
|
||||
only setup UDMA on the first two PDC20246 cards. It has also been
|
||||
used successfully on a PDC20265/Ultra100, allowing use of UDMA modes
|
||||
when the PDC20265 BIOS has been disabled (for faster boot up).
|
||||
|
||||
Please read the comments at the top of
|
||||
<file:drivers/ide/pci/pdc202xx_old.c>.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config BLK_DEV_PDC202XX_NEW
|
||||
tristate "PROMISE PDC202{68|69|70|71|75|76|77} support"
|
||||
select BLK_DEV_IDEDMA_PCI
|
||||
@ -1016,7 +1003,7 @@ config BLK_DEV_Q40IDE
|
||||
config BLK_DEV_PALMCHIP_BK3710
|
||||
tristate "Palmchip bk3710 IDE controller support"
|
||||
depends on ARCH_DAVINCI
|
||||
select BLK_DEV_IDEDMA_PCI
|
||||
select BLK_DEV_IDEDMA_SFF
|
||||
help
|
||||
Say Y here if you want to support the onchip IDE controller on the
|
||||
TI DaVinci SoC
|
||||
@ -1124,7 +1111,8 @@ config BLK_DEV_UMC8672
|
||||
endif
|
||||
|
||||
config BLK_DEV_IDEDMA
|
||||
def_bool BLK_DEV_IDEDMA_PCI || BLK_DEV_IDEDMA_PMAC || BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
|
||||
def_bool BLK_DEV_IDEDMA_SFF || BLK_DEV_IDEDMA_PMAC || \
|
||||
BLK_DEV_IDEDMA_ICS || BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
|
||||
|
||||
config IDE_ARCH_OBSOLETE_INIT
|
||||
def_bool ALPHA || (ARM && !ARCH_L7200) || BLACKFIN || X86 || IA64 || M32R || MIPS || PARISC || PPC || (SUPERH64 && BLK_DEV_IDEPCI) || SPARC
|
||||
|
@ -21,12 +21,7 @@
|
||||
#include <asm/arch/bast-map.h>
|
||||
#include <asm/arch/bast-irq.h>
|
||||
|
||||
/* list of registered interfaces */
|
||||
static ide_hwif_t *ifs[2];
|
||||
|
||||
static int __init
|
||||
bastide_register(unsigned int base, unsigned int aux, int irq,
|
||||
ide_hwif_t **hwif)
|
||||
static int __init bastide_register(unsigned int base, unsigned int aux, int irq)
|
||||
{
|
||||
ide_hwif_t *hwif;
|
||||
hw_regs_t hw;
|
||||
@ -76,8 +71,9 @@ static int __init bastide_init(void)
|
||||
|
||||
printk("BAST: IDE driver, (c) 2003-2004 Simtec Electronics\n");
|
||||
|
||||
bastide_register(BAST_VA_IDEPRI, BAST_VA_IDEPRIAUX, IRQ_IDE0, &ifs[0]);
|
||||
bastide_register(BAST_VA_IDESEC, BAST_VA_IDESECAUX, IRQ_IDE1, &ifs[1]);
|
||||
bastide_register(BAST_VA_IDEPRI, BAST_VA_IDEPRIAUX, IRQ_IDE0);
|
||||
bastide_register(BAST_VA_IDESEC, BAST_VA_IDESECAUX, IRQ_IDE1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -311,15 +311,37 @@ static void __devinit palm_bk3710_chipinit(void __iomem *base)
|
||||
palm_bk3710_setpiomode(base, NULL, 0, 600, 0);
|
||||
palm_bk3710_setpiomode(base, NULL, 1, 600, 0);
|
||||
}
|
||||
|
||||
static u8 __devinit palm_bk3710_cable_detect(ide_hwif_t *hwif)
|
||||
{
|
||||
return ATA_CBL_PATA80;
|
||||
}
|
||||
|
||||
static void __devinit palm_bk3710_init_hwif(ide_hwif_t *hwif)
|
||||
{
|
||||
hwif->set_pio_mode = palm_bk3710_set_pio_mode;
|
||||
hwif->set_dma_mode = palm_bk3710_set_dma_mode;
|
||||
|
||||
hwif->cable_detect = palm_bk3710_cable_detect;
|
||||
}
|
||||
|
||||
static const struct ide_port_info __devinitdata palm_bk3710_port_info = {
|
||||
.init_hwif = palm_bk3710_init_hwif,
|
||||
.host_flags = IDE_HFLAG_NO_DMA, /* hack (no PCI) */
|
||||
.pio_mask = ATA_PIO4,
|
||||
.udma_mask = ATA_UDMA4, /* (input clk 99MHz) */
|
||||
.mwdma_mask = ATA_MWDMA2,
|
||||
};
|
||||
|
||||
static int __devinit palm_bk3710_probe(struct platform_device *pdev)
|
||||
{
|
||||
hw_regs_t ide_ctlr_info;
|
||||
int index = 0;
|
||||
int pribase;
|
||||
struct clk *clkp;
|
||||
struct resource *mem, *irq;
|
||||
ide_hwif_t *hwif;
|
||||
void __iomem *base;
|
||||
int pribase, i;
|
||||
hw_regs_t hw;
|
||||
u8 idx[4] = { 0xff, 0xff, 0xff, 0xff };
|
||||
|
||||
clkp = clk_get(NULL, "IDECLK");
|
||||
if (IS_ERR(clkp))
|
||||
@ -330,7 +352,7 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
|
||||
ide_palm_clk = clk_get_rate(ideclkp)/100000;
|
||||
ide_palm_clk = (10000/ide_palm_clk) + 1;
|
||||
/* Register the IDE interface with Linux ATA Interface */
|
||||
memset(&ide_ctlr_info, 0, sizeof(ide_ctlr_info));
|
||||
memset(&hw, 0, sizeof(hw));
|
||||
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (mem == NULL) {
|
||||
@ -349,32 +371,42 @@ static int __devinit palm_bk3710_probe(struct platform_device *pdev)
|
||||
palm_bk3710_chipinit(base);
|
||||
|
||||
pribase = mem->start + IDE_PALM_ATA_PRI_REG_OFFSET;
|
||||
for (index = 0; index < IDE_NR_PORTS - 2; index++)
|
||||
ide_ctlr_info.io_ports[index] = pribase + index;
|
||||
ide_ctlr_info.io_ports[IDE_CONTROL_OFFSET] = mem->start +
|
||||
for (i = 0; i < IDE_NR_PORTS - 2; i++)
|
||||
hw.io_ports[i] = pribase + i;
|
||||
hw.io_ports[IDE_CONTROL_OFFSET] = mem->start +
|
||||
IDE_PALM_ATA_PRI_CTL_OFFSET;
|
||||
ide_ctlr_info.irq = irq->start;
|
||||
ide_ctlr_info.chipset = ide_palm3710;
|
||||
hw.irq = irq->start;
|
||||
hw.chipset = ide_palm3710;
|
||||
|
||||
if (ide_register_hw(&ide_ctlr_info, NULL, &hwif) < 0) {
|
||||
printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
hwif = ide_deprecated_find_port(hw.io_ports[IDE_DATA_OFFSET]);
|
||||
if (hwif == NULL)
|
||||
goto out;
|
||||
|
||||
i = hwif->index;
|
||||
|
||||
if (hwif->present)
|
||||
ide_unregister(i, 0, 0);
|
||||
else if (!hwif->hold)
|
||||
ide_init_port_data(hwif, i);
|
||||
|
||||
ide_init_port_hw(hwif, &hw);
|
||||
|
||||
hwif->set_pio_mode = &palm_bk3710_set_pio_mode;
|
||||
hwif->set_dma_mode = &palm_bk3710_set_dma_mode;
|
||||
hwif->mmio = 1;
|
||||
default_hwif_mmiops(hwif);
|
||||
hwif->cbl = ATA_CBL_PATA80;
|
||||
hwif->ultra_mask = 0x1f; /* Ultra DMA Mode 4 Max
|
||||
(input clk 99MHz) */
|
||||
hwif->mwdma_mask = 0x7;
|
||||
hwif->drives[0].autotune = 1;
|
||||
hwif->drives[1].autotune = 1;
|
||||
|
||||
ide_setup_dma(hwif, mem->start);
|
||||
|
||||
idx[0] = i;
|
||||
|
||||
ide_device_add(idx, &palm_bk3710_port_info);
|
||||
|
||||
if (!hwif->present)
|
||||
goto out;
|
||||
|
||||
return 0;
|
||||
out:
|
||||
printk(KERN_WARNING "Palm Chip BK3710 IDE Register Fail\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static struct platform_driver platform_bk_driver = {
|
||||
|
@ -1555,7 +1555,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
|
||||
if (stat)
|
||||
return stat;
|
||||
|
||||
toc->hdr.toc_length = ntohs (toc->hdr.toc_length);
|
||||
toc->hdr.toc_length = be16_to_cpu(toc->hdr.toc_length);
|
||||
|
||||
if (info->cd_flags & IDE_CD_FLAG_TOCTRACKS_AS_BCD) {
|
||||
toc->hdr.first_track = BCD2BIN(toc->hdr.first_track);
|
||||
|
@ -590,20 +590,24 @@ static ide_proc_entry_t idedisk_proc[] = {
|
||||
static void idedisk_prepare_flush(struct request_queue *q, struct request *rq)
|
||||
{
|
||||
ide_drive_t *drive = q->queuedata;
|
||||
ide_task_t task;
|
||||
ide_task_t *task = kmalloc(sizeof(*task), GFP_ATOMIC);
|
||||
|
||||
memset(&task, 0, sizeof(task));
|
||||
/* FIXME: map struct ide_taskfile on rq->cmd[] */
|
||||
BUG_ON(task == NULL);
|
||||
|
||||
memset(task, 0, sizeof(*task));
|
||||
if (ide_id_has_flush_cache_ext(drive->id) &&
|
||||
(drive->capacity64 >= (1UL << 28)))
|
||||
task.tf.command = WIN_FLUSH_CACHE_EXT;
|
||||
task->tf.command = WIN_FLUSH_CACHE_EXT;
|
||||
else
|
||||
task.tf.command = WIN_FLUSH_CACHE;
|
||||
task.tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE;
|
||||
task.data_phase = TASKFILE_NO_DATA;
|
||||
task->tf.command = WIN_FLUSH_CACHE;
|
||||
task->tf_flags = IDE_TFLAG_OUT_TF | IDE_TFLAG_OUT_DEVICE |
|
||||
IDE_TFLAG_DYN;
|
||||
task->data_phase = TASKFILE_NO_DATA;
|
||||
|
||||
rq->cmd_type = REQ_TYPE_ATA_TASKFILE;
|
||||
rq->cmd_flags |= REQ_SOFTBARRIER;
|
||||
rq->special = &task;
|
||||
rq->special = task;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -198,7 +198,7 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq)
|
||||
|
||||
EXPORT_SYMBOL_GPL(ide_build_sglist);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
/**
|
||||
* ide_build_dmatable - build IDE DMA table
|
||||
*
|
||||
@ -316,7 +316,7 @@ void ide_destroy_dmatable (ide_drive_t *drive)
|
||||
|
||||
EXPORT_SYMBOL_GPL(ide_destroy_dmatable);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
/**
|
||||
* config_drive_for_dma - attempt to activate IDE DMA
|
||||
* @drive: the drive to place in DMA mode
|
||||
@ -424,7 +424,7 @@ void ide_dma_host_set(ide_drive_t *drive, int on)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(ide_dma_host_set);
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
|
||||
|
||||
/**
|
||||
* ide_dma_off_quietly - Generic DMA kill
|
||||
@ -474,7 +474,7 @@ void ide_dma_on(ide_drive_t *drive)
|
||||
drive->hwif->dma_host_set(drive, 1);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
/**
|
||||
* ide_dma_setup - begin a DMA phase
|
||||
* @drive: target device
|
||||
@ -591,7 +591,7 @@ static int __ide_dma_test_irq(ide_drive_t *drive)
|
||||
}
|
||||
#else
|
||||
static inline int config_drive_for_dma(ide_drive_t *drive) { return 0; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
|
||||
|
||||
int __ide_dma_bad_drive (ide_drive_t *drive)
|
||||
{
|
||||
@ -840,7 +840,7 @@ void ide_check_dma_crc(ide_drive_t *drive)
|
||||
ide_dma_on(drive);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
void ide_dma_lost_irq (ide_drive_t *drive)
|
||||
{
|
||||
printk("%s: DMA interrupt recovery\n", drive->name);
|
||||
@ -1002,4 +1002,4 @@ void ide_setup_dma(ide_hwif_t *hwif, unsigned long base)
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL_GPL(ide_setup_dma);
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
|
||||
|
@ -361,17 +361,21 @@ void ide_end_drive_cmd (ide_drive_t *drive, u8 stat, u8 err)
|
||||
spin_unlock_irqrestore(&ide_lock, flags);
|
||||
|
||||
if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
|
||||
ide_task_t *args = (ide_task_t *) rq->special;
|
||||
ide_task_t *task = (ide_task_t *)rq->special;
|
||||
|
||||
if (rq->errors == 0)
|
||||
rq->errors = !OK_STAT(stat,READY_STAT,BAD_STAT);
|
||||
|
||||
if (args) {
|
||||
struct ide_taskfile *tf = &args->tf;
|
||||
rq->errors = !OK_STAT(stat, READY_STAT, BAD_STAT);
|
||||
|
||||
if (task) {
|
||||
struct ide_taskfile *tf = &task->tf;
|
||||
|
||||
tf->error = err;
|
||||
tf->status = stat;
|
||||
|
||||
ide_tf_read(drive, args);
|
||||
ide_tf_read(drive, task);
|
||||
|
||||
if (task->tf_flags & IDE_TFLAG_DYN)
|
||||
kfree(task);
|
||||
}
|
||||
} else if (blk_pm_request(rq)) {
|
||||
struct request_pm_state *pm = rq->data;
|
||||
@ -388,7 +392,8 @@ void ide_end_drive_cmd (ide_drive_t *drive, u8 stat, u8 err)
|
||||
spin_lock_irqsave(&ide_lock, flags);
|
||||
HWGROUP(drive)->rq = NULL;
|
||||
rq->errors = err;
|
||||
if (__blk_end_request(rq, (rq->errors ? -EIO : 0), 0))
|
||||
if (unlikely(__blk_end_request(rq, (rq->errors ? -EIO : 0),
|
||||
blk_rq_bytes(rq))))
|
||||
BUG();
|
||||
spin_unlock_irqrestore(&ide_lock, flags);
|
||||
}
|
||||
|
@ -786,15 +786,11 @@ static void __ide_set_handler (ide_drive_t *drive, ide_handler_t *handler,
|
||||
{
|
||||
ide_hwgroup_t *hwgroup = HWGROUP(drive);
|
||||
|
||||
if (hwgroup->handler != NULL) {
|
||||
printk(KERN_CRIT "%s: ide_set_handler: handler not null; "
|
||||
"old=%p, new=%p\n",
|
||||
drive->name, hwgroup->handler, handler);
|
||||
}
|
||||
BUG_ON(hwgroup->handler);
|
||||
hwgroup->handler = handler;
|
||||
hwgroup->expiry = expiry;
|
||||
hwgroup->timer.expires = jiffies + timeout;
|
||||
hwgroup->req_gen_timer = hwgroup->req_gen;
|
||||
hwgroup->req_gen_timer = hwgroup->req_gen;
|
||||
add_timer(&hwgroup->timer);
|
||||
}
|
||||
|
||||
@ -827,11 +823,9 @@ void ide_execute_command(ide_drive_t *drive, u8 cmd, ide_handler_t *handler,
|
||||
unsigned timeout, ide_expiry_t *expiry)
|
||||
{
|
||||
unsigned long flags;
|
||||
ide_hwgroup_t *hwgroup = HWGROUP(drive);
|
||||
ide_hwif_t *hwif = HWIF(drive);
|
||||
|
||||
spin_lock_irqsave(&ide_lock, flags);
|
||||
BUG_ON(hwgroup->handler);
|
||||
__ide_set_handler(drive, handler, timeout, expiry);
|
||||
hwif->OUTBSYNC(drive, cmd, IDE_COMMAND_REG);
|
||||
/*
|
||||
|
@ -21,15 +21,6 @@
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/*
|
||||
* IDE library routines. These are plug in code that most
|
||||
* drivers can use but occasionally may be weird enough
|
||||
* to want to do their own thing with
|
||||
*
|
||||
* Add common non I/O op stuff here. Make sure it has proper
|
||||
* kernel-doc function headers or your patch will be rejected
|
||||
*/
|
||||
|
||||
static const char *udma_str[] =
|
||||
{ "UDMA/16", "UDMA/25", "UDMA/33", "UDMA/44",
|
||||
"UDMA/66", "UDMA/100", "UDMA/133", "UDMA7" };
|
||||
|
@ -1051,7 +1051,7 @@ static int init_irq (ide_hwif_t *hwif)
|
||||
int sa = 0;
|
||||
#if defined(__mc68000__)
|
||||
sa = IRQF_SHARED;
|
||||
#endif /* __mc68000__ || CONFIG_APUS */
|
||||
#endif /* __mc68000__ */
|
||||
|
||||
if (IDE_CHIPSET_IS_PCI(hwif->chipset))
|
||||
sa = IRQF_SHARED;
|
||||
@ -1355,7 +1355,7 @@ static void ide_init_port(ide_hwif_t *hwif, unsigned int port,
|
||||
hwif->ultra_mask = d->udma_mask;
|
||||
|
||||
/* reset DMA masks only for SFF-style DMA controllers */
|
||||
if ((d->host_flags && IDE_HFLAG_NO_DMA) == 0 && hwif->dma_base == 0)
|
||||
if ((d->host_flags & IDE_HFLAG_NO_DMA) == 0 && hwif->dma_base == 0)
|
||||
hwif->swdma_mask = hwif->mwdma_mask = hwif->ultra_mask = 0;
|
||||
|
||||
if (d->host_flags & IDE_HFLAG_RQSIZE_256)
|
||||
|
@ -466,9 +466,6 @@ static void ide_tape_put(struct ide_tape_obj *tape)
|
||||
/* 0 = no tape is loaded, so we don't rewind after ejecting */
|
||||
#define IDETAPE_MEDIUM_PRESENT 9
|
||||
|
||||
/* A define for the READ BUFFER command */
|
||||
#define IDETAPE_RETRIEVE_FAULTY_BLOCK 6
|
||||
|
||||
/* Some defines for the SPACE command */
|
||||
#define IDETAPE_SPACE_OVER_FILEMARK 1
|
||||
#define IDETAPE_SPACE_TO_EOD 3
|
||||
@ -490,7 +487,6 @@ enum {
|
||||
REQ_IDETAPE_PC2 = (1 << 1), /* packet command (second stage) */
|
||||
REQ_IDETAPE_READ = (1 << 2),
|
||||
REQ_IDETAPE_WRITE = (1 << 3),
|
||||
REQ_IDETAPE_READ_BUFFER = (1 << 4),
|
||||
};
|
||||
|
||||
/* Error codes returned in rq->errors to the higher part of the driver. */
|
||||
@ -1523,29 +1519,6 @@ static void idetape_create_read_cmd(idetape_tape_t *tape, idetape_pc_t *pc,
|
||||
set_bit(PC_DMA_RECOMMENDED, &pc->flags);
|
||||
}
|
||||
|
||||
static void idetape_create_read_buffer_cmd(idetape_tape_t *tape,
|
||||
idetape_pc_t *pc, struct idetape_bh *bh)
|
||||
{
|
||||
int size = 32768;
|
||||
struct idetape_bh *p = bh;
|
||||
|
||||
idetape_init_pc(pc);
|
||||
pc->c[0] = READ_BUFFER;
|
||||
pc->c[1] = IDETAPE_RETRIEVE_FAULTY_BLOCK;
|
||||
pc->c[7] = size >> 8;
|
||||
pc->c[8] = size & 0xff;
|
||||
pc->callback = &idetape_pc_callback;
|
||||
pc->bh = bh;
|
||||
atomic_set(&bh->b_count, 0);
|
||||
pc->buffer = NULL;
|
||||
while (p) {
|
||||
atomic_set(&p->b_count, 0);
|
||||
p = p->b_reqnext;
|
||||
}
|
||||
pc->request_transfer = size;
|
||||
pc->buffer_size = size;
|
||||
}
|
||||
|
||||
static void idetape_create_write_cmd(idetape_tape_t *tape, idetape_pc_t *pc,
|
||||
unsigned int length, struct idetape_bh *bh)
|
||||
{
|
||||
@ -1655,13 +1628,6 @@ static ide_startstop_t idetape_do_request(ide_drive_t *drive,
|
||||
(struct idetape_bh *)rq->special);
|
||||
goto out;
|
||||
}
|
||||
if (rq->cmd[0] & REQ_IDETAPE_READ_BUFFER) {
|
||||
tape->postpone_cnt = 0;
|
||||
pc = idetape_next_pc_storage(drive);
|
||||
idetape_create_read_buffer_cmd(tape, pc,
|
||||
(struct idetape_bh *)rq->special);
|
||||
goto out;
|
||||
}
|
||||
if (rq->cmd[0] & REQ_IDETAPE_PC1) {
|
||||
pc = (idetape_pc_t *) rq->buffer;
|
||||
rq->cmd[0] &= ~(REQ_IDETAPE_PC1);
|
||||
|
@ -44,8 +44,6 @@
|
||||
* inspiration from lots of linux users, esp. hamish@zot.apana.org.au
|
||||
*/
|
||||
|
||||
#define REVISION "Revision: 7.00alpha2"
|
||||
|
||||
#define _IDE_C /* Tell ide.h it's really us */
|
||||
|
||||
#include <linux/module.h>
|
||||
@ -1618,7 +1616,7 @@ static int __init ide_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
printk(KERN_INFO "Uniform Multi-Platform E-IDE driver " REVISION "\n");
|
||||
printk(KERN_INFO "Uniform Multi-Platform E-IDE driver\n");
|
||||
system_bus_speed = ide_system_bus_speed();
|
||||
|
||||
printk(KERN_INFO "ide: Assuming %dMHz system bus speed "
|
||||
|
@ -94,7 +94,7 @@ static int gayle_ack_intr_a1200(ide_hwif_t *hwif)
|
||||
|
||||
static void __init gayle_setup_ports(hw_regs_t *hw, unsigned long base,
|
||||
unsigned long ctl, unsigned long irq_port,
|
||||
ide_ack_intr_t *ack_intr);
|
||||
ide_ack_intr_t *ack_intr)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -147,11 +147,6 @@ static int __devinit cs5520_init_one(struct pci_dev *dev, const struct pci_devic
|
||||
|
||||
/* We must not grab the entire device, it has 'ISA' space in its
|
||||
* BARS too and we will freak out other bits of the kernel
|
||||
*
|
||||
* pci_enable_device_bars() is going away. I replaced it with
|
||||
* IO only enable for now but I'll need confirmation this is
|
||||
* allright for that device. If not, it will need some kind of
|
||||
* quirk. --BenH.
|
||||
*/
|
||||
if (pci_enable_device_io(dev)) {
|
||||
printk(KERN_WARNING "%s: Unable to enable 55x0.\n", d->name);
|
||||
|
@ -3,26 +3,6 @@
|
||||
* Copyright (C) 2006-2007 MontaVista Software, Inc.
|
||||
* Copyright (C) 2007 Bartlomiej Zolnierkiewicz
|
||||
*
|
||||
* Promise Ultra33 cards with BIOS v1.20 through 1.28 will need this
|
||||
* compiled into the kernel if you have more than one card installed.
|
||||
* Note that BIOS v1.29 is reported to fix the problem. Since this is
|
||||
* safe chipset tuning, including this support is harmless
|
||||
*
|
||||
* Promise Ultra66 cards with BIOS v1.11 this
|
||||
* compiled into the kernel if you have more than one card installed.
|
||||
*
|
||||
* Promise Ultra100 cards.
|
||||
*
|
||||
* The latest chipset code will support the following ::
|
||||
* Three Ultra33 controllers and 12 drives.
|
||||
* 8 are UDMA supported and 4 are limited to DMA mode 2 multi-word.
|
||||
* The 8/4 ratio is a BIOS code limit by promise.
|
||||
*
|
||||
* UNLESS you enable "CONFIG_PDC202XX_BURST"
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Portions Copyright (C) 1999 Promise Technology, Inc.
|
||||
* Author: Frank Tiernan (frankt@promise.com)
|
||||
* Released under terms of General Public License
|
||||
@ -344,7 +324,6 @@ static void __devinit init_dma_pdc202xx(ide_hwif_t *hwif, unsigned long dmabase)
|
||||
(primary_mode & 1) ? "MASTER" : "PCI",
|
||||
(secondary_mode & 1) ? "MASTER" : "PCI" );
|
||||
|
||||
#ifdef CONFIG_PDC202XX_BURST
|
||||
if (!(udma_speed_flag & 1)) {
|
||||
printk(KERN_INFO "%s: FORCING BURST BIT 0x%02x->0x%02x ",
|
||||
hwif->cds->name, udma_speed_flag,
|
||||
@ -352,7 +331,6 @@ static void __devinit init_dma_pdc202xx(ide_hwif_t *hwif, unsigned long dmabase)
|
||||
outb(udma_speed_flag | 1, dmabase | 0x1f);
|
||||
printk("%sACTIVE\n", (inb(dmabase | 0x1f) & 1) ? "" : "IN");
|
||||
}
|
||||
#endif /* CONFIG_PDC202XX_BURST */
|
||||
|
||||
ide_setup_dma(hwif, dmabase);
|
||||
}
|
||||
|
@ -906,6 +906,8 @@ enum {
|
||||
IDE_TFLAG_IN_DEVICE,
|
||||
/* force 16-bit I/O operations */
|
||||
IDE_TFLAG_IO_16BIT = (1 << 30),
|
||||
/* ide_task_t was allocated using kmalloc() */
|
||||
IDE_TFLAG_DYN = (1 << 31),
|
||||
};
|
||||
|
||||
struct ide_taskfile {
|
||||
@ -998,8 +1000,7 @@ extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *o
|
||||
void ide_pci_setup_ports(struct pci_dev *, const struct ide_port_info *, int, u8 *);
|
||||
void ide_setup_pci_noise(struct pci_dev *, const struct ide_port_info *);
|
||||
|
||||
/* FIXME: palm_bk3710 uses BLK_DEV_IDEDMA_PCI without BLK_DEV_IDEPCI! */
|
||||
#if defined(CONFIG_BLK_DEV_IDEPCI) && defined(CONFIG_BLK_DEV_IDEDMA_PCI)
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
void ide_hwif_setup_dma(ide_hwif_t *, const struct ide_port_info *);
|
||||
#else
|
||||
static inline void ide_hwif_setup_dma(ide_hwif_t *hwif,
|
||||
@ -1146,7 +1147,7 @@ ide_startstop_t ide_dma_intr(ide_drive_t *);
|
||||
int ide_build_sglist(ide_drive_t *, struct request *);
|
||||
void ide_destroy_dmatable(ide_drive_t *);
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifdef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
extern int ide_build_dmatable(ide_drive_t *, struct request *);
|
||||
extern int ide_release_dma(ide_hwif_t *);
|
||||
extern void ide_setup_dma(ide_hwif_t *, unsigned long);
|
||||
@ -1157,7 +1158,7 @@ extern void ide_dma_start(ide_drive_t *);
|
||||
extern int __ide_dma_end(ide_drive_t *);
|
||||
extern void ide_dma_lost_irq(ide_drive_t *);
|
||||
extern void ide_dma_timeout(ide_drive_t *);
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_PCI */
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA_SFF */
|
||||
|
||||
#else
|
||||
static inline int ide_id_dma_bug(ide_drive_t *drive) { return 0; }
|
||||
@ -1171,7 +1172,7 @@ static inline int ide_set_dma(ide_drive_t *drive) { return 1; }
|
||||
static inline void ide_check_dma_crc(ide_drive_t *drive) { ; }
|
||||
#endif /* CONFIG_BLK_DEV_IDEDMA */
|
||||
|
||||
#ifndef CONFIG_BLK_DEV_IDEDMA_PCI
|
||||
#ifndef CONFIG_BLK_DEV_IDEDMA_SFF
|
||||
static inline void ide_release_dma(ide_hwif_t *drive) {;}
|
||||
#endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user