• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1--
2-- Copyright 2024 The Android Open Source Project
3--
4-- Licensed under the Apache License, Version 2.0 (the "License");
5-- you may not use this file except in compliance with the License.
6-- You may obtain a copy of the License at
7--
8--     https://www.apache.org/licenses/LICENSE-2.0
9--
10-- Unless required by applicable law or agreed to in writing, software
11-- distributed under the License is distributed on an "AS IS" BASIS,
12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13-- See the License for the specific language governing permissions and
14-- limitations under the License.
15
16INCLUDE PERFETTO MODULE android.device;
17
18-- Device specific info for deep idle time offsets
19CREATE PERFETTO TABLE _device_cpu_deep_idle_offsets
20AS
21WITH data(device, cpu, offset_ns) AS (
22  VALUES
23  ("Tensor", 0, 0),
24  ("Tensor", 1, 0),
25  ("Tensor", 2, 0),
26  ("Tensor", 3, 0),
27  ("Tensor", 4, 0),
28  ("Tensor", 5, 0),
29  ("Tensor", 6, 200000),
30  ("Tensor", 7, 200000),
31  ("monaco", 0, 450000),
32  ("monaco", 1, 450000),
33  ("monaco", 2, 450000),
34  ("monaco", 3, 450000)
35)
36select * from data;
37
38CREATE PERFETTO TABLE _wattson_device_map
39AS
40WITH data(device, wattson_device) AS (
41  VALUES
42  ("oriole", "Tensor"),
43  ("raven", "Tensor"),
44  ("bluejay", "Tensor"),
45  ("eos", "monaco")
46)
47select * from data;
48
49CREATE PERFETTO TABLE _wattson_device
50AS
51WITH soc AS (
52  SELECT str_value as model
53  FROM metadata
54  WHERE name = 'android_soc_model'
55)
56SELECT
57  COALESCE(soc.model, map.wattson_device) as name
58FROM _wattson_device_map as map
59CROSS JOIN android_device_name as ad
60LEFT JOIN soc ON TRUE
61WHERE ad.name = map.device;
62
63-- Device specific mapping from CPU to policy
64CREATE PERFETTO TABLE _cpu_to_policy_map
65AS
66WITH data(device, cpu, policy) AS (
67  VALUES
68  ("monaco", 0, 0),
69  ("monaco", 1, 0),
70  ("monaco", 2, 0),
71  ("monaco", 3, 0),
72  ("Tensor", 0, 0),
73  ("Tensor", 1, 0),
74  ("Tensor", 2, 0),
75  ("Tensor", 3, 0),
76  ("Tensor", 4, 4),
77  ("Tensor", 5, 4),
78  ("Tensor", 6, 6),
79  ("Tensor", 7, 6)
80)
81select * from data;
82
83-- Prefilter table based on device
84CREATE PERFETTO TABLE _dev_cpu_policy_map
85AS
86SELECT
87  cpu, policy
88FROM _cpu_to_policy_map as cp_map
89JOIN _wattson_device as device
90ON cp_map.device = device.name
91ORDER by cpu;
92
93-- Policy and freq that will give minimum volt vote
94CREATE PERFETTO TABLE _device_min_volt_vote
95AS
96WITH data(device, policy, freq) AS (
97  VALUES
98  ("monaco", 0, 614400),
99  ("Tensor", 4, 400000)
100)
101select * from data;
102
103-- Get policy corresponding to minimum volt vote
104CREATE PERFETTO FUNCTION _get_min_policy_vote()
105RETURNS INT AS
106SELECT
107  vote_tbl.policy
108FROM _device_min_volt_vote as vote_tbl
109JOIN _wattson_device as device
110WHERE vote_tbl.device = device.name;
111
112-- Get frequency corresponding to minimum volt vote
113CREATE PERFETTO FUNCTION _get_min_freq_vote()
114RETURNS INT AS
115SELECT
116 vote_tbl.freq
117FROM _device_min_volt_vote as vote_tbl
118JOIN _wattson_device as device
119WHERE vote_tbl.device = device.name;
120