blob: c26da9b71fc7e9a853defe79e36038b8b7253542 [file] [log] [blame]
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __QSEECOM_LK_API_H_
#define __QSEECOM_LK_API_H_
#define MAX_APP_NAME_LEN 32
#include <stdint.h>
/**
* Qseecom Init
* To be called before any calls to qsee secure apps.
*
* @return int
* Success: Init succeeded.
* Failure: Error code (negative only).
*/
int qseecom_init();
/**
* Qseecom Tz Init
* To be called before any calls to qsee secure apps.
*
* @return int
* Success: Tz init succeeded.
* Failure: Error code (negative only).
*/
int qseecom_tz_init();
/**
* Qseecom Exit
* To be called before exit of lk.
* Once this is called no calls to
* Qsee Apps.
*
* @return int
* Success: Exit succeeded.
* Failure: Error code (negative only).
*/
int qseecom_exit();
/**
* Start a Secure App
*
* @param char* app_name
* App name of the Secure App to be started
* The app_name provided should be the same
* name as the partition/ file and should
* be the same name mentioned in TZ_APP_NAME
* in the secure app.
*
* @return int
* Success: handle to be used for all calls to
* Secure app. Always greater than zero.
* Failure: Error code (negative only).
*/
int qseecom_start_app(char *app_name);
/**
* Shutdown a Secure App
*
* @param int handle
* Handle of the Secure App to be shutdown
*
* @return int
* Status:
* 0 - Success
* Negative value indicates failure.
*/
int qseecom_shutdown_app(int handle);
/**
* Shutdown a Secure App
*
* @param int handle
* Handle of the Secure App to send the cmd
*
* @param void *send_buf
* Pointer to the App request buffer
*
* @param uint32_t sbuf_len
* Size of the request buffer
*
* @param void *resp_buf
* Pointer to the App response buffer
*
* @param uint32_t rbuf_len
* Size of the response buffer
*
* @return int
* Status:
* 0 - Success
* Negative value indicates failure.
*/
int qseecom_send_command(int handle, void *send_buf,
uint32_t sbuf_len, void *resp_buf, uint32_t rbuf_len);
typedef int (*ListenerCallback)(void*, uint32_t);
/**
* @param char* service_name
* The name of the listener service.
* @param uint32_t id
* The id used to register a listener with
* QSEE in the secure side. This id should
* be unique.
* @param ListenerCallback service_cmd_handler
* This is the service cmd handler, this cb
* is called for a specific service request.
* The input params are,
* @param void *buf
* The shared buffer which contains the
* request from the secure side. The service
* also updates this buffer with the response.
* @param uint32_t size
* The size of the shared buffer.
* @return int
* Success: Exit succeeded.
* Failure: Error code (negative only).
*/
struct qseecom_listener_services {
char *service_name;
uint32_t id;
uint32_t sb_size;
ListenerCallback service_cmd_handler;
};
/**
* Registers a Listener Service with QSEE
* This api should be called after all
* service specific initialization is
* completed, once this is called the
* service_cmd_handler for the service can
* be called.
*
* @param struct qseecom_listener_services listnr
* Listener structure that contains all the info
* to register a listener service.
*
* @return int
* Status:
* 0 - Success
* Negative value indicates failure.
*/
int qseecom_register_listener(struct qseecom_listener_services *listnr);
/**
* De-Registers a Listener Service with QSEE
* This api should be called before exiting lk and
* all service de-init should be done before calling
* the api. service_cmd_handler will not be called
* after this api is called.
*
* @param uint32_t listnr_id
* Pre-defined Listener ID to be de-registered
*
* @return int
* Status:
* 0 - Success
* Negative value indicates failure.
*/
int qseecom_deregister_listener(uint32_t listnr_id);
#endif /* __QSEECOM_API_LK_H_ */