123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- /*
- *
- * (C) COPYRIGHT 2014-2015 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 licence.
- *
- * A copy of the licence is included with the program, and can also be obtained
- * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
- /**
- * @file mali_kbase_hwaccess_pm.h
- * HW access power manager common APIs
- */
- #ifndef _KBASE_HWACCESS_PM_H_
- #define _KBASE_HWACCESS_PM_H_
- #include <mali_midg_regmap.h>
- #include <linux/atomic.h>
- #include <mali_kbase_pm_defs.h>
- /* Forward definition - see mali_kbase.h */
- struct kbase_device;
- /* Functions common to all HW access backends */
- /**
- * Initialize the power management framework.
- *
- * Must be called before any other power management function
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- *
- * @return 0 if the power management framework was successfully
- * initialized.
- */
- int kbase_hwaccess_pm_init(struct kbase_device *kbdev);
- /**
- * Terminate the power management framework.
- *
- * No power management functions may be called after this (except
- * @ref kbase_pm_init)
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_term(struct kbase_device *kbdev);
- /**
- * kbase_hwaccess_pm_powerup - Power up the GPU.
- * @kbdev: The kbase device structure for the device (must be a valid pointer)
- * @flags: Flags to pass on to kbase_pm_init_hw
- *
- * Power up GPU after all modules have been initialized and interrupt handlers
- * installed.
- *
- * Return: 0 if powerup was successful.
- */
- int kbase_hwaccess_pm_powerup(struct kbase_device *kbdev,
- unsigned int flags);
- /**
- * Halt the power management framework.
- *
- * Should ensure that no new interrupts are generated, but allow any currently
- * running interrupt handlers to complete successfully. The GPU is forced off by
- * the time this function returns, regardless of whether or not the active power
- * policy asks for the GPU to be powered off.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_halt(struct kbase_device *kbdev);
- /**
- * Perform any backend-specific actions to suspend the GPU
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_suspend(struct kbase_device *kbdev);
- /**
- * Perform any backend-specific actions to resume the GPU from a suspend
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_resume(struct kbase_device *kbdev);
- /**
- * Perform any required actions for activating the GPU. Called when the first
- * context goes active.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_gpu_active(struct kbase_device *kbdev);
- /**
- * Perform any required actions for idling the GPU. Called when the last
- * context goes idle.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- */
- void kbase_hwaccess_pm_gpu_idle(struct kbase_device *kbdev);
- /**
- * Set the debug core mask.
- *
- * This determines which cores the power manager is allowed to use.
- *
- * @param kbdev The kbase device structure for the device (must be a
- * valid pointer)
- * @param new_core_mask_js0 The core mask to use for job slot 0
- * @param new_core_mask_js0 The core mask to use for job slot 1
- * @param new_core_mask_js0 The core mask to use for job slot 2
- */
- void kbase_pm_set_debug_core_mask(struct kbase_device *kbdev,
- u64 new_core_mask_js0, u64 new_core_mask_js1,
- u64 new_core_mask_js2);
- /**
- * Get the current policy.
- *
- * Returns the policy that is currently active.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- *
- * @return The current policy
- */
- const struct kbase_pm_ca_policy
- *kbase_pm_ca_get_policy(struct kbase_device *kbdev);
- /**
- * Change the policy to the one specified.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- * @param policy The policy to change to (valid pointer returned from
- * @ref kbase_pm_ca_list_policies)
- */
- void kbase_pm_ca_set_policy(struct kbase_device *kbdev,
- const struct kbase_pm_ca_policy *policy);
- /**
- * Retrieve a static list of the available policies.
- *
- * @param[out] policies An array pointer to take the list of policies. This may
- * be NULL. The contents of this array must not be
- * modified.
- *
- * @return The number of policies
- */
- int
- kbase_pm_ca_list_policies(const struct kbase_pm_ca_policy * const **policies);
- /**
- * Get the current policy.
- *
- * Returns the policy that is currently active.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- *
- * @return The current policy
- */
- const struct kbase_pm_policy *kbase_pm_get_policy(struct kbase_device *kbdev);
- /**
- * Change the policy to the one specified.
- *
- * @param kbdev The kbase device structure for the device (must be a valid
- * pointer)
- * @param policy The policy to change to (valid pointer returned from
- * @ref kbase_pm_list_policies)
- */
- void kbase_pm_set_policy(struct kbase_device *kbdev,
- const struct kbase_pm_policy *policy);
- /**
- * Retrieve a static list of the available policies.
- *
- * @param[out] policies An array pointer to take the list of policies. This may
- * be NULL. The contents of this array must not be
- * modified.
- *
- * @return The number of policies
- */
- int kbase_pm_list_policies(const struct kbase_pm_policy * const **policies);
- #endif // ifndef _KBASE_HWACCESS_PM_H_
|