summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2010-06-05 16:25:25 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2010-06-05 16:25:25 +0000
commitf1e9317c1369852cbddef0bad6db14a602f93a08 (patch)
tree7ff48fd39a42f800e9d99008aad33788dd61215c /sys/dev/ata
parent000bf61c7ba7fc8f3fc8c7899c5133555a482a94 (diff)
downloadFreeBSD-src-f1e9317c1369852cbddef0bad6db14a602f93a08.zip
FreeBSD-src-f1e9317c1369852cbddef0bad6db14a602f93a08.tar.gz
Partially revert r208162 while waiting for review on a more comprehensive
fix. On Apple OpenPICs, the low/high bit of the interrupt sense is only respected for interrupt 0. We currently erroneously program all OpenPIC interrupts level high instead of level low by default, which only matters for some G5 systems where the SATA controllers use IRQ 0. This change is a quick fix that will be reverted once the effect of changing the default interrupt sense on embedded systems is known. MFC after: 3 days
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/chipsets/ata-serverworks.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/ata/chipsets/ata-serverworks.c b/sys/dev/ata/chipsets/ata-serverworks.c
index 8e6e595..87fcec3 100644
--- a/sys/dev/ata/chipsets/ata-serverworks.c
+++ b/sys/dev/ata/chipsets/ata-serverworks.c
@@ -41,6 +41,9 @@ __FBSDID("$FreeBSD$");
#include <sys/sema.h>
#include <sys/taskqueue.h>
#include <vm/uma.h>
+#ifdef __powerpc__
+#include <machine/intr_machdep.h>
+#endif
#include <machine/stdarg.h>
#include <machine/resource.h>
#include <machine/bus.h>
@@ -217,6 +220,10 @@ ata_serverworks_ch_attach(device_t dev)
ch->hw.tf_write = ata_serverworks_tf_write;
#ifdef __powerpc__
ch->hw.status = ata_serverworks_status;
+
+ /* Make sure that our interrupt is edge triggered */
+ powerpc_config_intr(bus_get_resource_start(device_get_parent(dev),
+ SYS_RES_IRQ, 0), INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW);
#endif
if (ctlr->chip->chipid == ATA_K2) {
OpenPOWER on IntegriCloud