On Sunday, June 30, 2013 1:24:27 pm Robert Ames wrote:
> I just picked up an Intel D2500CCE motherboard and was disappointed
> to find the serial ports didn't work.  There has been discussion
> about this problem here:
> 
> http://lists.freebsd.org/pipermail/freebsd-current/2013-April/040897.html
> http://lists.freebsd.org/pipermail/freebsd-current/2013-May/042088.html
> 
> As seen in the second link, Juergen Weiss was able to work around
> the problem.  This patch (for 8.4-RELEASE amd64) makes all 4 serial
> ports functional.
> 
> --- /usr/src/sys/amd64/amd64/io_apic.c.orig 2013-06-02 13:23:05.000000000 
> -0500
> +++ /usr/src/sys/amd64/amd64/io_apic.c      2013-06-28 18:52:03.000000000 
> -0500
> @@ -452,6 +452,10 @@
>         KASSERT(!(trig == INTR_TRIGGER_CONFORM || pol == 
> INTR_POLARITY_CONFORM),
>             ("%s: Conforming trigger or polarity\n", __func__));
>  
> +       if (trig == INTR_TRIGGER_EDGE && pol == INTR_POLARITY_LOW) {
> +               pol = INTR_POLARITY_HIGH;
> +       }
> +

Hmm, so this is your BIOS doing the wrong thing in its ASL.

Maybe try this:

--- //depot/user/jhb/acpipci/dev/acpica/acpi_resource.c 2011-07-22 
17:59:31.000000000 0000
+++ /home/jhb/work/p4/acpipci/dev/acpica/acpi_resource.c        2011-07-22 
17:59:31.000000000 0000
@@ -141,6 +141,10 @@
     default:
        panic("%s: bad resource type %u", __func__, res->Type);
     }
+#if defined(__amd64__) || defined(__i386__)
+    if (irq < 16 && trig == ACPI_EDGE_SENSITIVE && pol == ACPI_ACTIVE_LOW)
+           pol = ACPI_ACTIVE_HIGH;
+#endif
     BUS_CONFIG_INTR(dev, irq, (trig == ACPI_EDGE_SENSITIVE) ?
        INTR_TRIGGER_EDGE : INTR_TRIGGER_LEVEL, (pol == ACPI_ACTIVE_HIGH) ?
        INTR_POLARITY_HIGH : INTR_POLARITY_LOW);

-- 
John Baldwin
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to