aboutsummaryrefslogtreecommitdiff
path: root/include/linux/mdss_smmu_ext.h
blob: 82c4e88ed6955709efc810f6ae366cacd5c29d91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/* Copyright (c) 2017,2020 The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only 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 MDSS_SMMU_EXT_H
#define MDSS_SMMU_EXT_H

/**
 * struct msm_smmu:interface exposed to the clients which use smmu driver.
 * @dev:	smmu device for attach/dettach
 * @domain:	domain for the context bank.
 * @is_secure: bool variable to check for secure domain.
 * @iommu_ctrl:	iommu ctrl function for enable/disable attach.
 * @secure_session_ctrl: ctrl function for enable/disable session.
 * @wait_for_transition:function to wait till secure transtion is complete.
 */
struct mdss_smmu_intf {
	struct device *dev;
	int domain;
	bool is_secure;
	int (*iommu_ctrl)(int);
	int (*secure_session_ctrl)(int);
	int (*wait_for_transition)(int state, int request);
};

typedef void (*msm_smmu_handler_t) (struct mdss_smmu_intf *smmu);

/**
 * mdss_smmu_request_mappings: function to request smmu mappings.
 *		Client driver can request smmu dev via this API.
 *		dev will be returned in the same call context
 *		if probe is not finished then dev will be
 *		returned once it is completed.
 * @callback:	callback function that is called to return smmu
 *		dev
 */
#ifdef CONFIG_FB_MSM_MDSS
int mdss_smmu_request_mappings(msm_smmu_handler_t callback);
#else
static inline int mdss_smmu_request_mappings(msm_smmu_handler_t callback)
{
	return 0;
}
#endif
#endif /* MDSS_SMMU_EXT_H */