huawei-mrd-kernel/drivers/iommu/mtk_iommu_ext.h

85 lines
2.1 KiB
C

/*
* Copyright (c) 2015-2016 MediaTek Inc.
* Author: Honghui Zhang <honghui.zhang@mediatek.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _MTK_IOMMU_EXT_H_
#define _MTK_IOMMU_EXT_H_
#include <linux/io.h>
extern phys_addr_t mtkfb_get_fb_base(void);
size_t mtkfb_get_fb_size(void);
int smi_reg_backup_sec(void);
int smi_reg_restore_sec(void);
enum mtk_iommu_callback_ret_t {
MTK_IOMMU_CALLBACK_HANDLED,
MTK_IOMMU_CALLBACK_NOT_HANDLED,
};
typedef enum mtk_iommu_callback_ret_t (*mtk_iommu_fault_callback_t)(int port,
unsigned int mva, void *cb_data);
int mtk_iommu_register_fault_callback(int port,
mtk_iommu_fault_callback_t fn,
void *cb_data);
int mtk_iommu_unregister_fault_callback(int port);
int mtk_iommu_enable_tf(int port, bool fgenable);
int mtk_iommu_iova_to_va(struct device *dev,
dma_addr_t iova,
unsigned long *map_va,
size_t size);
int mtk_smi_larb_get_ext(struct device *larbdev);
bool enable_custom_tf_report(void);
bool report_custom_iommu_fault(
void __iomem *base,
unsigned int int_state,
unsigned int fault_iova,
unsigned int fault_pa,
unsigned int fault_id);
void mtk_iommu_debug_init(void);
void mtk_iommu_debug_reset(void);
enum IOMMU_PROFILE_TYPE {
IOMMU_ALLOC = 0,
IOMMU_DEALLOC,
IOMMU_MAP,
IOMMU_UNMAP,
IOMMU_EVENT_MAX,
};
void mtk_iommu_trace_map(unsigned long orig_iova,
phys_addr_t orig_pa,
size_t size);
void mtk_iommu_trace_unmap(unsigned long orig_iova,
size_t size,
size_t unmapped);
void mtk_iommu_trace_log(int event,
unsigned int data1,
unsigned int data2,
unsigned int data3);
void mtk_iommu_log_dump(void *seq_file);
#if 0
void mtk_smi_larb_put(struct device *larbdev);
int mtk_smi_larb_ready(int larbid);
#endif
#endif