/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * * (C) COPYRIGHT 2020-2022 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. * */ /* * Backend-specific Power Manager MCU state definitions. * The function-like macro KBASEP_MCU_STATE() must be defined before including * this header file. This header file can be included multiple times in the * same compilation unit with different definitions of KBASEP_MCU_STATE(). * * @OFF: The MCU is powered off. * @PEND_ON_RELOAD: The warm boot of MCU or cold boot of MCU (with * firmware reloading) is in progress. * @ON_GLB_REINIT_PEND: The MCU is enabled and Global configuration * requests have been sent to the firmware. * @ON_HWCNT_ENABLE: The Global requests have completed and MCU is now * ready for use and hwcnt is being enabled. * @ON: The MCU is active and hwcnt has been enabled. * @ON_CORE_ATTR_UPDATE_PEND: The MCU is active and mask of enabled shader cores * is being updated. * @ON_HWCNT_DISABLE: The MCU is on and hwcnt is being disabled. * @ON_HALT: The MCU is on and hwcnt has been disabled, MCU * halt would be triggered. * @ON_PEND_HALT: MCU halt in progress, confirmation pending. * @POWER_DOWN: MCU halted operations, pending being disabled. * @PEND_OFF: MCU is being disabled, pending on powering off. * @RESET_WAIT: The GPU is resetting, MCU state is unknown. * @HCTL_SHADERS_PEND_ON: Global configuration requests sent to the firmware * have completed and shaders have been requested to * power on. * @HCTL_CORES_NOTIFY_PEND: Shader cores have powered up and firmware is being * notified of the mask of enabled shader cores. * @HCTL_MCU_ON_RECHECK: MCU is on and hwcnt disabling is triggered * and checks are done to update the number of * enabled cores. * @HCTL_SHADERS_READY_OFF: MCU has halted and cores need to be powered down * @HCTL_SHADERS_PEND_OFF: Cores are transitioning to power down. * @HCTL_CORES_DOWN_SCALE_NOTIFY_PEND: Firmware has been informed to stop using * specific cores, due to core_mask change request. * After the ACK from FW, the wait will be done for * undesired cores to become inactive. * @HCTL_CORE_INACTIVE_PEND: Waiting for specific cores to become inactive. * Once the cores become inactive their power down * will be initiated. * @HCTL_SHADERS_CORE_OFF_PEND: Waiting for specific cores to complete the * transition to power down. Once powered down, * HW counters will be re-enabled. * @ON_SLEEP_INITIATE: MCU is on and hwcnt has been disabled and MCU * is being put to sleep. * @ON_PEND_SLEEP: MCU sleep is in progress. * @IN_SLEEP: Sleep request is completed and MCU has halted. * @ON_PMODE_ENTER_CORESIGHT_DISABLE: The MCU is on, protected mode enter is about to * be requested, Coresight is being disabled. * @ON_PMODE_EXIT_CORESIGHT_ENABLE : The MCU is on, protected mode exit has happened * Coresight is being enabled. * @CORESIGHT_DISABLE: The MCU is on and Coresight is being disabled. * @CORESIGHT_ENABLE: The MCU is on, host does not have control and * Coresight is being enabled. */ KBASEP_MCU_STATE(OFF) KBASEP_MCU_STATE(PEND_ON_RELOAD) KBASEP_MCU_STATE(ON_GLB_REINIT_PEND) KBASEP_MCU_STATE(ON_HWCNT_ENABLE) KBASEP_MCU_STATE(ON) KBASEP_MCU_STATE(ON_CORE_ATTR_UPDATE_PEND) KBASEP_MCU_STATE(ON_HWCNT_DISABLE) KBASEP_MCU_STATE(ON_HALT) KBASEP_MCU_STATE(ON_PEND_HALT) KBASEP_MCU_STATE(POWER_DOWN) KBASEP_MCU_STATE(PEND_OFF) KBASEP_MCU_STATE(RESET_WAIT) /* Additional MCU states with HOST_CONTROL_SHADERS */ KBASEP_MCU_STATE(HCTL_SHADERS_PEND_ON) KBASEP_MCU_STATE(HCTL_CORES_NOTIFY_PEND) KBASEP_MCU_STATE(HCTL_MCU_ON_RECHECK) KBASEP_MCU_STATE(HCTL_SHADERS_READY_OFF) KBASEP_MCU_STATE(HCTL_SHADERS_PEND_OFF) KBASEP_MCU_STATE(HCTL_CORES_DOWN_SCALE_NOTIFY_PEND) KBASEP_MCU_STATE(HCTL_CORE_INACTIVE_PEND) KBASEP_MCU_STATE(HCTL_SHADERS_CORE_OFF_PEND) /* Additional MCU states to support GPU sleep feature */ KBASEP_MCU_STATE(ON_SLEEP_INITIATE) KBASEP_MCU_STATE(ON_PEND_SLEEP) KBASEP_MCU_STATE(IN_SLEEP) #if IS_ENABLED(CONFIG_MALI_CORESIGHT) /* Additional MCU states for Coresight */ KBASEP_MCU_STATE(ON_PMODE_ENTER_CORESIGHT_DISABLE) KBASEP_MCU_STATE(ON_PMODE_EXIT_CORESIGHT_ENABLE) KBASEP_MCU_STATE(CORESIGHT_DISABLE) KBASEP_MCU_STATE(CORESIGHT_ENABLE) #endif /* IS_ENABLED(CONFIG_MALI_CORESIGHT) */