1 // Copyright 2017 The Fuchsia Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #pragma once
6 
7 #include <acpica/acpi.h>
8 
acpi_to_zx_status(ACPI_STATUS acpi_status)9 static inline zx_status_t acpi_to_zx_status(ACPI_STATUS acpi_status) {
10     switch (acpi_status) {
11     case AE_ERROR:
12     case AE_NO_ACPI_TABLES:
13         return ZX_ERR_INTERNAL;
14     case AE_NO_NAMESPACE:
15         return ZX_ERR_NOT_FOUND;
16     case AE_NO_MEMORY:
17         return ZX_ERR_NO_MEMORY;
18     case AE_NOT_EXIST:
19         return ZX_ERR_NOT_FOUND;
20     case AE_ALREADY_EXISTS:
21         return ZX_ERR_ALREADY_EXISTS;
22     case AE_TYPE:
23         return ZX_ERR_WRONG_TYPE;
24     case AE_NULL_OBJECT:
25     case AE_NULL_ENTRY:
26         return ZX_ERR_NOT_FOUND;
27     case AE_BUFFER_OVERFLOW:
28         return ZX_ERR_BUFFER_TOO_SMALL;
29     case AE_STACK_OVERFLOW:
30     case AE_STACK_UNDERFLOW:
31         return ZX_ERR_INTERNAL;
32     case AE_NOT_IMPLEMENTED:
33     case AE_SUPPORT:
34         return ZX_ERR_NOT_SUPPORTED;
35     case AE_LIMIT:
36         return ZX_ERR_INTERNAL;
37     case AE_TIME:
38         return ZX_ERR_TIMED_OUT;
39     case AE_ACQUIRE_DEADLOCK:
40     case AE_RELEASE_DEADLOCK:
41     case AE_NOT_ACQUIRED:
42     case AE_ALREADY_ACQUIRED:
43         return ZX_ERR_INTERNAL;
44     case AE_NO_HARDWARE_RESPONSE:
45         return ZX_ERR_TIMED_OUT;
46     case AE_NO_GLOBAL_LOCK:
47         return ZX_ERR_INTERNAL;
48     case AE_ABORT_METHOD:
49         return ZX_ERR_INTERNAL;
50     case AE_SAME_HANDLER:
51         return ZX_ERR_ALREADY_EXISTS;
52     case AE_OWNER_ID_LIMIT:
53         return ZX_ERR_NO_RESOURCES;
54     case AE_NOT_CONFIGURED:
55         return ZX_ERR_NOT_FOUND;
56     case AE_ACCESS:
57         return ZX_ERR_ACCESS_DENIED;
58     case AE_IO_ERROR:
59         return ZX_ERR_IO;
60     case AE_OK:
61         return ZX_OK;
62     default:
63         return ZX_ERR_INTERNAL;
64     }
65 }
66