Comment 5 for bug 1262033

Revision history for this message
Ivan Hu (ivan.hu) wrote :

and high failures from comment3,
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS10._PLD'.
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS11._PLD'.
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS12._PLD'.
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS13._PLD'.
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS14._PLD'.
 method: Detected error 'No return value' when evaluating '\_SB_.PCI0.XHC_.RHUB.HS15._PLD'.

it is from the buggy firmware.

form the ACPI DSDT table
the device HS10~ HS15, method _PLD checks with the method PR2S with value 0x0A ~ 0x0F,
                    Method (_PLD, 0, Serialized) // _PLD: Physical Location of Device
                    {
                             ...
                        If (LNot (And (PR2S (0x0A), PR2))) <---
                        {
                            And (VIS, Zero, VIS)
                        }

                        Return (PLDP)
                    }
                }

But the PR2S no return, when the LBC CDID not equal 0x8xxx
            Method (PR2S, 1, Serialized)
            {
                ...
                If (LEqual (And (CDID, 0xF000), 0x8000))
                {
                     ...
                }
                Else
                {
                    While (One)
                    {
                        Store (Arg0, _T_1)
                        If (LEqual (_T_1, One))
                        {
                            Return (One)
                        }
                        Else
                        {
                            If (LEqual (_T_1, 0x02))
                            {
                                Return (0x02)
                            }
                            Else
                            {
                                If (LEqual (_T_1, 0x03))
                                {
                                    Return (0x04)
                                }
                                Else
                                {
                                    If (LEqual (_T_1, 0x04))
                                    {
                                        Return (0x08)
                                    }
                                    Else
                                    {
                                        If (LEqual (_T_1, 0x05))
                                        {
                                            Return (0x10)
                                        }
                                        Else
                                        {
                                            If (LEqual (_T_1, 0x06))
                                            {
                                                Return (0x20)
                                            }
                                            Else
                                            {
                                                If (LEqual (_T_1, 0x07))
                                                {
                                                    Return (0x40)
                                                }
                                                Else
                                                {
                                                    If (LEqual (_T_1, 0x08))
                                                    {
                                                        Return (0x80)
                                                    }
                                                    Else
                                                    {
                                                        If (LEqual (_T_1, 0x09))
                                                        {
                                                            Return (0x0100)
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }

                        Break
                    }
                }

if the CDID value is not equal 0x8xxx, it cause no return for method PR2S.