Re: [PATCH linux-2.6.13-rc3] SATA: rewritten sil24 driver
From: Tejun Heo <hidden>
Date: 2005-08-04 02:20:33
Also in:
lkml
Hello, Edward. One more question.
quoted
quoted
I think this will work (adapted from sil_interrupt(): static void sil_irq_clear(struct ata_port *ap) { struct sil_port_priv *pp = ap->private_data; struct Port_Registers *port_base = pp->pregs; unsigned long port_int; port_int = readl((void *)&port_base->IntStatus); writel(port_int, &port_base->IntStatus); } I'm assuming that this entry point is expected to clear all interrupts, no?Correct.I'll verify with the error register clearing part of the original driver and submit a patch.
Command completion interrupt is automatcally cleared by reading PORT_SLOT_STAT register (SlotStatus in the original driver), and error registers should be manually cleared by writing to PORT_IRQ_STAT (IntStatus). I agree that above code should clear both. Just wanna verify. Have you tested it and/or do you have any information confirming this? If we don't have any further info, I think we should read PORT_SLOT_STAT before clearing PORT_IRQ_STAT to be on the safe side. Thanks. -- tejun