xref: /aosp_15_r20/external/swiftshader/include/Android/hardware/hardware.h (revision 03ce13f70fcc45d86ee91b7ee4cab1936a95046e)
1*03ce13f7SAndroid Build Coastguard Worker /*
2*03ce13f7SAndroid Build Coastguard Worker  * Copyright (C) 2018 The Android Open Source Project
3*03ce13f7SAndroid Build Coastguard Worker  *
4*03ce13f7SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*03ce13f7SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*03ce13f7SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*03ce13f7SAndroid Build Coastguard Worker  *
8*03ce13f7SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
9*03ce13f7SAndroid Build Coastguard Worker  *
10*03ce13f7SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*03ce13f7SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*03ce13f7SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*03ce13f7SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*03ce13f7SAndroid Build Coastguard Worker  * limitations under the License.
15*03ce13f7SAndroid Build Coastguard Worker  */
16*03ce13f7SAndroid Build Coastguard Worker 
17*03ce13f7SAndroid Build Coastguard Worker #pragma once
18*03ce13f7SAndroid Build Coastguard Worker 
19*03ce13f7SAndroid Build Coastguard Worker #include <cstdint>
20*03ce13f7SAndroid Build Coastguard Worker 
21*03ce13f7SAndroid Build Coastguard Worker #define MAKE_TAG_CONSTANT(A, B, C, D) (((A) << 24) | ((B) << 16) | ((C) << 8) | (D))
22*03ce13f7SAndroid Build Coastguard Worker 
23*03ce13f7SAndroid Build Coastguard Worker #define HARDWARE_MODULE_TAG MAKE_TAG_CONSTANT('H', 'W', 'M', 'T')
24*03ce13f7SAndroid Build Coastguard Worker #define HARDWARE_DEVICE_TAG MAKE_TAG_CONSTANT('H', 'W', 'D', 'T')
25*03ce13f7SAndroid Build Coastguard Worker 
26*03ce13f7SAndroid Build Coastguard Worker #define HARDWARE_MAKE_API_VERSION(maj, min) ((((maj)&0xff) << 8) | ((min)&0xff))
27*03ce13f7SAndroid Build Coastguard Worker 
28*03ce13f7SAndroid Build Coastguard Worker #define HARDWARE_HAL_API_VERSION HARDWARE_MAKE_API_VERSION(1, 0)
29*03ce13f7SAndroid Build Coastguard Worker 
30*03ce13f7SAndroid Build Coastguard Worker struct hw_module_methods_t;
31*03ce13f7SAndroid Build Coastguard Worker 
32*03ce13f7SAndroid Build Coastguard Worker struct hw_module_t {
33*03ce13f7SAndroid Build Coastguard Worker     uint32_t tag;
34*03ce13f7SAndroid Build Coastguard Worker     uint16_t module_api_version;
35*03ce13f7SAndroid Build Coastguard Worker     uint16_t hal_api_version;
36*03ce13f7SAndroid Build Coastguard Worker     const char* id;
37*03ce13f7SAndroid Build Coastguard Worker     const char* name;
38*03ce13f7SAndroid Build Coastguard Worker     const char* author;
39*03ce13f7SAndroid Build Coastguard Worker     hw_module_methods_t* methods;
40*03ce13f7SAndroid Build Coastguard Worker     void* dso;
41*03ce13f7SAndroid Build Coastguard Worker #ifdef __LP64__
42*03ce13f7SAndroid Build Coastguard Worker     uint64_t reserved[32 - 7];
43*03ce13f7SAndroid Build Coastguard Worker #else
44*03ce13f7SAndroid Build Coastguard Worker     uint32_t reserved[32 - 7];
45*03ce13f7SAndroid Build Coastguard Worker #endif
46*03ce13f7SAndroid Build Coastguard Worker };
47*03ce13f7SAndroid Build Coastguard Worker 
48*03ce13f7SAndroid Build Coastguard Worker struct hw_device_t {
49*03ce13f7SAndroid Build Coastguard Worker     uint32_t tag;
50*03ce13f7SAndroid Build Coastguard Worker     uint32_t version;
51*03ce13f7SAndroid Build Coastguard Worker     struct hw_module_t* module;
52*03ce13f7SAndroid Build Coastguard Worker #ifdef __LP64__
53*03ce13f7SAndroid Build Coastguard Worker     uint64_t reserved[12];
54*03ce13f7SAndroid Build Coastguard Worker #else
55*03ce13f7SAndroid Build Coastguard Worker     uint32_t reserved[12];
56*03ce13f7SAndroid Build Coastguard Worker #endif
57*03ce13f7SAndroid Build Coastguard Worker     int (*close)(hw_device_t* device);
58*03ce13f7SAndroid Build Coastguard Worker };
59*03ce13f7SAndroid Build Coastguard Worker 
60*03ce13f7SAndroid Build Coastguard Worker struct hw_module_methods_t {
61*03ce13f7SAndroid Build Coastguard Worker     int (*open)(const hw_module_t*, const char*, hw_device_t**);
62*03ce13f7SAndroid Build Coastguard Worker };
63*03ce13f7SAndroid Build Coastguard Worker 
64*03ce13f7SAndroid Build Coastguard Worker extern "C" {
65*03ce13f7SAndroid Build Coastguard Worker int hw_get_module(const char* id, const hw_module_t** module);
66*03ce13f7SAndroid Build Coastguard Worker };
67