/* SPDX-License-Identifier: BSD-3-Clause */
|
/*
|
* Copyright (c) 2020-2021 Rockchip Electronics Co., Ltd.
|
*/
|
|
#ifndef _HAL_DEF_H_
|
#define _HAL_DEF_H_
|
|
#include "Soc.h"
|
|
/* SOC OPS Marco */
|
#define SET_BIT(REG, BIT) ((*(volatile uint32_t *)&(REG)) |= (BIT))
|
#define CLEAR_BIT(REG, MASK) ((*(volatile uint32_t *)&(REG)) &= ~(MASK))
|
#define READ_BIT(REG, MASK) ((*(volatile const uint32_t *)&(REG)) & (MASK))
|
#define CLEAR_REG(REG) ((*(volatile uint32_t *)&(REG)) = (0x0))
|
#define WRITE_REG(REG, VAL) ((*(volatile uint32_t *)&(REG)) = (VAL))
|
#define READ_REG(REG) ((*(volatile const uint32_t *)&(REG)))
|
#define MODIFY_REG(REG, CLEARMASK, SETMASK) \
|
WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))
|
#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL)))
|
|
#if defined(__GNUC__) || defined(__CC_ARM)
|
#define MASK_TO_WE(msk) (__builtin_constant_p(msk) ? ((msk) > 0xFFFFU ? 0 : ((msk) << 16)) : ((msk) << 16))
|
#else
|
#define MASK_TO_WE(msk) ((msk) << 16)
|
#endif
|
#define VAL_MASK_WE(msk, val) ((MASK_TO_WE(msk)) | (val))
|
#define WRITE_REG_MASK_WE(reg, msk, val) WRITE_REG(reg, (VAL_MASK_WE(msk, val)))
|
|
/* Misc OPS Marco */
|
#define HAL_MAX_DELAY 0xFFFFFFFFU
|
|
#define RESET 0
|
#define HAL_IS_BIT_SET(REG, MASK) (((*(volatile uint32_t *)&(REG)) & (MASK)) != RESET)
|
#define HAL_IS_BIT_CLR(REG, MASK) (((*(volatile uint32_t *)&(REG)) & (MASK)) == RESET)
|
|
#define HAL_BIT(nr) (1UL << (nr))
|
#define HAL_ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0]))
|
#define HAL_MAX(x, y) ((x) > (y) ? (x) : (y))
|
#define HAL_MIN(x, y) ((x) < (y) ? (x) : (y))
|
|
#define HAL_DIV_ROUND_UP(x, y) (((x) + (y) - 1) / (y))
|
|
#define HAL_IS_ALIGNED(x, a) (((x) & (a - 1)) == 0)
|
#ifdef CACHE_LINE_SIZE
|
#define HAL_IS_CACHELINE_ALIGNED(x) HAL_IS_ALIGNED((uint32_t)(x), CACHE_LINE_SIZE)
|
#else
|
#define HAL_IS_CACHELINE_ALIGNED(x) HAL_IS_ALIGNED((uint32_t)(x), 4)
|
#endif
|
|
/* Compiller Macro */
|
#if defined(__GNUC__) || defined(__clang__) || defined(__CC_ARM) || defined(__ICCARM__)
|
#define HAL_UNUSED __attribute__((__unused__))
|
#else
|
#define HAL_UNUSED
|
#endif
|
|
#ifdef CACHE_LINE_SIZE
|
#define HAL_CACHELINE_ALIGNED __ALIGNED(CACHE_LINE_SIZE)
|
#else
|
#define HAL_CACHELINE_ALIGNED
|
#endif
|
|
#ifdef HAL_SRAM_SECTION_ENABLED
|
#define HAL_SECTION_SRAM_CODE __attribute__((section(".sram_code")))
|
#define HAL_SECTION_SRAM_RODATA __attribute__((section(".sram_rodata")))
|
#define HAL_SECTION_SRAM_DATA __attribute__((section(".sram_data")))
|
#define HAL_SECTION_SRAM_BSS __attribute__((section(".sram_bss")))
|
#else
|
#define HAL_SECTION_SRAM_CODE
|
#define HAL_SECTION_SRAM_RODATA
|
#define HAL_SECTION_SRAM_DATA
|
#define HAL_SECTION_SRAM_BSS
|
#endif
|
|
#ifdef HAL_PSRAM_SECTION_ENABLED
|
#define HAL_SECTION_PSRAM_CODE __attribute__((section(".psram_code")))
|
#define HAL_SECTION_PSRAM_RODATA __attribute__((section(".psram_rodata")))
|
#define HAL_SECTION_PSRAM_DATA __attribute__((section(".psram_data")))
|
#define HAL_SECTION_PSRAM_BSS __attribute__((section(".psram_bss")))
|
#else
|
#define HAL_SECTION_PSRAM_CODE
|
#define HAL_SECTION_PSRAM_RODATA
|
#define HAL_SECTION_PSRAM_DATA
|
#define HAL_SECTION_PSRAM_BSS
|
#endif
|
|
#ifdef HAL_XIP_SECTION_ENABLED
|
#define HAL_SECTION_XIP_CODE __attribute__((section(".xip_code")))
|
#define HAL_SECTION_XIP_RODATA __attribute__((section(".xip_rodata")))
|
#else
|
#define HAL_SECTION_XIP_CODE
|
#define HAL_SECTION_XIP_RODATA
|
#endif
|
|
typedef enum {
|
HAL_SYSTICK_CLKSRC_CORE,
|
HAL_SYSTICK_CLKSRC_EXT
|
} eHAL_systickClkSource;
|
|
#define IS_SYSTICK_SOURCE(s) (((s) == HAL_SYSTICK_CLKSRC_CORE) || ((s) == HAL_SYSTICK_CLKSRC_EXT))
|
|
/***************************** Structure Definition **************************/
|
typedef enum {
|
HAL_FALSE = 0x00U,
|
HAL_TRUE = 0x01U
|
} HAL_Check;
|
|
typedef enum {
|
HAL_OK = 0x00U,
|
HAL_ERROR = (-1),
|
HAL_BUSY = (-16),
|
HAL_NODEV = (-19),
|
HAL_INVAL = (-22),
|
HAL_NOSYS = (-38),
|
HAL_TIMEOUT = (-110)
|
} HAL_Status;
|
|
typedef enum {
|
HAL_DISABLE = 0x00U,
|
HAL_ENABLE = 0x01U
|
} HAL_FuncStatus;
|
|
typedef enum {
|
HAL_UNLOCKED = 0x00U,
|
HAL_LOCKED = 0x01U
|
} HAL_LockStatus;
|
|
typedef enum {
|
GPIO_BANK0 = 0,
|
GPIO_BANK1 = 1,
|
GPIO_BANK2 = 2,
|
GPIO_BANK3 = 3,
|
GPIO_BANK4 = 4,
|
GPIO_BANK_NUM
|
} eGPIO_bankId;
|
|
typedef void (*pFunc)(void);
|
|
/***************************** Function Declare ******************************/
|
|
#endif
|