| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /*
- * Copyright (c) 2022 OpenLuat & AirM2M
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
- #ifndef __AIR105_CACHE_H
- #define __AIR105_CACHE_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "air105.h"
- #define CACHE_REFRESH ((uint32_t)0x80000000)
- #define CACHE_REFRESH_ALLTAG ((uint32_t)0x40000000)
- #define CACHE_KEY_GEN_START ((uint32_t)0x80000000)
- #define CACHE_IS_BUSY ((uint32_t)0x20000000)
- #define CACHE_SIZE ((uint32_t)0x8000)
- #define CACHE_PARTICLE_SIZE (0x20)
- #define CACHE_ADDRESS_START ((uint32_t)0x01000000)
- #define CACHE_ADDRESS_MAX ((uint32_t)0x00FFFFFF)
- #define IS_CACHE_ADDR_VALID(addr) (((addr) & CACHE_ADDRESS_START) == CACHE_ADDRESS_START)
- #define CACHE_AES_BYPASS (0xA5)
- #define CACHE_KEY_GEN (0xA5)
- #define CACHE_WRAP_ENABLE (0xA5)
- #define CACHE_ZONE_ENCRYPT ((uint32_t)0xA5000000)
- #define CACHE_CODE_BUS_OFFSET_POS (0)
- #define CACHE_CODE_BUS_OFFSET_WIDTH (5)
- #define CACHE_CODE_BUS_OFFSET_MASK ((uint32_t)0x001F)
- #define CACHE_CODE_BUS_SET_POS (5)
- #define CACHE_CODE_BUS_SET_WIDTH (8)
- #define CACHE_CODE_BUS_SET_MASK ((uint32_t)0x00FF)
- #define CACHE_CODE_BUS_TAG_POS (13)
- #define CACHE_CODE_BUS_TAG_WIDTH (11)
- #define CACHE_CODE_BUS_TAG_MASK ((uint32_t)0x07FF)
- #define CHCHE_ALGORITHM_SET_POS (28)
- #define CACHE_BUILD_INDEX_OFFSET(x) (((x) & CACHE_CODE_BUS_OFFSET_MASK) << CACHE_CODE_BUS_OFFSET_POS)
- #define CACHE_BUILD_INDEX_SET(x) (((x) & CACHE_CODE_BUS_SET_MASK) << CACHE_CODE_BUS_SET_POS)
- #define CACHE_BUILD_INDEX_TAG(x) (((x) & CACHE_CODE_BUS_TAG_MASK) << CACHE_CODE_BUS_TAG_POS)
- #define CACHE_ADDRESS_BUILD(base,index_set,tag_way,offset) ((base) | CACHE_BUILD_INDEX_SET(index_set) | CACHE_BUILD_INDEX_TAG(tag_way) | CACHE_BUILD_INDEX_OFFSET(offset))
- #define CACHE_TAG_NUM(x) ((x >> CACHE_CODE_BUS_TAG_POS) & CACHE_CODE_BUS_TAG_MASK)
- #define CACHE_SET_NUM(x) ((x >> CACHE_CODE_BUS_SET_POS) & CACHE_CODE_BUS_SET_MASK)
- #define CACHE_OFF_NUM(x) ((x >> CACHE_CODE_BUS_OFFSET_POS) & CACHE_CODE_BUS_OFFSET_MASK)
- typedef enum
- {
- CACHE_Encrypt_Mode_All = 0x0,
- CACHE_Encrypt_Mode_Zone,
- }CACHE_EncryptModeTypeDef;
- #define IS_CACHE_ENCRYPT_MODE(MODE) (((MODE) == CACHE_Encrypt_Mode_All) || \
- ((MODE) == CACHE_Encrypt_Mode_Zone))
- typedef struct
- {
- uint32_t I[4];
- uint32_t K[4];
- uint32_t AES_CS;
- uint32_t CONFIG;
- uint32_t aes_enable;
- uint32_t Address;
- uint32_t size;
- uint32_t algorithm;
- uint32_t encrypt_mode;
- uint32_t encrypt_saddr;
- uint32_t encrypt_eaddr;
- }CACHE_InitTypeDef;
- void CACHE_Init(CACHE_TypeDef *Cache, CACHE_InitTypeDef *CACHE_InitStruct);
- void CACHE_Clean(CACHE_TypeDef *Cache, CACHE_InitTypeDef *CACHE_InitStruct);
- void CACHE_CleanAll(CACHE_TypeDef *Cache);
- #ifdef __cplusplus
- }
- #endif
- #endif
- /************************** (C) COPYRIGHT Megahunt *****END OF FILE****/
|