1*3126df22SRasesh Mody /* SPDX-License-Identifier: BSD-3-Clause 29adde217SRasesh Mody * Copyright (c) 2016 - 2018 Cavium Inc. 3ec94dbc5SRasesh Mody * All rights reserved. 49adde217SRasesh Mody * www.cavium.com 5ec94dbc5SRasesh Mody */ 6ec94dbc5SRasesh Mody 7ec94dbc5SRasesh Mody #ifndef __ECORE_UTILS_H__ 8ec94dbc5SRasesh Mody #define __ECORE_UTILS_H__ 9ec94dbc5SRasesh Mody 10ec94dbc5SRasesh Mody /* dma_addr_t manip */ 11d54bd20dSRasesh Mody /* Suppress "right shift count >= width of type" warning when that quantity is 12d54bd20dSRasesh Mody * 32-bits rquires the >> 16) >> 16) 13d54bd20dSRasesh Mody */ 14d54bd20dSRasesh Mody #define PTR_LO(x) ((u32)(((osal_uintptr_t)(x)) & 0xffffffff)) 15d54bd20dSRasesh Mody #define PTR_HI(x) ((u32)((((osal_uintptr_t)(x)) >> 16) >> 16)) 16d54bd20dSRasesh Mody 17ec94dbc5SRasesh Mody #define DMA_LO(x) ((u32)(((dma_addr_t)(x)) & 0xffffffff)) 18ec94dbc5SRasesh Mody #define DMA_HI(x) ((u32)(((dma_addr_t)(x)) >> 32)) 19ec94dbc5SRasesh Mody 20ec94dbc5SRasesh Mody #define DMA_LO_LE(x) OSAL_CPU_TO_LE32(DMA_LO(x)) 21ec94dbc5SRasesh Mody #define DMA_HI_LE(x) OSAL_CPU_TO_LE32(DMA_HI(x)) 22ec94dbc5SRasesh Mody 23ec94dbc5SRasesh Mody /* It's assumed that whoever includes this has previously included an hsi 24ec94dbc5SRasesh Mody * file defining the regpair. 25ec94dbc5SRasesh Mody */ 26ec94dbc5SRasesh Mody #define DMA_REGPAIR_LE(x, val) (x).hi = DMA_HI_LE((val)); \ 27ec94dbc5SRasesh Mody (x).lo = DMA_LO_LE((val)) 28ec94dbc5SRasesh Mody 29ec94dbc5SRasesh Mody #define HILO_GEN(hi, lo, type) ((((type)(hi)) << 32) + (lo)) 30ec94dbc5SRasesh Mody #define HILO_DMA(hi, lo) HILO_GEN(hi, lo, dma_addr_t) 31ec94dbc5SRasesh Mody #define HILO_64(hi, lo) HILO_GEN(hi, lo, u64) 32ec94dbc5SRasesh Mody #define HILO_DMA_REGPAIR(regpair) (HILO_DMA(regpair.hi, regpair.lo)) 33ec94dbc5SRasesh Mody #define HILO_64_REGPAIR(regpair) (HILO_64(regpair.hi, regpair.lo)) 34ec94dbc5SRasesh Mody 35ec94dbc5SRasesh Mody #endif 36