--- /dev/null
+diff -Naur linux-2.6.27.42.org/drivers/hwmon/coretemp.c linux-2.6.27.42/drivers/hwmon/coretemp.c
+--- linux-2.6.27.42.org/drivers/hwmon/coretemp.c 2009-12-18 22:31:34.000000000 +0100
++++ linux-2.6.27.42/drivers/hwmon/coretemp.c 2010-02-07 12:36:39.000000000 +0100
+@@ -1,7 +1,7 @@
+ /*
+ * coretemp.c - Linux kernel module for hardware monitoring
+ *
+- * Copyright (C) 2007 Rudolf Marek <r.marek@assembler.cz>
++ * Copyright (C) 2007, 2008 Rudolf Marek <r.marek@assembler.cz>
+ *
+ * Inspired from many hwmon drivers
+ *
+@@ -244,8 +244,14 @@
+ }
+ }
+
+- data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
+- platform_set_drvdata(pdev, data);
++ /* Intel Atom has only fixed TjMax at 95C */
++
++ if (c->x86_model == 0x1c) {
++ data->tjmax = 95000;
++ } else {
++ /* Adjust the TjMax for the rest of Core2 family */
++ data->tjmax = adjust_tjmax(c, data->id, &pdev->dev);
++ }
+
+ /* read the still undocumented IA32_TEMPERATURE_TARGET it exists
+ on older CPUs but not in this register */
+@@ -265,6 +271,8 @@
+ }
+ }
+
++ platform_set_drvdata(pdev, data);
++
+ if ((err = sysfs_create_group(&pdev->dev.kobj, &coretemp_group)))
+ goto exit_dev;
+
+@@ -409,15 +417,15 @@
+ err = platform_driver_register(&coretemp_driver);
+ if (err)
+ goto exit;
+-
++
+ for_each_online_cpu(i) {
+ struct cpuinfo_x86 *c = &cpu_data(i);
+
+- /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A */
++ /* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A, 0x1c */
+ if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
+ !((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
+- (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
+- (c->x86_model == 0x1A))) {
++ (c->x86_model == 0x16) || (c->x86_model == 0x17) ||
++ (c->x86_model == 0x1c) || (c->x86_model == 0x1A))) {
+
+ /* supported CPU not found, but report the unknown
+ family 6 CPU */