| /* |
| * |
| * (C) COPYRIGHT 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. |
| * |
| */ |
| |
| |
| |
| #define NR_BYTES_PER_CNT 4 |
| #define NR_CNT_PER_BLOCK 64 |
| |
| #define JM_BASE (0 * NR_CNT_PER_BLOCK * NR_BYTES_PER_CNT) |
| #define TILER_BASE (1 * NR_CNT_PER_BLOCK * NR_BYTES_PER_CNT) |
| #define MMU_BASE (2 * NR_CNT_PER_BLOCK * NR_BYTES_PER_CNT) |
| #define SC0_BASE (3 * NR_CNT_PER_BLOCK * NR_BYTES_PER_CNT) |
| |
| #define GPU_ACTIVE (JM_BASE + NR_BYTES_PER_CNT * 6) |
| #define TILER_ACTIVE (TILER_BASE + NR_BYTES_PER_CNT * 45) |
| #define L2_ANY_LOOKUP (MMU_BASE + NR_BYTES_PER_CNT * 25) |
| #define FRAG_ACTIVE (SC0_BASE + NR_BYTES_PER_CNT * 4) |
| #define EXEC_CORE_ACTIVE (SC0_BASE + NR_BYTES_PER_CNT * 26) |
| #define EXEC_INSTR_COUNT (SC0_BASE + NR_BYTES_PER_CNT * 28) |
| #define TEX_COORD_ISSUE (SC0_BASE + NR_BYTES_PER_CNT * 40) |
| #define VARY_SLOT_32 (SC0_BASE + NR_BYTES_PER_CNT * 50) |
| #define VARY_SLOT_16 (SC0_BASE + NR_BYTES_PER_CNT * 51) |
| #define BEATS_RD_LSC (SC0_BASE + NR_BYTES_PER_CNT * 56) |
| #define BEATS_WR_LSC (SC0_BASE + NR_BYTES_PER_CNT * 61) |
| |
| static u32 calc_power_group0(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group1(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group2(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group3(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group4(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group5(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group6(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| static u32 calc_power_group7(struct kbase_ipa_context *ctx, |
| struct ipa_group *group); |
| |
| static struct ipa_group ipa_groups_def[] = { |
| /* L2 */ |
| { |
| .name = "group0", |
| .capacitance = 687, |
| .calc_power = calc_power_group0, |
| }, |
| /* TILER */ |
| { |
| .name = "group1", |
| .capacitance = 0, |
| .calc_power = calc_power_group1, |
| }, |
| /* FRAG */ |
| { |
| .name = "group2", |
| .capacitance = 23, |
| .calc_power = calc_power_group2, |
| }, |
| /* VARY */ |
| { |
| .name = "group3", |
| .capacitance = 108, |
| .calc_power = calc_power_group3, |
| }, |
| /* TEX */ |
| { |
| .name = "group4", |
| .capacitance = 128, |
| .calc_power = calc_power_group4, |
| }, |
| /* EXEC INSTR */ |
| { |
| .name = "group5", |
| .capacitance = 249, |
| .calc_power = calc_power_group5, |
| }, |
| /* LSC */ |
| { |
| .name = "group6", |
| .capacitance = 0, |
| .calc_power = calc_power_group6, |
| }, |
| /* EXEC OVERHEAD */ |
| { |
| .name = "group7", |
| .capacitance = 29, |
| .calc_power = calc_power_group7, |
| }, |
| }; |