xref: /freebsd/sys/dev/qlnx/qlnxe/ecore_utils.h (revision 95ee2897e98f5d444f26ed2334cc7c439f9c16c6)
111e25f0dSDavid C Somayajulu /*
211e25f0dSDavid C Somayajulu  * Copyright (c) 2017-2018 Cavium, Inc.
311e25f0dSDavid C Somayajulu  * All rights reserved.
411e25f0dSDavid C Somayajulu  *
511e25f0dSDavid C Somayajulu  *  Redistribution and use in source and binary forms, with or without
611e25f0dSDavid C Somayajulu  *  modification, are permitted provided that the following conditions
711e25f0dSDavid C Somayajulu  *  are met:
811e25f0dSDavid C Somayajulu  *
911e25f0dSDavid C Somayajulu  *  1. Redistributions of source code must retain the above copyright
1011e25f0dSDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer.
1111e25f0dSDavid C Somayajulu  *  2. Redistributions in binary form must reproduce the above copyright
1211e25f0dSDavid C Somayajulu  *     notice, this list of conditions and the following disclaimer in the
1311e25f0dSDavid C Somayajulu  *     documentation and/or other materials provided with the distribution.
1411e25f0dSDavid C Somayajulu  *
1511e25f0dSDavid C Somayajulu  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1611e25f0dSDavid C Somayajulu  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1711e25f0dSDavid C Somayajulu  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1811e25f0dSDavid C Somayajulu  *  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1911e25f0dSDavid C Somayajulu  *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2011e25f0dSDavid C Somayajulu  *  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2111e25f0dSDavid C Somayajulu  *  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2211e25f0dSDavid C Somayajulu  *  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2311e25f0dSDavid C Somayajulu  *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2411e25f0dSDavid C Somayajulu  *  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2511e25f0dSDavid C Somayajulu  *  POSSIBILITY OF SUCH DAMAGE.
2611e25f0dSDavid C Somayajulu  *
2711e25f0dSDavid C Somayajulu  */
2811e25f0dSDavid C Somayajulu 
2911e25f0dSDavid C Somayajulu #ifndef __ECORE_UTILS_H__
3011e25f0dSDavid C Somayajulu #define __ECORE_UTILS_H__
3111e25f0dSDavid C Somayajulu 
3211e25f0dSDavid C Somayajulu /* dma_addr_t manip */
3311e25f0dSDavid C Somayajulu /* Suppress "right shift count >= width of type" warning when that quantity is
3411e25f0dSDavid C Somayajulu  * 32-bits rquires the >> 16) >> 16)
3511e25f0dSDavid C Somayajulu  */
3611e25f0dSDavid C Somayajulu #define PTR_LO(x)		((u32)(((osal_uintptr_t)(x)) & 0xffffffff))
3711e25f0dSDavid C Somayajulu #define PTR_HI(x)		((u32)((((osal_uintptr_t)(x)) >> 16) >> 16))
3811e25f0dSDavid C Somayajulu 
3911e25f0dSDavid C Somayajulu #define DMA_LO(x)		((u32)(((dma_addr_t)(x)) & 0xffffffff))
4011e25f0dSDavid C Somayajulu #define DMA_HI(x)		((u32)(((dma_addr_t)(x)) >> 32))
4111e25f0dSDavid C Somayajulu 
4211e25f0dSDavid C Somayajulu #define DMA_LO_LE(x)		OSAL_CPU_TO_LE32(DMA_LO(x))
4311e25f0dSDavid C Somayajulu #define DMA_HI_LE(x)		OSAL_CPU_TO_LE32(DMA_HI(x))
4411e25f0dSDavid C Somayajulu 
4511e25f0dSDavid C Somayajulu /* It's assumed that whoever includes this has previously included an hsi
4611e25f0dSDavid C Somayajulu  * file defining the regpair.
4711e25f0dSDavid C Somayajulu  */
4811e25f0dSDavid C Somayajulu #define DMA_REGPAIR_LE(x, val)	(x).hi = DMA_HI_LE((val)); \
4911e25f0dSDavid C Somayajulu 				(x).lo = DMA_LO_LE((val))
5011e25f0dSDavid C Somayajulu 
5111e25f0dSDavid C Somayajulu #define HILO_GEN(hi, lo, type)	((((type)(hi)) << 32) + (lo))
5211e25f0dSDavid C Somayajulu #define HILO_DMA(hi, lo)	HILO_GEN(hi, lo, dma_addr_t)
5311e25f0dSDavid C Somayajulu #define HILO_64(hi, lo)		HILO_GEN(hi, lo, u64)
5411e25f0dSDavid C Somayajulu #define HILO_DMA_REGPAIR(regpair)	(HILO_DMA(regpair.hi, regpair.lo))
5511e25f0dSDavid C Somayajulu #define HILO_64_REGPAIR(regpair)	(HILO_64(regpair.hi, regpair.lo))
5611e25f0dSDavid C Somayajulu 
57*217ec208SDavid C Somayajulu #ifndef USHRT_MAX
58*217ec208SDavid C Somayajulu #define USHRT_MAX       ((u16)(~0U))
59*217ec208SDavid C Somayajulu #endif
60*217ec208SDavid C Somayajulu 
6111e25f0dSDavid C Somayajulu #endif
62