MDP and ROT use same Smmu context banks. If rotation request comes when MDP is operating on physical address then fail the request such that composition can fall back onto GPU. Allow HW rotation when MDP switches to Virtual address access. Change-Id: I8662855ddd09d9ca2bb074a0bcc11e759a6809df Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
53 lines
1.8 KiB
C
53 lines
1.8 KiB
C
/* 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 */
|