13d0407baSopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 23d0407baSopenharmony_ci/* 33d0407baSopenharmony_ci * 43d0407baSopenharmony_ci * (C) COPYRIGHT 2017, 2020-2021 ARM Limited. All rights reserved. 53d0407baSopenharmony_ci * 63d0407baSopenharmony_ci * This program is free software and is provided to you under the terms of the 73d0407baSopenharmony_ci * GNU General Public License version 2 as published by the Free Software 83d0407baSopenharmony_ci * Foundation, and any use by you of this program is subject to the terms 93d0407baSopenharmony_ci * of such GNU license. 103d0407baSopenharmony_ci * 113d0407baSopenharmony_ci * This program is distributed in the hope that it will be useful, 123d0407baSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 133d0407baSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 143d0407baSopenharmony_ci * GNU General Public License for more details. 153d0407baSopenharmony_ci * 163d0407baSopenharmony_ci * You should have received a copy of the GNU General Public License 173d0407baSopenharmony_ci * along with this program; if not, you can access it online at 183d0407baSopenharmony_ci * http://www.gnu.org/licenses/gpl-2.0.html. 193d0407baSopenharmony_ci * 203d0407baSopenharmony_ci */ 213d0407baSopenharmony_ci 223d0407baSopenharmony_ci#ifndef _PROTECTED_MODE_SWITCH_H_ 233d0407baSopenharmony_ci#define _PROTECTED_MODE_SWITCH_H_ 243d0407baSopenharmony_ci 253d0407baSopenharmony_cistruct protected_mode_device; 263d0407baSopenharmony_ci 273d0407baSopenharmony_ci/** 283d0407baSopenharmony_ci * struct protected_mode_ops - Callbacks for protected mode switch operations 293d0407baSopenharmony_ci * 303d0407baSopenharmony_ci * @protected_mode_enable: Callback to enable protected mode for device 313d0407baSopenharmony_ci * @protected_mode_disable: Callback to disable protected mode for device 323d0407baSopenharmony_ci */ 333d0407baSopenharmony_cistruct protected_mode_ops { 343d0407baSopenharmony_ci /* 353d0407baSopenharmony_ci * protected_mode_enable() - Enable protected mode on device 363d0407baSopenharmony_ci * @dev: The struct device 373d0407baSopenharmony_ci * 383d0407baSopenharmony_ci * Return: 0 on success, non-zero on error 393d0407baSopenharmony_ci */ 403d0407baSopenharmony_ci int (*protected_mode_enable)( 413d0407baSopenharmony_ci struct protected_mode_device *protected_dev); 423d0407baSopenharmony_ci 433d0407baSopenharmony_ci /* 443d0407baSopenharmony_ci * protected_mode_disable() - Disable protected mode on device, and 453d0407baSopenharmony_ci * reset device 463d0407baSopenharmony_ci * @dev: The struct device 473d0407baSopenharmony_ci * 483d0407baSopenharmony_ci * Return: 0 on success, non-zero on error 493d0407baSopenharmony_ci */ 503d0407baSopenharmony_ci int (*protected_mode_disable)( 513d0407baSopenharmony_ci struct protected_mode_device *protected_dev); 523d0407baSopenharmony_ci}; 533d0407baSopenharmony_ci 543d0407baSopenharmony_ci/** 553d0407baSopenharmony_ci * struct protected_mode_device - Device structure for protected mode devices 563d0407baSopenharmony_ci * 573d0407baSopenharmony_ci * @ops: Callbacks associated with this device 583d0407baSopenharmony_ci * @data: Pointer to device private data 593d0407baSopenharmony_ci * 603d0407baSopenharmony_ci * This structure should be registered with the platform device using 613d0407baSopenharmony_ci * platform_set_drvdata(). 623d0407baSopenharmony_ci */ 633d0407baSopenharmony_cistruct protected_mode_device { 643d0407baSopenharmony_ci struct protected_mode_ops ops; 653d0407baSopenharmony_ci void *data; 663d0407baSopenharmony_ci}; 673d0407baSopenharmony_ci 683d0407baSopenharmony_ci#endif /* _PROTECTED_MODE_SWITCH_H_ */ 69