blob: b4346d4e2f1915178582373e46cd4c03f6d2c81d [file] [log] [blame]
/*
* arch/arm/include/asm/arch-gxtvbb/bl31_apis.h
*
* Copyright (C) 2015 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/*
* Trustzone API
*
* Copyright (C) 2012 Amlogic, Inc.
*
* Author: Platform-SH@amlogic.com
*
*/
#ifndef __GXBB_BL31_APIS_H
#define __GXBB_BL31_APIS_H
#include <asm/arch/io.h>
/*#define SRAM_READ 0x82000010
#define CORE_RD_REV1 0x82000011
#define SRAM_ACS_READ 0x82000012
#define SRAM_ACS_INDIRECT_READ 0x82000013*/
#define GET_SHARE_MEM_INPUT_BASE 0x82000020
#define GET_SHARE_MEM_OUTPUT_BASE 0x82000021
#define GET_REBOOT_REASON 0x82000022
#define GET_SHARE_STORAGE_IN_BASE 0x82000023
#define GET_SHARE_STORAGE_OUT_BASE 0x82000024
#define GET_SHARE_STORAGE_BLOCK_BASE 0x82000025
#define GET_SHARE_STORAGE_MESSAGE_BASE 0x82000026
#define GET_SHARE_STORAGE_BLOCK_SIZE 0x82000027
#define SET_STORAGE_INFO 0x82000028
/* Set Reboot Reason then Reboot*/
#define PSCI_SYS_REBOOT 0x84000009
/* SECUREOS DEFINITION*/
/* SMC Identifiers for non-secure world functions */
#define CALL_TRUSTZONE_HAL_API 0x5
/* EFUSE */
#define EFUSE_READ 0x82000030
#define EFUSE_WRITE 0x82000031
#define EFUSE_WRITE_PATTERN 0x82000032
#define EFUSE_USER_MAX 0x82000033
#define DEBUG_EFUSE_WRITE_PATTERN 0x820000F0
#define DEBUG_EFUSE_READ_PATTERN 0x820000F1
/* JTAG*/
#define JTAG_ON 0x82000040
#define JTAG_OFF 0x82000041
#define GET_CHIP_ID 0x82000044
#define SET_USB_BOOT_FUNC 0x82000043
/* USB BOOT FUNC sub command list*/
#define CLEAR_USB_BOOT 1
#define FORCE_USB_BOOT 2
#define RUN_COMD_USB_BOOT 3
#define PANIC_DUMP_USB_BOOT 4
/* Security Key*/
#define SECURITY_KEY_QUERY 0x82000060
#define SECURITY_KEY_READ 0x82000061
#define SECURITY_KEY_WRITE 0x82000062
#define SECURITY_KEY_TELL 0x82000063
#define SECURITY_KEY_VERIFY 0x82000064
#define SECURITY_KEY_STATUS 0x82000065
#define SECURITY_KEY_NOTIFY 0x82000066
#define SECURITY_KEY_LIST 0x82000067
#define SECURITY_KEY_REMOVE 0x82000068
#define SECURITY_KEY_NOTIFY_EX 0x82000069
#define SECURITY_KEY_SET_ENCTYPE 0x8200006A
#define SECURITY_KEY_GET_ENCTYPE 0x8200006B
#define SECURITY_KEY_VERSION 0x8200006C
/* Secure HAL APIs */
#define TRUSTZONE_HAL_API_SRAM 0x400
#define SRAM_HAL_API_CHECK_EFUSE 0x403
struct sram_hal_api_arg {
unsigned int cmd;
unsigned int req_len;
unsigned int res_len;
unsigned long req_phy_addr;
unsigned long res_phy_addr;
unsigned long ret_phy_addr;
};
#define JTAG_STATE_ON 0
#define JTAG_STATE_OFF 1
#define JTAG_M3_AO 0
#define JTAG_M3_EE 1
#define JTAG_A53_AO 2
#define JTAG_A53_EE 3
#define CLUSTER_BIT 2
/////////////////////////////////////////////////////////////////////////////////
#define AML_DATA_PROCESS (0x820000FF)
#define AML_D_P_W_EFUSE_SECURE_BOOT (0x10)
#define AML_D_P_W_EFUSE_PASSWORD (0x11)
#define AML_D_P_W_EFUSE_CUSTOMER_ID (0x12)
#define AML_D_P_W_EFUSE_AMLOGIC (0x20)
#define AML_D_P_IMG_DECRYPT (0x40)
#define AML_D_P_UPGRADE_CHECK (0x80)
#define GXB_EFUSE_PATTERN_SIZE (0x500)
#define GXB_IMG_SIZE (24<<20)
#define GXB_IMG_LOAD_ADDR (0x1080000)
#define GXB_IMG_DEC_KNL (1<<0)
#define GXB_IMG_DEC_RMD (1<<1)
#define GXB_IMG_DEC_DTB (1<<2)
#define GXB_IMG_DEC_ALL (GXB_IMG_DEC_KNL|GXB_IMG_DEC_RMD|GXB_IMG_DEC_DTB)
#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t"
void aml_set_jtag_state(unsigned state, unsigned select);
unsigned aml_get_reboot_reason(void);
unsigned aml_reboot(uint64_t function_id, uint64_t arg0, uint64_t arg1, uint64_t arg2);
unsigned long aml_sec_boot_check(unsigned long ,unsigned long ,unsigned long,unsigned long );
long get_sharemem_info(unsigned long);
void set_usb_boot_function(unsigned long command);
void aml_system_off(void);
void bl31_get_chipid(unsigned int *, unsigned int *,
unsigned int *, unsigned int *);
#endif