/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ /* * * (C) COPYRIGHT 2014, 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. * */ #ifndef _BASE_DEVFREQ_H_ #define _BASE_DEVFREQ_H_ int kbase_devfreq_init(struct kbase_device *kbdev); void kbase_devfreq_term(struct kbase_device *kbdev); /** * kbase_devfreq_force_freq - Set GPU frequency on L2 power on/off. * @kbdev: Device pointer * @freq: GPU frequency in HZ to be set when * MALI_HW_ERRATA_1485982_USE_CLOCK_ALTERNATIVE is enabled */ void kbase_devfreq_force_freq(struct kbase_device *kbdev, unsigned long freq); /** * kbase_devfreq_enqueue_work - Enqueue a work item for suspend/resume devfreq. * @kbdev: Device pointer * @work_type: The type of the devfreq work item, i.e. suspend or resume */ void kbase_devfreq_enqueue_work(struct kbase_device *kbdev, enum kbase_devfreq_work_type work_type); /** * kbase_devfreq_opp_translate - Translate nominal OPP frequency from devicetree * into real frequency & voltage pair, along with * core mask * @kbdev: Device pointer * @freq: Nominal frequency * @core_mask: Pointer to u64 to store core mask to * @freqs: Pointer to array of frequencies * @volts: Pointer to array of voltages * * This function will only perform translation if an operating-points-v2-mali * table is present in devicetree. If one is not present then it will return an * untranslated frequency (and corresponding voltage) and all cores enabled. * The voltages returned are in micro Volts (uV). */ void kbase_devfreq_opp_translate(struct kbase_device *kbdev, unsigned long freq, u64 *core_mask, unsigned long *freqs, unsigned long *volts); #endif /* _BASE_DEVFREQ_H_ */