1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/* drivers/gpu/mali400/mali/platform/exynos4415/exynos4_pmm.h
*
* Copyright 2011 by S.LSI. Samsung Electronics Inc.
* San#24, Nongseo-Dong, Giheung-Gu, Yongin, Korea
*
* Samsung SoC Mali400 DVFS driver
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software FoundatIon.
*/
/**
* @file exynos4_pmm.h
* Platform specific Mali driver functions for the exynos 4XXX based platforms
*/
#ifndef __EXYNOS4_PMM_H__
#define __EXYNOS4_PMM_H__
#include "mali_utgard.h"
#include "mali_osk.h"
#ifdef __cplusplus
extern "C" {
#endif
/** @brief description of power change reasons
*/
typedef enum mali_power_mode_tag
{
MALI_POWER_MODE_ON,
MALI_POWER_MODE_LIGHT_SLEEP,
MALI_POWER_MODE_DEEP_SLEEP,
} mali_power_mode;
/** @brief Platform specific setup and initialisation of MALI
*
* This is called from the entrypoint of the driver to initialize the platform
*
* @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
*/
_mali_osk_errcode_t mali_platform_init(struct device *dev);
/** @brief Platform specific deinitialisation of MALI
*
* This is called on the exit of the driver to terminate the platform
*
* @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
*/
_mali_osk_errcode_t mali_platform_deinit(struct device *dev);
/** @brief Platform specific powerdown sequence of MALI
*
* Call as part of platform init if there is no PMM support, else the
* PMM will call it.
* There are three power modes defined:
* 1) MALI_POWER_MODE_ON
* 2) MALI_POWER_MODE_LIGHT_SLEEP
* 3) MALI_POWER_MODE_DEEP_SLEEP
* MALI power management module transitions to MALI_POWER_MODE_LIGHT_SLEEP mode when MALI is idle
* for idle timer (software timer defined in mali_pmm_policy_jobcontrol.h) duration, MALI transitions
* to MALI_POWER_MODE_LIGHT_SLEEP mode during timeout if there are no more jobs queued.
* MALI power management module transitions to MALI_POWER_MODE_DEEP_SLEEP mode when OS does system power
* off.
* Customer has to add power down code when MALI transitions to MALI_POWER_MODE_LIGHT_SLEEP or MALI_POWER_MODE_DEEP_SLEEP
* mode.
* MALI_POWER_MODE_ON mode is entered when the MALI is to powered up. Some customers want to control voltage regulators during
* the whole system powers on/off. Customer can track in this function whether the MALI is powered up from
* MALI_POWER_MODE_LIGHT_SLEEP or MALI_POWER_MODE_DEEP_SLEEP mode and manage the voltage regulators as well.
* @param power_mode defines the power modes
* @return _MALI_OSK_ERR_OK on success otherwise, a suitable _mali_osk_errcode_t error.
*/
_mali_osk_errcode_t mali_platform_power_mode_change(struct device *dev, mali_power_mode power_mode);
/** @brief Platform specific handling of GPU utilization data
*
* When GPU utilization data is enabled, this function will be
* periodically called.
*
* @param utilization The workload utilization of the Mali GPU. 0 = no utilization, 256 = full utilization.
*/
void mali_gpu_utilization_handler(struct mali_gpu_utilization_data *data);
#ifdef CONFIG_MALI_DVFS
ssize_t show_time_in_state(struct device *dev, struct device_attribute *attr, char *buf);
ssize_t set_time_in_state(struct device *dev, struct device_attribute *attr, const char *buf, size_t count);
#endif
#ifdef __cplusplus
}
#endif
#endif
|