| // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause |
| /* |
| * Copyright (C) 2025 Intel Corporation |
| */ |
| |
| #ifndef __iwl_pcie_utils_h__ |
| #define __iwl_pcie_utils_h__ |
| |
| #include "iwl-io.h" |
| |
| void iwl_trans_pcie_dump_regs(struct iwl_trans *trans, struct pci_dev *pdev); |
| |
| static inline void _iwl_trans_set_bits_mask(struct iwl_trans *trans, |
| u32 reg, u32 mask, u32 value) |
| { |
| u32 v; |
| |
| #ifdef CONFIG_IWLWIFI_DEBUG |
| WARN_ON_ONCE(value & ~mask); |
| #endif |
| |
| v = iwl_read32(trans, reg); |
| v &= ~mask; |
| v |= value; |
| iwl_write32(trans, reg, v); |
| } |
| |
| static inline void iwl_trans_clear_bit(struct iwl_trans *trans, |
| u32 reg, u32 mask) |
| { |
| _iwl_trans_set_bits_mask(trans, reg, mask, 0); |
| } |
| |
| static inline void iwl_trans_set_bit(struct iwl_trans *trans, |
| u32 reg, u32 mask) |
| { |
| _iwl_trans_set_bits_mask(trans, reg, mask, mask); |
| } |
| |
| #endif /* __iwl_pcie_utils_h__ */ |