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