1    /*
2     * Some or all of this work - Copyright (c) 2006 - 2021, Intel Corp.
3     * All rights reserved.
4     *
5     * Redistribution and use in source and binary forms, with or without modification,
6     * are permitted provided that the following conditions are met:
7     *
8     * Redistributions of source code must retain the above copyright notice,
9     * this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright notice,
11     * this list of conditions and the following disclaimer in the documentation
12     * and/or other materials provided with the distribution.
13     * Neither the name of Intel Corporation nor the names of its contributors
14     * may be used to endorse or promote products derived from this software
15     * without specific prior written permission.
16     *
17     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20     * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21     * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24     * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25     * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27     */
28    /*
29     * Bug 0029:
30     *
31     * SUMMARY: Looks, like Sleep (or Wait) spend less time than specified
32     */
33    Method (MDBF, 2, Serialized)
34    {
35        Switch (ToInteger (Arg0))
36        {
37            Case (0x00)
38            {
39                Local1 = Timer
40                Sleep (Arg1)
41                Local2 = Timer
42                Local6 = (Local2 - Local1)
43                Local4 = (Arg1 * 0x2710)
44                If ((Local6 < Local4))
45                {
46                    ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local6, Local4)
47                }
48            }
49            Case (0x01)
50            {
51                Local1 = Timer
52                Stall (Arg1)
53                Local2 = Timer
54                Local6 = (Local2 - Local1)
55                Local4 = (Arg1 * 0x0A)
56                If ((Local6 < Local4))
57                {
58                    ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local6, Local4)
59                }
60            }
61            Case (0x02)
62            {
63                Local1 = Timer
64                Wait (ED00, Arg1)
65                Local2 = Timer
66                Local6 = (Local2 - Local1)
67                Local4 = (Arg1 * 0x2710)
68                If ((Local6 < Local4))
69                {
70                    ERR (__METHOD__, ZFFF, __LINE__, 0x00, 0x00, Local6, Local4)
71                }
72            }
73
74        }
75    }
76
77    /* Sleep */
78
79    Method (MDC0, 0, NotSerialized)
80    {
81        MDBF (0x00, 0x0A)
82        MDBF (0x00, 0x64)
83        MDBF (0x00, 0x01F4)
84        MDBF (0x00, 0x03E8)
85        MDBF (0x00, 0x07D0)
86    }
87
88    /* Wait */
89
90    Method (MDC1, 0, NotSerialized)
91    {
92        MDBF (0x02, 0x0A)
93        MDBF (0x02, 0x64)
94        MDBF (0x02, 0x03E8)
95        MDBF (0x02, 0x07D0)
96    }
97
98    Method (MDC2, 0, NotSerialized)
99    {
100        MDC0 ()
101        MDC1 ()
102    }
103