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