summaryrefslogtreecommitdiff
path: root/include/linux/mdss_smmu_ext.h
blob: 12ad4305f145ffe033c077370497b0438b0fb4cc (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
/* Copyright (c) 2017, 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.
 * @reg_lock /reg_unlock: Lock to access shared registers.
 */
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);
	void (*reg_lock)(void);
	void (*reg_unlock)(void);
	bool (*handoff_pending)(void);
};

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
 */

int mdss_smmu_request_mappings(msm_smmu_handler_t callback);

#endif /* MDSS_SMMU_EXT_H */