Lines Matching +full:ia32 +full:- +full:3 +full:a
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
34 * Reference: Intel Developer's manual v.3 #245472-012
129 * We attach a p4tcc child for every CPU since settings need to in p4tcc_identify()
130 * be performed on every CPU in the SMP case. See section 13.15.3 in p4tcc_identify()
131 * of the IA32 Intel Architecture Software Developer's Manual, in p4tcc_identify()
132 * Volume 3, for more info. in p4tcc_identify()
157 sc->dev = dev; in p4tcc_attach()
158 sc->set_count = TCC_NUM_SETTINGS; in p4tcc_attach()
166 sc->auto_mode = TRUE; in p4tcc_attach()
169 * XXX: After a cursory glance at various Intel specification in p4tcc_attach()
186 sc->set_count -= 1; in p4tcc_attach()
199 sc->set_count -= 2; in p4tcc_attach()
202 sc->lowest_val = TCC_NUM_SETTINGS - sc->set_count + 1; in p4tcc_attach()
206 * set us to a lower rate. The user can override this after boot. in p4tcc_attach()
242 if (*count < sc->set_count) in p4tcc_settings()
245 /* Return a list of valid settings for this driver. */ in p4tcc_settings()
246 memset(sets, CPUFREQ_VAL_UNKNOWN, sizeof(*sets) * sc->set_count); in p4tcc_settings()
248 for (i = 0; i < sc->set_count; i++, val--) { in p4tcc_settings()
252 *count = sc->set_count; in p4tcc_settings()
269 * Validate requested state converts to a setting that is an integer in p4tcc_set()
270 * from [sc->lowest_val .. TCC_NUM_SETTINGS]. in p4tcc_set()
272 val = set->freq * TCC_NUM_SETTINGS / 10000; in p4tcc_set()
273 if (val * 10000 != set->freq * TCC_NUM_SETTINGS || in p4tcc_set()
274 val < sc->lowest_val || val > TCC_NUM_SETTINGS) in p4tcc_set()
279 * On-Demand bit. If the new val is < 100%, set it and the On-Demand in p4tcc_set()
283 mask = (TCC_NUM_SETTINGS - 1) << TCC_REG_OFFSET; in p4tcc_set()
290 * Record whether we're now in Automatic or On-Demand mode. We have in p4tcc_set()
297 sc->auto_mode = FALSE; in p4tcc_set()
299 sc->auto_mode = TRUE; in p4tcc_set()
323 if (!sc->auto_mode) { in p4tcc_get()
325 val = (msr >> TCC_REG_OFFSET) & (TCC_NUM_SETTINGS - 1); in p4tcc_get()
330 set->freq = TCC_SPEED_PERCENT(val); in p4tcc_get()
331 set->dev = dev; in p4tcc_get()