blob: eafcb0a001fccf22e75c647921211f6f62e9ddf0 [file] [log] [blame]
Sergei Trofimov4e6afe92015-10-09 09:30:04 +01001from devlib.module import Module
2
3
4class BigLittleModule(Module):
5
6 name = 'bl'
7
8 @staticmethod
9 def probe(target):
10 return target.big_core is not None
11
12 @property
13 def bigs(self):
14 return [i for i, c in enumerate(self.target.platform.core_names)
15 if c == self.target.platform.big_core]
16
17 @property
18 def littles(self):
19 return [i for i, c in enumerate(self.target.platform.core_names)
20 if c == self.target.platform.little_core]
21
22 @property
23 def bigs_online(self):
24 return list(sorted(set(self.bigs).intersection(self.target.list_online_cpus())))
25
26 @property
27 def littles_online(self):
28 return list(sorted(set(self.littles).intersection(self.target.list_online_cpus())))
29
30 # hotplug
31
32 def online_all_bigs(self):
33 self.target.hotplug.online(*self.bigs)
34
35 def offline_all_bigs(self):
36 self.target.hotplug.offline(*self.bigs)
37
38 def online_all_littles(self):
39 self.target.hotplug.online(*self.littles)
40
41 def offline_all_littles(self):
42 self.target.hotplug.offline(*self.littles)
43
44 # cpufreq
45
46 def list_bigs_frequencies(self):
47 return self.target.cpufreq.list_frequencies(self.bigs_online[0])
48
49 def list_bigs_governors(self):
50 return self.target.cpufreq.list_governors(self.bigs_online[0])
51
52 def list_bigs_governor_tunables(self):
53 return self.target.cpufreq.list_governor_tunables(self.bigs_online[0])
54
55 def list_littles_frequencies(self):
56 return self.target.cpufreq.list_frequencies(self.littles_online[0])
57
58 def list_littles_governors(self):
59 return self.target.cpufreq.list_governors(self.littles_online[0])
60
61 def list_littles_governor_tunables(self):
62 return self.target.cpufreq.list_governor_tunables(self.littles_online[0])
63
64 def get_bigs_governor(self):
65 return self.target.cpufreq.get_governor(self.bigs_online[0])
66
67 def get_bigs_governor_tunables(self):
68 return self.target.cpufreq.get_governor_tunables(self.bigs_online[0])
69
70 def get_bigs_frequency(self):
71 return self.target.cpufreq.get_frequency(self.bigs_online[0])
72
73 def get_bigs_min_frequency(self):
74 return self.target.cpufreq.get_min_frequency(self.bigs_online[0])
75
76 def get_bigs_max_frequency(self):
77 return self.target.cpufreq.get_max_frequency(self.bigs_online[0])
78
79 def get_littles_governor(self):
80 return self.target.cpufreq.get_governor(self.littles_online[0])
81
82 def get_littles_governor_tunables(self):
83 return self.target.cpufreq.get_governor_tunables(self.littles_online[0])
84
85 def get_littles_frequency(self):
86 return self.target.cpufreq.get_frequency(self.littles_online[0])
87
88 def get_littles_min_frequency(self):
89 return self.target.cpufreq.get_min_frequency(self.littles_online[0])
90
91 def get_littles_max_frequency(self):
92 return self.target.cpufreq.get_max_frequency(self.littles_online[0])
93
94 def set_bigs_governor(self, governor, **kwargs):
95 self.target.cpufreq.set_governor(self.bigs_online[0], governor, **kwargs)
96
97 def set_bigs_governor_tunables(self, governor, **kwargs):
98 self.target.cpufreq.set_governor_tunables(self.bigs_online[0], governor, **kwargs)
99
100 def set_bigs_frequency(self, frequency, exact=True):
101 self.target.cpufreq.set_frequency(self.bigs_online[0], frequency, exact)
102
103 def set_bigs_min_frequency(self, frequency, exact=True):
104 self.target.cpufreq.set_min_frequency(self.bigs_online[0], frequency, exact)
105
106 def set_bigs_max_frequency(self, frequency, exact=True):
107 self.target.cpufreq.set_max_frequency(self.bigs_online[0], frequency, exact)
108
109 def set_littles_governor(self, governor, **kwargs):
110 self.target.cpufreq.set_governor(self.littles_online[0], governor, **kwargs)
111
112 def set_littles_governor_tunables(self, governor, **kwargs):
113 self.target.cpufreq.set_governor_tunables(self.littles_online[0], governor, **kwargs)
114
115 def set_littles_frequency(self, frequency, exact=True):
116 self.target.cpufreq.set_frequency(self.littles_online[0], frequency, exact)
117
118 def set_littles_min_frequency(self, frequency, exact=True):
119 self.target.cpufreq.set_min_frequency(self.littles_online[0], frequency, exact)
120
121 def set_littles_max_frequency(self, frequency, exact=True):
122 self.target.cpufreq.set_max_frequency(self.littles_online[0], frequency, exact)