162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (c) 2018, Intel Corporation. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _ICE_OSDEP_H_ 562306a36Sopenharmony_ci#define _ICE_OSDEP_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/types.h> 862306a36Sopenharmony_ci#include <linux/ctype.h> 962306a36Sopenharmony_ci#include <linux/delay.h> 1062306a36Sopenharmony_ci#include <linux/io.h> 1162306a36Sopenharmony_ci#include <linux/bitops.h> 1262306a36Sopenharmony_ci#include <linux/ethtool.h> 1362306a36Sopenharmony_ci#include <linux/etherdevice.h> 1462306a36Sopenharmony_ci#include <linux/if_ether.h> 1562306a36Sopenharmony_ci#include <linux/pci_ids.h> 1662306a36Sopenharmony_ci#ifndef CONFIG_64BIT 1762306a36Sopenharmony_ci#include <linux/io-64-nonatomic-lo-hi.h> 1862306a36Sopenharmony_ci#endif 1962306a36Sopenharmony_ci#include <net/udp_tunnel.h> 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define wr32(a, reg, value) writel((value), ((a)->hw_addr + (reg))) 2262306a36Sopenharmony_ci#define rd32(a, reg) readl((a)->hw_addr + (reg)) 2362306a36Sopenharmony_ci#define wr64(a, reg, value) writeq((value), ((a)->hw_addr + (reg))) 2462306a36Sopenharmony_ci#define rd64(a, reg) readq((a)->hw_addr + (reg)) 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#define ice_flush(a) rd32((a), GLGEN_STAT) 2762306a36Sopenharmony_ci#define ICE_M(m, s) ((m) << (s)) 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_cistruct ice_dma_mem { 3062306a36Sopenharmony_ci void *va; 3162306a36Sopenharmony_ci dma_addr_t pa; 3262306a36Sopenharmony_ci size_t size; 3362306a36Sopenharmony_ci}; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cistruct ice_hw; 3662306a36Sopenharmony_cistruct device *ice_hw_to_dev(struct ice_hw *hw); 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci#ifdef CONFIG_DYNAMIC_DEBUG 3962306a36Sopenharmony_ci#define ice_debug(hw, type, fmt, args...) \ 4062306a36Sopenharmony_ci dev_dbg(ice_hw_to_dev(hw), fmt, ##args) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 4362306a36Sopenharmony_ci print_hex_dump_debug(KBUILD_MODNAME " ", \ 4462306a36Sopenharmony_ci DUMP_PREFIX_OFFSET, rowsize, \ 4562306a36Sopenharmony_ci groupsize, buf, len, false) 4662306a36Sopenharmony_ci#else 4762306a36Sopenharmony_ci#define ice_debug(hw, type, fmt, args...) \ 4862306a36Sopenharmony_cido { \ 4962306a36Sopenharmony_ci if ((type) & (hw)->debug_mask) \ 5062306a36Sopenharmony_ci dev_info(ice_hw_to_dev(hw), fmt, ##args); \ 5162306a36Sopenharmony_ci} while (0) 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#ifdef DEBUG 5462306a36Sopenharmony_ci#define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 5562306a36Sopenharmony_cido { \ 5662306a36Sopenharmony_ci if ((type) & (hw)->debug_mask) \ 5762306a36Sopenharmony_ci print_hex_dump_debug(KBUILD_MODNAME, \ 5862306a36Sopenharmony_ci DUMP_PREFIX_OFFSET, \ 5962306a36Sopenharmony_ci rowsize, groupsize, buf, \ 6062306a36Sopenharmony_ci len, false); \ 6162306a36Sopenharmony_ci} while (0) 6262306a36Sopenharmony_ci#else 6362306a36Sopenharmony_ci#define ice_debug_array(hw, type, rowsize, groupsize, buf, len) \ 6462306a36Sopenharmony_cido { \ 6562306a36Sopenharmony_ci struct ice_hw *hw_l = hw; \ 6662306a36Sopenharmony_ci if ((type) & (hw_l)->debug_mask) { \ 6762306a36Sopenharmony_ci u16 len_l = len; \ 6862306a36Sopenharmony_ci u8 *buf_l = buf; \ 6962306a36Sopenharmony_ci int i; \ 7062306a36Sopenharmony_ci for (i = 0; i < (len_l - 16); i += 16) \ 7162306a36Sopenharmony_ci ice_debug(hw_l, type, "0x%04X %16ph\n",\ 7262306a36Sopenharmony_ci i, ((buf_l) + i)); \ 7362306a36Sopenharmony_ci if (i < len_l) \ 7462306a36Sopenharmony_ci ice_debug(hw_l, type, "0x%04X %*ph\n", \ 7562306a36Sopenharmony_ci i, ((len_l) - i), ((buf_l) + i));\ 7662306a36Sopenharmony_ci } \ 7762306a36Sopenharmony_ci} while (0) 7862306a36Sopenharmony_ci#endif /* DEBUG */ 7962306a36Sopenharmony_ci#endif /* CONFIG_DYNAMIC_DEBUG */ 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci#endif /* _ICE_OSDEP_H_ */ 82