On Saturday 04 July 2009 11:02:36 Harald Gutmann wrote: > On Thursday 02 July 2009 23:26:34 Peter Stuge wrote: > > Harald Gutmann wrote: > > > > Is the port interrupt-driven, or polling, on your system, Andreas? > > > > > > Here on my system it says also polling, like on Andreas system. > > > What is the difference between interrupt driven and polling? > > > > Interrupt driven means the port has an interrupt assigned to it, and > > that communication over the port is event based. > > > > Polling means there is a timer running in the kernel which will check > > the port for activity every few milliseconds or something. > > > > > On vendor bios it is interrupt-driven. > > > Is an ACPI part missing to get it interrupt driven? > > > > I think so, yes. > > So, I've added the missing ACPI part, but it seems that some more work is > needed to get parport interrupt driven working. I just did a mistake and set no address in the IO Section.
There's already another patch on the list (which was filtered by my spam-filter, and therefore I did the job again). The difference between my patch, and the one from Andreas are minimal, but I added the ECP device which is necessary to get Parport full functional (hopefully I did everything correct, as I can't test this without Parport devices.) The attached patch activates changes the LPT port from polling to interrupt- driven, and should be fine. Signed-off-by: Harald Gutmann <[email protected]> Kind regards, Harald > The dmesg output changes a little bit, and also mentions IRQ7, but lp0 is > still noticed as polling: > [ 745.974254] parport_pc 00:04: reported by Plug and Play ACPI > [ 745.974371] parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE] > [ 746.104129] parport0: irq 7 detected > [ 751.914593] ppdev: user-space parallel port driver > [ 770.953504] lp0: using parport0 (polling). > > I think that it is necessary to set some irq bit to get it working fine. > This idea is from the vendors dsdt.asl [1] and the LPT1 (starting at line > 5374) section of it. > Looking at that part there is something noticed about INTR which could be > the IRQ bit I assume that this is needed. > > Can anyone help me out here a little bit? > > [1] http://coreboot.pastebin.com/f3e965943 > > > > > > //Peter
Index: dsdt.asl
===================================================================
--- dsdt.asl (revision 4397)
+++ dsdt.asl (working copy)
@@ -214,12 +214,12 @@
}
Method (_CRS, 0, NotSerialized)
{
- Name (TMP, ResourceTemplate () {
+ Name (TMP0, ResourceTemplate () {
IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
IRQNoFlags () {1}
})
- Return (TMP)
+ Return (TMP0)
}
}
@@ -233,12 +233,12 @@
}
Method (_CRS, 0, NotSerialized)
{
- Name (TMP, ResourceTemplate () {
+ Name (TMP1, ResourceTemplate () {
IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
IRQNoFlags () {12}
})
- Return (TMP)
+ Return (TMP1)
}
}
@@ -254,13 +254,49 @@
{
Name (BUF0, ResourceTemplate () {
IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
- IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
+ IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
IRQNoFlags () {6}
DMA (Compatibility, NotBusMaster, Transfer8) {2}
})
Return (BUF0)
}
}
+ /* Parallel Port */
+ Device (LPT1)
+ {
+ Name (_HID, EisaId ("PNP0400"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0f)
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF1, ResourceTemplate () {
+ IO (Decode16, 0x0378, 0x0378, 0x01, 0x08)
+ IRQNoFlags () {7}
+ })
+ Return (BUF1)
+ }
+ }
+ /* Parallel Port ECP */
+ Device (ECP1)
+ {
+ Name (_HID, EisaId ("PNP0401"))
+ Method (_STA, 0, NotSerialized)
+ {
+ Return (0x0f)
+ }
+ Method (_CRS, 0, NotSerialized)
+ {
+ Name (BUF1, ResourceTemplate () {
+ IO (Decode16, 0x0378, 0x0378, 0x01, 0x04)
+ IO (Decode16, 0x0778, 0x0778, 0x01, 0x04)
+ IRQNoFlags() {7}
+ DMA (Compatibility, NotBusMaster, Transfer8) {0,1,3}
+ })
+ Return (BUF1)
+ }
+ }
}
}
}
signature.asc
Description: This is a digitally signed message part.
-- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

