ACK: [PATCH] acpi: method: Fix _DDC test arguments

Gergo Koteles soyer at irl.hu
Mon Apr 21 08:35:57 UTC 2025


Hi,

On Mon, 2025-04-21 at 14:57 +0800, ivanhu wrote:
> Thanks!
> 
> Acked-by: Ivan Hu <ivan.hu at canonical.com>
> 

My _DDC test still passes, even though it shouldn't, because in reality
it returns a buffer in package, instead of a buffer.

This is because the value of one of the fields is not the same as in
the system memory.

Is it possible for tests to use the values of the fields from the
system memory?

Test results:

Test 198 of 209: Test _DDC (Return the EDID for this Device).
PASSED: Test 198, \_SB_.PCI0.GP17.VGA_.LCD_._DDC could not return a
buffer of 128 items and instead returned an error status 0.
PASSED: Test 198, \_SB_.PCI0.GP17.VGA_.LCD_._DDC could not return a
buffer of 256 items and instead returned an error status 0.
PASSED: Test 198, \_SB_.PCI0.GP17.VGA_.LCD_._DDC could not return a
buffer of 384 items and instead returned an error status 0.
PASSED: Test 198, \_SB_.PCI0.GP17.VGA_.LCD_._DDC could not return a
buffer of 512 items and instead returned an error status 0

I have this PAID definition:

Scope (\)
{
       OperationRegion (LFCN, SystemMemory, 0x72EE7018, 0x0477)
                        Field (LFCN, AnyAcc, Lock, Preserve)
       {
              PS2V,   8,
              KBID,   8,
              MCSZ,   8,
              OKRB,   8,
              HEAD,   64,
              MFID,   16,
              PAID,   16,
...

With value 0x417A:

# dd bs=1 skip="$((0x72ee7018+14))" count=2 if="/dev/mem" 2>/dev/null |
od -An -x
 417a

And the _DDC method:

              Name (AUID, 0xA195)
              Name (IVID, 0x8C45)
              Name (BOID, 0x0B1B)
              Name (SAID, 0x417A)
              Name (SBID, 0x4193)
...
              Name (SUNG, Package (0x01)
              {
                   Buffer (0x0100)
                   {
...
                   }
              })
...
Method (_DDC, 1, NotSerialized)  // _DDC: Display Data Current
{
       If ((PAID == AUID))
       {
            Return (AUOP) /* \_SB_.PCI0.GP17.VGA_.LCD_.AUOP */
       }
       ElseIf ((PAID == IVID))
       {
            Return (IVOP) /* \_SB_.PCI0.GP17.VGA_.LCD_.IVOP */
       }
       ElseIf ((PAID == BOID))
       {
            Return (BOEP) /* \_SB_.PCI0.GP17.VGA_.LCD_.BOEP */
       }
       ElseIf ((PAID == SAID))
       {
            Return (SUNG) /* \_SB_.PCI0.GP17.VGA_.LCD_.SUNG */
       }
       ElseIf ((PAID == SBID))
       {
            Return (SUMG) /* \_SB_.PCI0.GP17.VGA_.LCD_.SUMG */
       }

       Return (Zero)
}

Thanks,
Gergo




More information about the fwts-devel mailing list