diff options
Diffstat (limited to 'drivers/staging/kpc2000/kpc2000/dma_common_defs.h')
-rw-r--r-- | drivers/staging/kpc2000/kpc2000/dma_common_defs.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/drivers/staging/kpc2000/kpc2000/dma_common_defs.h b/drivers/staging/kpc2000/kpc2000/dma_common_defs.h new file mode 100644 index 000000000000..f35e636b1fb7 --- /dev/null +++ b/drivers/staging/kpc2000/kpc2000/dma_common_defs.h @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +#ifndef KPC_DMA_COMMON_DEFS_H_ +#define KPC_DMA_COMMON_DEFS_H_ + +#define KPC_DMA_COMMON_OFFSET 0x4000 +#define KPC_DMA_S2C_BASE_OFFSET 0x0000 +#define KPC_DMA_C2S_BASE_OFFSET 0x2000 +#define KPC_DMA_ENGINE_SIZE 0x0100 +#define ENGINE_CAP_PRESENT_MASK 0x1 + + +#define KPC_DMA_CARD_IRQ_ENABLE (1 << 0) +#define KPC_DMA_CARD_IRQ_ACTIVE (1 << 1) +#define KPC_DMA_CARD_IRQ_PENDING (1 << 2) +#define KPC_DMA_CARD_IRQ_MSI (1 << 3) +#define KPC_DMA_CARD_USER_INTERRUPT_MODE (1 << 4) +#define KPC_DMA_CARD_USER_INTERRUPT_ACTIVE (1 << 5) +#define KPC_DMA_CARD_IRQ_MSIX_MODE (1 << 6) +#define KPC_DMA_CARD_MAX_PAYLOAD_SIZE_MASK 0x0700 +#define KPC_DMA_CARD_MAX_READ_REQUEST_SIZE_MASK 0x7000 +#define KPC_DMA_CARD_S2C_INTERRUPT_STATUS_MASK 0x00FF0000 +#define KPC_DMA_CARD_C2S_INTERRUPT_STATUS_MASK 0xFF000000 + +static inline void SetBackEndControl(void __iomem *regs, u32 value) +{ + writel(value, regs + 0); +} +static inline u32 GetBackEndStatus(void __iomem *regs) +{ + return readl(regs + 0); +} + +static inline u32 BackEndControlSetClear(void __iomem *regs, u32 set_bits, u32 clear_bits) +{ + u32 start_val = GetBackEndStatus(regs); + u32 new_val = start_val; + new_val &= ~clear_bits; + new_val |= set_bits; + SetBackEndControl(regs, new_val); + return start_val; +} + +#endif /* KPC_DMA_COMMON_DEFS_H_ */ |