1 /* 2 * Copyright (c) 2001-2019, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 8 #ifndef _CC_LLI_DEFS_H_ 9 #define _CC_LLI_DEFS_H_ 10 #ifdef __KERNEL__ 11 #include <linux/types.h> 12 #else 13 #include <stdint.h> 14 #endif 15 #include "cc_bitops.h" 16 17 /* Max DLLI size */ 18 #define DLLI_SIZE_BIT_SIZE 0x18 // DX_DSCRPTR_QUEUE_WORD1_DIN_SIZE_BIT_SIZE 19 20 #define CC_MAX_MLLI_ENTRY_SIZE 0x10000 21 22 #define LLI_SET_ADDR(lli_p, addr) \ 23 BITFIELD_SET(((uint32_t *)(lli_p))[LLI_WORD0_OFFSET], LLI_LADDR_BIT_OFFSET, LLI_LADDR_BIT_SIZE, (addr & UINT32_MAX)); \ 24 BITFIELD_SET(((uint32_t *)(lli_p))[LLI_WORD1_OFFSET], LLI_HADDR_BIT_OFFSET, LLI_HADDR_BIT_SIZE, ((addr >> 32) & UINT16_MAX)); 25 26 #define LLI_SET_SIZE(lli_p, size) \ 27 BITFIELD_SET(((uint32_t *)(lli_p))[LLI_WORD1_OFFSET], LLI_SIZE_BIT_OFFSET, LLI_SIZE_BIT_SIZE, size) 28 29 30 /* Size of entry */ 31 #define LLI_ENTRY_WORD_SIZE 2 32 #define LLI_ENTRY_BYTE_SIZE (LLI_ENTRY_WORD_SIZE * sizeof(uint32_t)) 33 34 /* Word0[31:0] = ADDR[31:0] */ 35 #define LLI_WORD0_OFFSET 0 36 #define LLI_LADDR_BIT_OFFSET 0 37 #define LLI_LADDR_BIT_SIZE 32 38 /* Word1[31:16] = ADDR[47:32]; Word1[15:0] = SIZE */ 39 #define LLI_WORD1_OFFSET 1 40 #define LLI_SIZE_BIT_OFFSET 0 41 #define LLI_SIZE_BIT_SIZE 16 42 #define LLI_HADDR_BIT_OFFSET 16 43 #define LLI_HADDR_BIT_SIZE 16 44 45 46 #endif /*_CC_LLI_DEFS_H_*/ 47