ide: pass 'hwif *' instead of 'drive *' to ->OUTBSYNC method
There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
Родитель
1357214461
Коммит
f8c4bd0ab2
|
@ -437,7 +437,7 @@ static ide_startstop_t ide_atapi_error(ide_drive_t *drive, struct request *rq, u
|
||||||
|
|
||||||
if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
|
if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
|
||||||
/* force an abort */
|
/* force an abort */
|
||||||
hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE,
|
hwif->OUTBSYNC(hwif, WIN_IDLEIMMEDIATE,
|
||||||
hwif->io_ports.command_addr);
|
hwif->io_ports.command_addr);
|
||||||
|
|
||||||
if (rq->errors >= ERROR_MAX) {
|
if (rq->errors >= ERROR_MAX) {
|
||||||
|
|
|
@ -42,7 +42,7 @@ static void ide_outb (u8 val, unsigned long port)
|
||||||
outb(val, port);
|
outb(val, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ide_outbsync (ide_drive_t *drive, u8 addr, unsigned long port)
|
static void ide_outbsync(ide_hwif_t *hwif, u8 addr, unsigned long port)
|
||||||
{
|
{
|
||||||
outb(addr, port);
|
outb(addr, port);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ static void ide_mm_outb (u8 value, unsigned long port)
|
||||||
writeb(value, (void __iomem *) port);
|
writeb(value, (void __iomem *) port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ide_mm_outbsync (ide_drive_t *drive, u8 value, unsigned long port)
|
static void ide_mm_outbsync(ide_hwif_t *hwif, u8 value, unsigned long port)
|
||||||
{
|
{
|
||||||
writeb(value, (void __iomem *) port);
|
writeb(value, (void __iomem *) port);
|
||||||
}
|
}
|
||||||
|
@ -686,7 +686,7 @@ int ide_driveid_update(ide_drive_t *drive)
|
||||||
SELECT_MASK(drive, 1);
|
SELECT_MASK(drive, 1);
|
||||||
ide_set_irq(drive, 0);
|
ide_set_irq(drive, 0);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
hwif->OUTBSYNC(drive, WIN_IDENTIFY, hwif->io_ports.command_addr);
|
hwif->OUTBSYNC(hwif, WIN_IDENTIFY, hwif->io_ports.command_addr);
|
||||||
timeout = jiffies + WAIT_WORSTCASE;
|
timeout = jiffies + WAIT_WORSTCASE;
|
||||||
do {
|
do {
|
||||||
if (time_after(jiffies, timeout)) {
|
if (time_after(jiffies, timeout)) {
|
||||||
|
@ -773,7 +773,7 @@ int ide_config_drive_speed(ide_drive_t *drive, u8 speed)
|
||||||
ide_set_irq(drive, 0);
|
ide_set_irq(drive, 0);
|
||||||
hwif->OUTB(speed, io_ports->nsect_addr);
|
hwif->OUTB(speed, io_ports->nsect_addr);
|
||||||
hwif->OUTB(SETFEATURES_XFER, io_ports->feature_addr);
|
hwif->OUTB(SETFEATURES_XFER, io_ports->feature_addr);
|
||||||
hwif->OUTBSYNC(drive, WIN_SETFEATURES, io_ports->command_addr);
|
hwif->OUTBSYNC(hwif, WIN_SETFEATURES, io_ports->command_addr);
|
||||||
if (drive->quirk_list == 2)
|
if (drive->quirk_list == 2)
|
||||||
ide_set_irq(drive, 1);
|
ide_set_irq(drive, 1);
|
||||||
|
|
||||||
|
@ -881,7 +881,7 @@ void ide_execute_command(ide_drive_t *drive, u8 cmd, ide_handler_t *handler,
|
||||||
|
|
||||||
spin_lock_irqsave(&ide_lock, flags);
|
spin_lock_irqsave(&ide_lock, flags);
|
||||||
__ide_set_handler(drive, handler, timeout, expiry);
|
__ide_set_handler(drive, handler, timeout, expiry);
|
||||||
hwif->OUTBSYNC(drive, cmd, hwif->io_ports.command_addr);
|
hwif->OUTBSYNC(hwif, cmd, hwif->io_ports.command_addr);
|
||||||
/*
|
/*
|
||||||
* Drive takes 400nS to respond, we must avoid the IRQ being
|
* Drive takes 400nS to respond, we must avoid the IRQ being
|
||||||
* serviced before that.
|
* serviced before that.
|
||||||
|
@ -899,7 +899,7 @@ void ide_execute_pkt_cmd(ide_drive_t *drive)
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
spin_lock_irqsave(&ide_lock, flags);
|
spin_lock_irqsave(&ide_lock, flags);
|
||||||
hwif->OUTBSYNC(drive, WIN_PACKETCMD, hwif->io_ports.command_addr);
|
hwif->OUTBSYNC(hwif, WIN_PACKETCMD, hwif->io_ports.command_addr);
|
||||||
ndelay(400);
|
ndelay(400);
|
||||||
spin_unlock_irqrestore(&ide_lock, flags);
|
spin_unlock_irqrestore(&ide_lock, flags);
|
||||||
}
|
}
|
||||||
|
@ -1094,7 +1094,7 @@ static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi)
|
||||||
pre_reset(drive);
|
pre_reset(drive);
|
||||||
SELECT_DRIVE(drive);
|
SELECT_DRIVE(drive);
|
||||||
udelay (20);
|
udelay (20);
|
||||||
hwif->OUTBSYNC(drive, WIN_SRST, io_ports->command_addr);
|
hwif->OUTBSYNC(hwif, WIN_SRST, io_ports->command_addr);
|
||||||
ndelay(400);
|
ndelay(400);
|
||||||
hwgroup->poll_timeout = jiffies + WAIT_WORSTCASE;
|
hwgroup->poll_timeout = jiffies + WAIT_WORSTCASE;
|
||||||
hwgroup->polling = 1;
|
hwgroup->polling = 1;
|
||||||
|
@ -1125,14 +1125,14 @@ static ide_startstop_t do_reset1 (ide_drive_t *drive, int do_not_try_atapi)
|
||||||
* recover from reset very quickly, saving us the first 50ms wait time.
|
* recover from reset very quickly, saving us the first 50ms wait time.
|
||||||
*/
|
*/
|
||||||
/* set SRST and nIEN */
|
/* set SRST and nIEN */
|
||||||
hwif->OUTBSYNC(drive, drive->ctl|6, io_ports->ctl_addr);
|
hwif->OUTBSYNC(hwif, drive->ctl | 6, io_ports->ctl_addr);
|
||||||
/* more than enough time */
|
/* more than enough time */
|
||||||
udelay(10);
|
udelay(10);
|
||||||
if (drive->quirk_list == 2)
|
if (drive->quirk_list == 2)
|
||||||
ctl = drive->ctl; /* clear SRST and nIEN */
|
ctl = drive->ctl; /* clear SRST and nIEN */
|
||||||
else
|
else
|
||||||
ctl = drive->ctl | 2; /* clear SRST, leave nIEN */
|
ctl = drive->ctl | 2; /* clear SRST, leave nIEN */
|
||||||
hwif->OUTBSYNC(drive, ctl, io_ports->ctl_addr);
|
hwif->OUTBSYNC(hwif, ctl, io_ports->ctl_addr);
|
||||||
/* more than enough time */
|
/* more than enough time */
|
||||||
udelay(10);
|
udelay(10);
|
||||||
hwgroup->poll_timeout = jiffies + WAIT_WORSTCASE;
|
hwgroup->poll_timeout = jiffies + WAIT_WORSTCASE;
|
||||||
|
|
|
@ -293,7 +293,7 @@ static int actual_try_to_identify (ide_drive_t *drive, u8 cmd)
|
||||||
hwif->OUTB(0, io_ports->feature_addr);
|
hwif->OUTB(0, io_ports->feature_addr);
|
||||||
|
|
||||||
/* ask drive for ID */
|
/* ask drive for ID */
|
||||||
hwif->OUTBSYNC(drive, cmd, io_ports->command_addr);
|
hwif->OUTBSYNC(hwif, cmd, hwif->io_ports.command_addr);
|
||||||
|
|
||||||
timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
|
timeout = ((cmd == WIN_IDENTIFY) ? WAIT_WORSTCASE : WAIT_PIDENTIFY) / 2;
|
||||||
timeout += jiffies;
|
timeout += jiffies;
|
||||||
|
@ -480,7 +480,7 @@ static int do_probe (ide_drive_t *drive, u8 cmd)
|
||||||
msleep(50);
|
msleep(50);
|
||||||
SELECT_DRIVE(drive);
|
SELECT_DRIVE(drive);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
hwif->OUTBSYNC(drive, WIN_SRST, io_ports->command_addr);
|
hwif->OUTBSYNC(hwif, WIN_SRST, io_ports->command_addr);
|
||||||
(void)ide_busy_sleep(hwif);
|
(void)ide_busy_sleep(hwif);
|
||||||
rc = try_to_identify(drive, cmd);
|
rc = try_to_identify(drive, cmd);
|
||||||
}
|
}
|
||||||
|
@ -516,7 +516,7 @@ static void enable_nest (ide_drive_t *drive)
|
||||||
printk("%s: enabling %s -- ", hwif->name, drive->id->model);
|
printk("%s: enabling %s -- ", hwif->name, drive->id->model);
|
||||||
SELECT_DRIVE(drive);
|
SELECT_DRIVE(drive);
|
||||||
msleep(50);
|
msleep(50);
|
||||||
hwif->OUTBSYNC(drive, EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr);
|
hwif->OUTBSYNC(hwif, EXABYTE_ENABLE_NEST, hwif->io_ports.command_addr);
|
||||||
|
|
||||||
if (ide_busy_sleep(hwif)) {
|
if (ide_busy_sleep(hwif)) {
|
||||||
printk(KERN_CONT "failed (timeout)\n");
|
printk(KERN_CONT "failed (timeout)\n");
|
||||||
|
|
|
@ -117,7 +117,7 @@ ide_startstop_t do_rw_taskfile (ide_drive_t *drive, ide_task_t *task)
|
||||||
switch (task->data_phase) {
|
switch (task->data_phase) {
|
||||||
case TASKFILE_MULTI_OUT:
|
case TASKFILE_MULTI_OUT:
|
||||||
case TASKFILE_OUT:
|
case TASKFILE_OUT:
|
||||||
hwif->OUTBSYNC(drive, tf->command, hwif->io_ports.command_addr);
|
hwif->OUTBSYNC(hwif, tf->command, hwif->io_ports.command_addr);
|
||||||
ndelay(400); /* FIXME */
|
ndelay(400); /* FIXME */
|
||||||
return pre_task_out_intr(drive, task->rq);
|
return pre_task_out_intr(drive, task->rq);
|
||||||
case TASKFILE_MULTI_IN:
|
case TASKFILE_MULTI_IN:
|
||||||
|
|
|
@ -148,11 +148,8 @@ static void scc_ide_outb(u8 addr, unsigned long port)
|
||||||
out_be32((void*)port, addr);
|
out_be32((void*)port, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void scc_ide_outbsync(ide_hwif_t *hwif, u8 addr, unsigned long port)
|
||||||
scc_ide_outbsync(ide_drive_t * drive, u8 addr, unsigned long port)
|
|
||||||
{
|
{
|
||||||
ide_hwif_t *hwif = HWIF(drive);
|
|
||||||
|
|
||||||
out_be32((void*)port, addr);
|
out_be32((void*)port, addr);
|
||||||
eieio();
|
eieio();
|
||||||
in_be32((void*)(hwif->dma_base + 0x01c));
|
in_be32((void*)(hwif->dma_base + 0x01c));
|
||||||
|
|
|
@ -480,13 +480,13 @@ pmac_ide_do_update_timings(ide_drive_t *drive)
|
||||||
pmac_ide_selectproc(drive);
|
pmac_ide_selectproc(drive);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void pmac_outbsync(ide_hwif_t *hwif, u8 value, unsigned long port)
|
||||||
pmac_outbsync(ide_drive_t *drive, u8 value, unsigned long port)
|
|
||||||
{
|
{
|
||||||
u32 tmp;
|
u32 tmp;
|
||||||
|
|
||||||
writeb(value, (void __iomem *) port);
|
writeb(value, (void __iomem *) port);
|
||||||
tmp = readl(PMAC_IDE_REG(IDE_TIMING_CONFIG));
|
tmp = readl((void __iomem *)(hwif->io_ports.data_addr
|
||||||
|
+ IDE_TIMING_CONFIG));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -257,7 +257,7 @@ idescsi_atapi_error(ide_drive_t *drive, struct request *rq, u8 stat, u8 err)
|
||||||
|
|
||||||
if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
|
if (ide_read_status(drive) & (BUSY_STAT | DRQ_STAT))
|
||||||
/* force an abort */
|
/* force an abort */
|
||||||
hwif->OUTBSYNC(drive, WIN_IDLEIMMEDIATE,
|
hwif->OUTBSYNC(hwif, WIN_IDLEIMMEDIATE,
|
||||||
hwif->io_ports.command_addr);
|
hwif->io_ports.command_addr);
|
||||||
|
|
||||||
rq->errors++;
|
rq->errors++;
|
||||||
|
|
|
@ -493,7 +493,7 @@ typedef struct hwif_s {
|
||||||
void (*ide_dma_clear_irq)(ide_drive_t *drive);
|
void (*ide_dma_clear_irq)(ide_drive_t *drive);
|
||||||
|
|
||||||
void (*OUTB)(u8 addr, unsigned long port);
|
void (*OUTB)(u8 addr, unsigned long port);
|
||||||
void (*OUTBSYNC)(ide_drive_t *drive, u8 addr, unsigned long port);
|
void (*OUTBSYNC)(struct hwif_s *hwif, u8 addr, unsigned long port);
|
||||||
|
|
||||||
u8 (*INB)(unsigned long port);
|
u8 (*INB)(unsigned long port);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче