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