Mailinglist Archive: opensuse-bugs (19817 mails)

< Previous Next >
[Bug 375836] parallel driver grabs IRQ14 preventing legacy SFF ATA controller from working
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Fri, 16 May 2008 10:21:21 -0600 (MDT)
  • Message-id: <20080516162121.3520324538D@xxxxxxxxxxxxxxxxxxxxxx>
https://bugzilla.novell.com/show_bug.cgi?id=375836

User trenn@xxxxxxxxxx added comment
https://bugzilla.novell.com/show_bug.cgi?id=375836#c21





--- Comment #21 from Thomas Renninger <trenn@xxxxxxxxxx> 2008-05-16 10:21:20
MST ---
Does anyone know why parport_pc suddenly started to think IRQ 14 is its?
This is not parport_pc's fault. This is ACPI.
If the device is switched off in BIOS the _STA function must return 0 and the
device must not be further evaluated.

In this case, I expect the _STA function returns not 0 wrongly or the value is
ignored and the _CRS Current Resource Settings are evaluated. Probably only in
PNP case or I expect this would have been noticed earlier.

There the IO flags are statically declared, the IRQ and DMA values are set
dynamically, possibly based on uninitialised values.

As this is not that important (and my queue starts to get really long), I will
start with fixing the DSDT override and then come back.

This is the whole parallel device ACPI declaration (already with my debug
messages, which should have printed to dmesg if DSDT override had worked):

Device (ECP0)
{
Name (_HID, EisaId ("PNP0401"))
Name (_DDN, "LPT1")
Name (CRES, ResourceTemplate ()
{
IRQNoFlags ()
{7}
DMA (Compatibility, NotBusMaster, Transfer8, )
{3}
IO (Decode16,
0x0378, // Range Minimum
0x0378, // Range Maximum
0x00, // Alignment
0x08, // Length
)
IO (Decode16,
0x0778, // Range Minimum
0x0778, // Range Maximum
0x00, // Alignment
0x06, // Length
)
})
Method (_STA, 0, NotSerialized)
{
Store("_STA of Parallel device", debug)
If (LPTN)
{
LETR ()
Store (0x03, LDN)
Store (CFG1, Local0)
And (Local0, 0x07, Local0)
If (LEqual (Local0, 0x03))
{
If (ACTR)
{
LEXT ()
Store (0x0F, debug)
Return (0x0F)
}
Else
{
LEXT ()
Store (0x0D, debug)
Return (0x0D)
}
}
Else
{
LEXT ()
Store (0x0, debug)
Return (Zero)
}
}
Else
{
Store (0x0, debug)
Return (Zero)
}
Store ("We should not end here", debug)
}

Method (_CRS, 0, NotSerialized)
{
CreateWordField (CRES, 0x01, IRQW)
CreateByteField (CRES, 0x04, DMAC)
CreateByteField (CRES, 0x08, IOLO)
CreateByteField (CRES, 0x09, IOHI)
CreateByteField (CRES, 0x0A, IORL)
CreateByteField (CRES, 0x0B, IORH)
CreateByteField (CRES, 0x0D, LEN1)
CreateByteField (CRES, 0x10, ISL1)
CreateByteField (CRES, 0x11, ISH1)
CreateByteField (CRES, 0x12, ISL2)
CreateByteField (CRES, 0x13, ISH2)
CreateByteField (CRES, 0x15, LEN2)
LETR ()
Store (0x03, LDN)
Store (IOAL, IOLO)
Store (IOAH, IOHI)
Store (IOAL, IORL)
Store (IOAH, IORH)
Store (IOAL, ISL1)
Add (0x04, IOAH, ISH1)
Store (IOAL, ISL2)
Add (0x04, IOAH, ISH2)
If (LEqual (IOAL, 0xBC))
{
Store (0x03, LEN1)
Store (0x03, LEN2)
}
Else
{
Store (0x08, LEN1)
Store (0x06, LEN2)
}

If (LEqual (INTR, Zero))
{
Store (Zero, IRQW)
}
Else
{
Store (One, Local0)
ShiftLeft (Local0, INTR, IRQW)
}

If (LEqual (DMCH, 0x04))
{
Store (Zero, DMAC)
}
Else
{
Store (One, Local0)
ShiftLeft (Local0, DMCH, DMAC)
}

LEXT ()
Return (CRES)
}
}


--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

< Previous Next >