/* Copyright Statement: * * This software/firmware and related documentation ("MediaTek Software") are * protected under relevant copyright laws. The information contained herein * is confidential and proprietary to MediaTek Inc. and/or its licensors. * Without the prior written permission of MediaTek inc. and/or its licensors, * any reproduction, modification, use or disclosure of MediaTek Software, * and information contained herein, in whole or in part, shall be strictly prohibited. */ /* MediaTek Inc. (C) 2018. All rights reserved. * * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. * * The following software/firmware and/or related documentation ("MediaTek Software") * have been modified by MediaTek Inc. All revisions are subject to any receiver\'s * applicable license agreements with MediaTek Inc. */ #ifndef _MMC_RPMB_H #define _MMC_RPMB_H #include "mmc_core.h" /* ================================================================================== RPMB definition ====================================================================================*/ #define RPMB_SZ_STUFF 196 #define RPMB_SZ_MAC 32 #define RPMB_SZ_DATA 256 #define RPMB_SZ_NONCE 16 #define RPMB_PROGRAM_KEY 1 /* Program RPMB Authentication Key */ #define RPMB_GET_WRITE_COUNTER 2 /* Read RPMB write counter */ #define RPMB_WRITE_DATA 3 /* Write data to RPMB partition */ #define RPMB_READ_DATA 4 /* Read data from RPMB partition */ #define RPMB_RESULT_READ 5 /* Read result request */ #define RPMB_REQ 1 /* RPMB request mark */ #define RPMB_RESP (1 << 1)/* RPMB response mark */ #define RPMB_AVALIABLE_SECTORS 8 /* 4K page size */ #define RPMB_TYPE_BEG 510 #define RPMB_RES_BEG 508 #define RPMB_BLKS_BEG 506 #define RPMB_ADDR_BEG 504 #define RPMB_WCOUNTER_BEG 500 #define RPMB_NONCE_BEG 484 #define RPMB_DATA_BEG 228 #define RPMB_MAC_BEG 196 struct mmc_rpmb_cfg { u16 type; /* RPMB request type */ u16 result; /* response or request result */ u16 blk_cnt; /* Number of blocks(half sector 256B) */ u16 addr; /* data address */ u32 wc; /* write counter */ u8 *nonce; /* Ramdom number */ u8 *data; /* Buffer of the user data */ u8 *mac; /* Message Authentication Code */ }; struct mmc_rpmb_req { struct mmc_rpmb_cfg *rpmb_cfg; u8 *data_frame; }; #if CFG_RPMB_KEY_PROGRAMED_IN_KERNEL extern int mmc_rpmb_set_key(u8 *key, int *rpmb_result); #else extern int mmc_rpmb_set_key(u8 *key); #endif extern int mmc_rpmb_read_data(u32 blkAddr, u32 *buf, u32 bufLen); extern int mmc_rpmb_write_data(u32 blkAddr, u32 *buf, u32 bufLen); extern u32 mmc_rpmb_get_size(void); extern u32 mmc_rpmb_get_rel_wr_sec_c(void); #endif