Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 63711
b: refs/heads/master
c: eba8448
h: refs/heads/master
i:
  63709: 197006e
  63707: 41473f2
  63703: 2e53035
  63695: eb16bcd
  63679: 56fc172
v: v3
  • Loading branch information
Russell King authored and Russell King committed Aug 6, 2007
1 parent 5d5aac5 commit 2cb0fb7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b8b786098b98f3b08dc8ab7cccf3963976b10336
refs/heads/master: eba84481c7424f03c792d753fe02d9d6d3609fe0
28 changes: 11 additions & 17 deletions trunk/drivers/ata/pata_icside.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,17 +330,12 @@ static void ata_dummy_noret(struct ata_port *port)
{
}

/*
* We need to shut down unused ports to prevent spurious interrupts.
* FIXME: the libata core doesn't call this function for PATA interfaces.
*/
static void pata_icside_port_disable(struct ata_port *ap)
static void pata_icside_postreset(struct ata_port *ap, unsigned int *classes)
{
struct pata_icside_state *state = ap->host->private_data;

ata_port_printk(ap, KERN_ERR, "disabling icside port\n");

ata_port_disable(ap);
if (classes[0] != ATA_DEV_NONE || classes[1] != ATA_DEV_NONE)
return ata_std_postreset(ap, classes);

state->port[ap->port_no].disabled = 1;

Expand All @@ -356,6 +351,12 @@ static void pata_icside_port_disable(struct ata_port *ap)
}
}

static void pata_icside_error_handler(struct ata_port *ap)
{
ata_bmdma_drive_eh(ap, ata_std_prereset, ata_std_softreset, NULL,
pata_icside_postreset);
}

static u8 pata_icside_irq_ack(struct ata_port *ap, unsigned int chk_drq)
{
unsigned int bits = chk_drq ? ATA_BUSY | ATA_DRQ : ATA_BUSY;
Expand All @@ -374,7 +375,7 @@ static u8 pata_icside_irq_ack(struct ata_port *ap, unsigned int chk_drq)
}

static struct ata_port_operations pata_icside_port_ops = {
.port_disable = pata_icside_port_disable,
.port_disable = ata_port_disable,

.set_dmamode = pata_icside_set_dmamode,

Expand All @@ -397,7 +398,7 @@ static struct ata_port_operations pata_icside_port_ops = {

.freeze = ata_bmdma_freeze,
.thaw = ata_bmdma_thaw,
.error_handler = ata_bmdma_error_handler,
.error_handler = pata_icside_error_handler,
.post_internal_cmd = pata_icside_bmdma_stop,

.irq_clear = ata_dummy_noret,
Expand Down Expand Up @@ -484,13 +485,6 @@ static int __devinit pata_icside_register_v6(struct pata_icside_info *info)
state->port[0].port_sel = sel;
state->port[1].port_sel = sel | 1;

/*
* FIXME: work around libata's aversion to calling port_disable.
* This permanently disables interrupts on port 0 - bad luck if
* you have a drive on that port.
*/
state->port[0].disabled = 1;

info->base = easi_base;
info->irqops = &pata_icside_ops_arcin_v6;
info->nr_ports = 2;
Expand Down

0 comments on commit 2cb0fb7

Please sign in to comment.