| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ |
| /* |
| * |
| * (C) COPYRIGHT 2019-2021 ARM Limited. All rights reserved. |
| * |
| * This program is free software and is provided to you under the terms of the |
| * GNU General Public License version 2 as published by the Free Software |
| * Foundation, and any use by you of this program is subject to the terms |
| * of such GNU license. |
| * |
| * 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. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program; if not, you can access it online at |
| * http://www.gnu.org/licenses/gpl-2.0.html. |
| * |
| */ |
| |
| /** |
| * @file |
| * Mali structures define to support arbitration feature |
| */ |
| |
| #ifndef _MALI_KBASE_ARBITER_DEFS_H_ |
| #define _MALI_KBASE_ARBITER_DEFS_H_ |
| |
| #include "mali_kbase_arbiter_pm.h" |
| |
| /** |
| * struct kbase_arbiter_vm_state - Struct representing the state and containing the |
| * data of pm work |
| * @kbdev: Pointer to kbase device structure (must be a valid pointer) |
| * @vm_state_lock: The lock protecting the VM state when arbiter is used. |
| * This lock must also be held whenever the VM state is being |
| * transitioned |
| * @vm_state_wait: Wait queue set when GPU is granted |
| * @vm_state: Current state of VM |
| * @vm_arb_wq: Work queue for resuming or stopping work on the GPU for use |
| * with the Arbiter |
| * @vm_suspend_work: Work item for vm_arb_wq to stop current work on GPU |
| * @vm_resume_work: Work item for vm_arb_wq to resume current work on GPU |
| * @vm_arb_starting: Work queue resume in progress |
| * @vm_arb_stopping: Work queue suspend in progress |
| * @interrupts_installed: Flag set when interrupts are installed |
| * @vm_request_timer: Timer to monitor GPU request |
| */ |
| struct kbase_arbiter_vm_state { |
| struct kbase_device *kbdev; |
| struct mutex vm_state_lock; |
| wait_queue_head_t vm_state_wait; |
| enum kbase_vm_state vm_state; |
| struct workqueue_struct *vm_arb_wq; |
| struct work_struct vm_suspend_work; |
| struct work_struct vm_resume_work; |
| bool vm_arb_starting; |
| bool vm_arb_stopping; |
| bool interrupts_installed; |
| struct hrtimer vm_request_timer; |
| }; |
| |
| /** |
| * struct kbase_arbiter_device - Representing an instance of arbiter device, |
| * allocated from the probe method of Mali driver |
| * @arb_if: Pointer to the arbiter interface device |
| * @arb_dev: Pointer to the arbiter device |
| * @arb_freq: GPU clock frequency retrieved from arbiter. |
| */ |
| struct kbase_arbiter_device { |
| struct arbiter_if_dev *arb_if; |
| struct device *arb_dev; |
| struct kbase_arbiter_freq arb_freq; |
| }; |
| |
| #endif /* _MALI_KBASE_ARBITER_DEFS_H_ */ |