https://bugzilla.kernel.org/show_bug.cgi?id=213353

            Bug ID: 213353
           Summary: IRQs for onboard UARTs are not level-triggered with
                    IRQNoFlags even if the parent section has the defaults
                    in PRS
           Product: ACPI
           Version: 2.5
    Kernel Version: 5.12.8
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: Config-Interrupts
          Assignee: acpi_config-interru...@kernel-bugs.osdl.org
          Reporter: zbos...@pr.hu
        Regression: No

I have tablet with that supposedly has a serial-attached EETI touchscreen
device.

# dmesg | grep ttyS0   
[    3.896102] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a
16550A

When trying to use it via inputattach, it fails:

# inputattach -eeti /dev/ttyS0
inputattach: device initialization failed

The IRQ set up for the UART is edge-triggered, while it's attached to the LPC
bus and should be level-trigered:

# grep " 4:" /proc/interrupts 
   4:          0          1          0          0   IO-APIC    4-edge    

Disassembling the DSDT, I can see this:

    Scope (_SB)
    {
       ...
       /* IRQ defaults for (E)ISA/LPC IRQs? */
       Name (PRSA, ResourceTemplate ()
        {
            IRQ (Level, ActiveLow, Shared, )
                {3,4,5,6,10,11,12,14,15}
        })
        Alias (PRSA, PRSB)
        Alias (PRSA, PRSC)
        Alias (PRSA, PRSD)
        Alias (PRSA, PRSE)
        Alias (PRSA, PRSF)
        Alias (PRSA, PRSG)
        Alias (PRSA, PRSH)


The serial device is in the above parent scope:

                Device (IURT)
                {
                    Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM
Serial Port */)  // _HID: Hardware ID
                    Name (_UID, One)  // _UID: Unique ID
                    Method (_STA, 0, Serialized)  // _STA: Status
                    {
                        If ((USEL == Zero))
                        {
                            UI4E = One
                            C1EN = One
                            Return (0x0F)
                        }

                        Return (Zero)
                    }

                    Method (_DIS, 0, Serialized)  // _DIS: Disable Device
                    {
                        If (((BDID != One) && ((BDID != 0x0A) && 
                            (BDID != 0x09))))
                        {
                            UI4E = Zero
                            C1EN = Zero
                        }
                    }

                    Method (_CRS, 0, Serialized)  // _CRS: Current Resource
Settings
                    {
                        Name (BUF0, ResourceTemplate ()
                        {
                            IO (Decode16,
                                0x03F8,             // Range Minimum
                                0x03F8,             // Range Maximum
                                0x01,               // Alignment
                                0x08,               // Length
                                )
                            IRQNoFlags ()
                                {4}
                        })
                        Return (BUF0) /* \_SB_.PCI0.LPCB.IURT._CRS.BUF0 */
                    }
                }

It seems to me that the IRQ default parameters from PRS are not applied to the
PNP0501 device and as such, the serial device doesn't work.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to