1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  *
4  * (C) COPYRIGHT 2017, 2020-2021 ARM Limited. All rights reserved.
5  *
6  * This program is free software and is provided to you under the terms of the
7  * GNU General Public License version 2 as published by the Free Software
8  * Foundation, and any use by you of this program is subject to the terms
9  * of such GNU license.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, you can access it online at
18  * http://www.gnu.org/licenses/gpl-2.0.html.
19  *
20  */
21 
22 #ifndef _PROTECTED_MODE_SWITCH_H_
23 #define _PROTECTED_MODE_SWITCH_H_
24 
25 struct protected_mode_device;
26 
27 /**
28  * struct protected_mode_ops - Callbacks for protected mode switch operations
29  *
30  * @protected_mode_enable:  Callback to enable protected mode for device
31  * @protected_mode_disable: Callback to disable protected mode for device
32  */
33 struct protected_mode_ops {
34 	/*
35 	 * protected_mode_enable() - Enable protected mode on device
36 	 * @dev:	The struct device
37 	 *
38 	 * Return: 0 on success, non-zero on error
39 	 */
40 	int (*protected_mode_enable)(
41 			struct protected_mode_device *protected_dev);
42 
43 	/*
44 	 * protected_mode_disable() - Disable protected mode on device, and
45 	 *                            reset device
46 	 * @dev:	The struct device
47 	 *
48 	 * Return: 0 on success, non-zero on error
49 	 */
50 	int (*protected_mode_disable)(
51 			struct protected_mode_device *protected_dev);
52 };
53 
54 /**
55  * struct protected_mode_device - Device structure for protected mode devices
56  *
57  * @ops:  Callbacks associated with this device
58  * @data: Pointer to device private data
59  *
60  * This structure should be registered with the platform device using
61  * platform_set_drvdata().
62  */
63 struct protected_mode_device {
64 	struct protected_mode_ops ops;
65 	void *data;
66 };
67 
68 #endif /* _PROTECTED_MODE_SWITCH_H_ */
69