diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2010-06-05 16:25:25 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2010-06-05 16:25:25 +0000 |
commit | f1e9317c1369852cbddef0bad6db14a602f93a08 (patch) | |
tree | 7ff48fd39a42f800e9d99008aad33788dd61215c /sys/dev/ata | |
parent | 000bf61c7ba7fc8f3fc8c7899c5133555a482a94 (diff) | |
download | FreeBSD-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.c | 7 |
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) { |