brintos

brintos / linux-shallow public Read only

0
0
Text · 1.2 KiB · 6fa35c2 Raw
52 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (C) 2020-2023 Intel Corporation4 */5 6#ifndef __IVPU_MMU_H__7#define __IVPU_MMU_H__8 9struct ivpu_device;10 11struct ivpu_mmu_cdtab {12	void *base;13	dma_addr_t dma;14};15 16struct ivpu_mmu_strtab {17	void *base;18	dma_addr_t dma;19	u64 dma_q;20	u32 base_cfg;21};22 23struct ivpu_mmu_queue {24	void *base;25	dma_addr_t dma;26	u64 dma_q;27	u32 prod;28	u32 cons;29};30 31struct ivpu_mmu_info {32	struct mutex lock; /* Protects cdtab, strtab, cmdq, on */33	struct ivpu_mmu_cdtab cdtab;34	struct ivpu_mmu_strtab strtab;35	struct ivpu_mmu_queue cmdq;36	struct ivpu_mmu_queue evtq;37	bool on;38};39 40int ivpu_mmu_init(struct ivpu_device *vdev);41void ivpu_mmu_disable(struct ivpu_device *vdev);42int ivpu_mmu_enable(struct ivpu_device *vdev);43int ivpu_mmu_set_pgtable(struct ivpu_device *vdev, int ssid, struct ivpu_mmu_pgtable *pgtable);44void ivpu_mmu_clear_pgtable(struct ivpu_device *vdev, int ssid);45int ivpu_mmu_invalidate_tlb(struct ivpu_device *vdev, u16 ssid);46 47void ivpu_mmu_irq_evtq_handler(struct ivpu_device *vdev);48void ivpu_mmu_irq_gerr_handler(struct ivpu_device *vdev);49void ivpu_mmu_evtq_dump(struct ivpu_device *vdev);50 51#endif /* __IVPU_MMU_H__ */52