blob: 37503ad8065740070129a4557ca5d4f496f9ed7f [file] [log] [blame]
/*
* \file sdc_bootPart_license.h
* \brief Interfaces to read/update license in boot part
*
* \version 1.0.0
* \date 2015/3/10
* \author Sam.Wu <yihui.wu@amlgic.com>
*
* Copyright (c) 2015 Amlogic. All Rights Reserved.
*
*/
#ifndef __V2_SDC_BURN_SDC_BOOTPART_LICENSE_H__
#define __V2_SDC_BURN_SDC_BOOTPART_LICENSE_H__
#define AML_BOOT_PART_KEY_HEAD_OFFSET (0x4U<<20)
#define AML_BOOT_PART_KEY_HEAD_MAGIC 0X2143494C //"LIC!"
#define AML_BOOT_PART_KEY_HEAD_VERSION 0x01
#define AML_BOOT_PART_KEY_HEAD_SZ (128)
#define AML_BOOT_PART_ALIGN_SZ (16)
#define AML_BOOT_PART_KEY_ITEM_MAGIC 0X4D455449 //"ITEM!"
#define AML_BOOT_PART_KEY_ITEM_VERSION 0x01
#define AML_BOOT_PART_KEY_ITEM_SZ (128)
#define AML_BOOT_PART_KEY_ITEM_NAME_LEN 16
#pragma pack(push, 4)
typedef struct _bootPartKeyInf_head{
unsigned int hcrc;
unsigned int magic;
unsigned int version;
unsigned int alignSz;
unsigned int imgSz;
unsigned int imgItemNum;
unsigned char reserv[AML_BOOT_PART_KEY_HEAD_SZ - sizeof(unsigned int) * 6];
}BootPartKeyInf_head_t;
#pragma pack(pop)
#pragma pack(push, 4)
typedef struct _bootPartKeyInf_Item{
unsigned int magic;
unsigned int version;
unsigned int itemIndex;
unsigned int itemSz;//including this inf head
unsigned int nextItemInfOffset;
unsigned int reserv;
unsigned char keyName[AML_BOOT_PART_KEY_ITEM_NAME_LEN];
unsigned char resv1[AML_BOOT_PART_KEY_ITEM_SZ - sizeof(unsigned) * 6 - AML_BOOT_PART_KEY_ITEM_NAME_LEN];
}BootPartKeyInf_Item_t;
#pragma pack(pop)
//Read license inf from external emmc boot part
int optimus_sdc_bootPart_lic_download(void);
//update the license inf to external mmc boot part
int optimus_sdc_bootPart_lic_upload(void);
int optimus_sdc_bootPart_lic_get_key_infdata(const char* keyName, void** keyInfAddr);
//add an key info item if any, or update it
int optimus_sdc_bootPart_lic_update_key_inf(const char* keyName, unsigned char* keyVal, unsigned int keyLen);
#endif//ifndef __V2_SDC_BURN_SDC_BOOTPART_LICENSE_H__