Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 336339
b: refs/heads/master
c: 2fa5222
h: refs/heads/master
i:
  336337: 597ca42
  336335: 33cc4bd
v: v3
  • Loading branch information
Guenter Roeck committed Dec 5, 2012
1 parent a27872a commit f0a5732
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 15 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d9b24e373d160ffd56633cc9a4b2e4013c2682d1
refs/heads/master: 2fa5222efeb4a76597ceace21c0435d49a34715e
41 changes: 27 additions & 14 deletions trunk/drivers/hwmon/coretemp.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,28 @@ static const struct tjmax __cpuinitconst tjmax_table[] = {
{ "CPU CE4170", 110000 }, /* Model 0x1c, stepping 10 */
};

struct tjmax_model {
u8 model;
u8 mask;
int tjmax;
};

#define ANY 0xff

static const struct tjmax_model __cpuinitconst tjmax_model_table[] = {
{ 0x1c, 10, 100000 }, /* D4xx, N4xx, D5xx, N5xx */
{ 0x1c, ANY, 90000 }, /* Z5xx, N2xx, possibly others
* Note: Also matches 230 and 330,
* which are covered by tjmax_table
*/
{ 0x26, ANY, 90000 }, /* Atom Tunnel Creek (Exx), Lincroft (Z6xx)
* Note: TjMax for E6xxT is 110C, but CPU type
* is undetectable by software
*/
{ 0x27, ANY, 90000 }, /* Atom Medfield (Z2460) */
{ 0x36, ANY, 100000 }, /* Atom Cedar Trail/Cedarview (N2xxx, D2xxx) */
};

static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id,
struct device *dev)
{
Expand All @@ -229,20 +251,11 @@ static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id,
return tjmax_table[i].tjmax;
}

/* Atom CPUs */

if (c->x86_model == 0x1c) {
/*
* TjMax for stepping 10 CPUs (N4xx, N5xx, D4xx, D5xx)
* is 100 degrees C, for all others it is 90 degrees C.
*/
if (c->x86_mask == 10)
return 100000;
return 90000;
} else if (c->x86_model == 0x26 || c->x86_model == 0x27) {
return 90000;
} else if (c->x86_model == 0x36) {
return 100000;
for (i = 0; i < ARRAY_SIZE(tjmax_model_table); i++) {
const struct tjmax_model *tm = &tjmax_model_table[i];
if (c->x86_model == tm->model &&
(tm->mask == ANY || c->x86_mask == tm->mask))
return tm->tjmax;
}

/* Early chips have no MSR for TjMax */
Expand Down

0 comments on commit f0a5732

Please sign in to comment.