1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2018, Intel Corporation. */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef _ICE_OSDEP_H_ 5*4882a593Smuzhiyun #define _ICE_OSDEP_H_ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include <linux/types.h> 8*4882a593Smuzhiyun #include <linux/io.h> 9*4882a593Smuzhiyun #ifndef CONFIG_64BIT 10*4882a593Smuzhiyun #include <linux/io-64-nonatomic-lo-hi.h> 11*4882a593Smuzhiyun #endif 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #define wr32(a, reg, value) writel((value), ((a)->hw_addr + (reg))) 14*4882a593Smuzhiyun #define rd32(a, reg) readl((a)->hw_addr + (reg)) 15*4882a593Smuzhiyun #define wr64(a, reg, value) writeq((value), ((a)->hw_addr + (reg))) 16*4882a593Smuzhiyun #define rd64(a, reg) readq((a)->hw_addr + (reg)) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define ice_flush(a) rd32((a), GLGEN_STAT) 19*4882a593Smuzhiyun #define ICE_M(m, s) ((m) << (s)) 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun struct ice_dma_mem { 22*4882a593Smuzhiyun void *va; 23*4882a593Smuzhiyun dma_addr_t pa; 24*4882a593Smuzhiyun size_t size; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #define ice_hw_to_dev(ptr) \ 28*4882a593Smuzhiyun (&(container_of((ptr), struct ice_pf, hw))->pdev->dev) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #ifdef CONFIG_DYNAMIC_DEBUG 31*4882a593Smuzhiyun #define ice_debug(hw, type, fmt, args...) \ 32*4882a593Smuzhiyun dev_dbg(ice_hw_to_dev(hw), fmt, ##args) 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 35*4882a593Smuzhiyun print_hex_dump_debug(KBUILD_MODNAME " ", \ 36*4882a593Smuzhiyun DUMP_PREFIX_OFFSET, rowsize, \ 37*4882a593Smuzhiyun groupsize, buf, len, false) 38*4882a593Smuzhiyun #else 39*4882a593Smuzhiyun #define ice_debug(hw, type, fmt, args...) \ 40*4882a593Smuzhiyun do { \ 41*4882a593Smuzhiyun if ((type) & (hw)->debug_mask) \ 42*4882a593Smuzhiyun dev_info(ice_hw_to_dev(hw), fmt, ##args); \ 43*4882a593Smuzhiyun } while (0) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #ifdef DEBUG 46*4882a593Smuzhiyun #define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 47*4882a593Smuzhiyun do { \ 48*4882a593Smuzhiyun if ((type) & (hw)->debug_mask) \ 49*4882a593Smuzhiyun print_hex_dump_debug(KBUILD_MODNAME, \ 50*4882a593Smuzhiyun DUMP_PREFIX_OFFSET, \ 51*4882a593Smuzhiyun rowsize, groupsize, buf, \ 52*4882a593Smuzhiyun len, false); \ 53*4882a593Smuzhiyun } while (0) 54*4882a593Smuzhiyun #else 55*4882a593Smuzhiyun #define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 56*4882a593Smuzhiyun do { \ 57*4882a593Smuzhiyun struct ice_hw *hw_l = hw; \ 58*4882a593Smuzhiyun if ((type) & (hw_l)->debug_mask) { \ 59*4882a593Smuzhiyun u16 len_l = len; \ 60*4882a593Smuzhiyun u8 *buf_l = buf; \ 61*4882a593Smuzhiyun int i; \ 62*4882a593Smuzhiyun for (i = 0; i < (len_l - 16); i += 16) \ 63*4882a593Smuzhiyun ice_debug(hw_l, type, "0x%04X %16ph\n",\ 64*4882a593Smuzhiyun i, ((buf_l) + i)); \ 65*4882a593Smuzhiyun if (i < len_l) \ 66*4882a593Smuzhiyun ice_debug(hw_l, type, "0x%04X %*ph\n", \ 67*4882a593Smuzhiyun i, ((len_l) - i), ((buf_l) + i));\ 68*4882a593Smuzhiyun } \ 69*4882a593Smuzhiyun } while (0) 70*4882a593Smuzhiyun #endif /* DEBUG */ 71*4882a593Smuzhiyun #endif /* CONFIG_DYNAMIC_DEBUG */ 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #endif /* _ICE_OSDEP_H_ */ 74