1310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales/* 2310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * Copyright (C) 2015 The Android Open Source Project 3310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * 4310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * Licensed under the Apache License, Version 2.0 (the "License"); 5310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * you may not use this file except in compliance with the License. 6310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * You may obtain a copy of the License at 7310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * 8310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * http://www.apache.org/licenses/LICENSE-2.0 9310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * 10310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * Unless required by applicable law or agreed to in writing, software 11310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * distributed under the License is distributed on an "AS IS" BASIS, 12310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * See the License for the specific language governing permissions and 14310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales * limitations under the License. 15310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales */ 16310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 17310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales#include <hardware/hardware.h> 18310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 19310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales#include <string.h> 20310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales#include <errno.h> 21310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales#include <stdlib.h> 22310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 23310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales#include "trusty_gatekeeper.h" 24310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 25310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Moralesusing gatekeeper::TrustyGateKeeperDevice; 26310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 27310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Moralesstatic int trusty_gatekeeper_open(const hw_module_t *module, const char *name, 28310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales hw_device_t **device) { 29310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 30310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales if (strcmp(name, HARDWARE_GATEKEEPER) != 0) { 31310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales return -EINVAL; 32310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales } 33310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 34310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales TrustyGateKeeperDevice *gatekeeper = new TrustyGateKeeperDevice(module); 35310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales if (gatekeeper == NULL) return -ENOMEM; 36310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales *device = gatekeeper->hw_device(); 37310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 38310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales return 0; 39310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales} 40310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 41310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Moralesstatic struct hw_module_methods_t gatekeeper_module_methods = { 42310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .open = trusty_gatekeeper_open, 43310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales}; 44310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales 45310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Moralesstruct gatekeeper_module HAL_MODULE_INFO_SYM __attribute__((visibility("default"))) = { 46310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .common = { 47310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .tag = HARDWARE_MODULE_TAG, 48310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .module_api_version = GATEKEEPER_MODULE_API_VERSION_0_1, 49310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .hal_api_version = HARDWARE_HAL_API_VERSION, 50310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .id = GATEKEEPER_HARDWARE_MODULE_ID, 51310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .name = "Trusty GateKeeper HAL", 52310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .author = "The Android Open Source Project", 53310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .methods = &gatekeeper_module_methods, 54310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .dso = 0, 55310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales .reserved = {} 56310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales }, 57310dcffbe0c57b686f459c9961ae7b03a1c86a93Andres Morales}; 58