Add speedstep support for Dothan processors.

From Steven J. Dovich via PR#26342.

Tested on "Intel(R) Pentium(R) M processor 1.60GHz".
This commit is contained in:
hannken 2004-10-25 15:42:24 +00:00
parent 0d451812d5
commit 12c30b8690
1 changed files with 82 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: est.c,v 1.4 2004/07/10 18:51:01 cube Exp $ */
/* $NetBSD: est.c,v 1.5 2004/10/25 15:42:24 hannken Exp $ */
/*
* Copyright (c) 2003 Michael Eriksson.
* All rights reserved.
@ -73,6 +73,7 @@
* - Intel Pentium M Processor Datasheet.
* Table 5, Voltage and Current Specifications.
* http://www.intel.com/design/mobile/datashts/252612.htm
* http://www.intel.com/design/mobile/datashts/302189.htm
*
* - Linux cpufreq patches, speedstep-centrino.c.
* Encoding of MSR_PERF_CTL and MSR_PERF_STATUS.
@ -80,7 +81,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: est.c,v 1.4 2004/07/10 18:51:01 cube Exp $");
__KERNEL_RCSID(0, "$NetBSD: est.c,v 1.5 2004/10/25 15:42:24 hannken Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -184,6 +185,69 @@ static const struct fq_info pentium_m_1700[] = {
{ 600, 956 }
};
/* Intel Pentium M processor 715 1.5 GHz */
static const struct fq_info pentium_m_n715[] = {
{ 1500, 1340 },
{ 1200, 1228 },
{ 1000, 1148 },
{ 800, 1068 },
{ 600, 988 }
};
/* Intel Pentium M processor 725 1.6 GHz */
static const struct fq_info pentium_m_n725[] = {
{ 1600, 1340 },
{ 1400, 1276 },
{ 1200, 1212 },
{ 1000, 1132 },
{ 800, 1068 },
{ 600, 988 }
};
/* Intel Pentium M processor 735 1.7 GHz */
static const struct fq_info pentium_m_n735[] = {
{ 1700, 1340 },
{ 1400, 1244 },
{ 1200, 1180 },
{ 1000, 1116 },
{ 800, 1052 },
{ 600, 988 }
};
/* Intel Pentium M processor 745 1.8 GHz */
static const struct fq_info pentium_m_n745[] = {
{ 1800, 1340 },
{ 1600, 1292 },
{ 1400, 1228 },
{ 1200, 1164 },
{ 1000, 1116 },
{ 800, 1052 },
{ 600, 988 }
};
/* Intel Pentium M processor 755 2.0 GHz */
static const struct fq_info pentium_m_n755[] = {
{ 2000, 1340 },
{ 1800, 1292 },
{ 1600, 1244 },
{ 1400, 1196 },
{ 1200, 1148 },
{ 1000, 1100 },
{ 800, 1052 },
{ 600, 988 }
};
/* Intel Pentium M processor 765 2.1 GHz */
static const struct fq_info pentium_m_n765[] = {
{ 2100, 1340 },
{ 1800, 1276 },
{ 1600, 1228 },
{ 1400, 1180 },
{ 1200, 1132 },
{ 1000, 1084 },
{ 800, 1036 },
{ 600, 988 }
};
struct fqlist {
const char *brand_tag;
@ -191,8 +255,8 @@ struct fqlist {
const struct fq_info *table;
};
static const struct fqlist pentium_m[] = {
#define ENTRY(s, v) { s, sizeof(v) / sizeof((v)[0]), v }
static const struct fqlist pentium_m[] = {
ENTRY(" 900", pentium_m_900),
ENTRY("1000", pentium_m_1000),
ENTRY("1100", pentium_m_1100),
@ -202,9 +266,18 @@ static const struct fqlist pentium_m[] = {
ENTRY("1500", pentium_m_1500),
ENTRY("1600", pentium_m_1600),
ENTRY("1700", pentium_m_1700),
#undef ENTRY
};
static const struct fqlist pentium_m_dothan[] = {
ENTRY("1.50", pentium_m_n715),
ENTRY("1.60", pentium_m_n725),
ENTRY("1.70", pentium_m_n735),
ENTRY("1.80", pentium_m_n745),
ENTRY("2.00", pentium_m_n755),
ENTRY("2.10", pentium_m_n765),
};
#undef ENTRY
struct est_cpu {
const char *brand_prefix;
@ -219,6 +292,11 @@ static const struct est_cpu est_cpus[] = {
(sizeof(pentium_m) / sizeof(pentium_m[0])),
pentium_m
},
{
"Intel(R) Pentium(R) M processor ", "GHz",
(sizeof(pentium_m_dothan) / sizeof(pentium_m_dothan[0])),
pentium_m_dothan
},
};
#define NESTCPUS (sizeof(est_cpus) / sizeof(est_cpus[0]))