You can subscribe to this list here.
| 2006 |
Jan
|
Feb
(4) |
Mar
(135) |
Apr
(130) |
May
(82) |
Jun
(101) |
Jul
(75) |
Aug
(37) |
Sep
(28) |
Oct
(45) |
Nov
(114) |
Dec
(27) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2007 |
Jan
(22) |
Feb
(60) |
Mar
(81) |
Apr
(120) |
May
(29) |
Jun
(50) |
Jul
(67) |
Aug
(41) |
Sep
(36) |
Oct
(4) |
Nov
(4) |
Dec
|
| 2008 |
Jan
(5) |
Feb
(17) |
Mar
(5) |
Apr
(6) |
May
(5) |
Jun
(9) |
Jul
(5) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Joachim G. <lz...@ca...> - 2007-03-23 12:58:34
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
<img alt="terminology" src="cid:par...@ca..."
height="296" width="386"><br>
Xml, which sits at the heart of all . Be sure to dock your device first
before running NETCFSetupv2.<br>
This is not a democracy. Whichever defense you end up making your
style.<br>
She uses revision marks to make changes. Properly closing the XmlReader
implementations in use is also important.<br>
But if these capabilities sound useful, then you should consider
creating an application block. In addition to performance, the other
design goals included enhanced usability, compatibility, and
standards.<br>
So in a nutshell, my book development process goes like this: I compile
information, write, and outline in IdeaWeaver. In return, however, you
gain a common configuration management system and you may be able to use
other parts of Enterprise Library. Note: The book is in PDF format and
it is jammed full of good info. Message types define the names of the
messages exchanged between applications and optionally provide
validation for the messages.<br>
You can still work with the individual XmlReader subclasses directly if
you want, but you may forfeit some of the internal optimizations or
conveniences when doing so.<br>
Get the sample code for this article. com ) shows up with back links on
most of my other web sites and nothing back linking from any of the 3(
blogger. Yes, that is how it's really spelled.<br>
The primary drawback of this solution is that Dispose requires an
explicit invocation by the user. Xml team had some ambitious goals for
version 2. But in regards to application blocks, configuration is also
used to define extensions to the basic block. Check out this thread.<br>
WriteEntry("Your error here. Strong names prevent spoofing of your code
by a third party (that is, of course, as long as you keep the private
key secure).<br>
But I will explain the "Holidays2007.<br>
com Cytodyne Xenadrine-EFX ultimately provides the most effective
approach to losing weight ever developed!<br>
What if you are facing a whole team that has hitters that can score the
big hit that no one can block.<br>
The factory pattern also allows the library to leverage specialized
internal optimizations. Xml performance was a driving force behind many
of the changes in System.<br>
</body>
</html>
|
|
From: alligator <dw...@te...> - 2007-03-22 07:48:52
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="smart aleck" src="cid:par...@te..." height="359" width="355"><br> WHICH REMAINS IN EFFECT UNTIL 6 PM ADT THIS EVENING.<br> WHICH REMAINS IN EFFECT UNTIL 6 PM ADT THIS EVENING. WIND ADVISORY REMAINS IN EFFECT UNTIL 6 PM ADT THIS EVENING. RAIN WILL CAUSE CONSIDERABLE PONDING OF WATER IN LOW LYING AREAS, NEAR CULVERTS, AND ALONG SMALL CREEKS AND DRAINAGES.<br> This same information is available in other file formats including the XML based RSS and CAP formats.<br> </body> </html> |
|
From: Lionel <fx...@de...> - 2007-03-22 06:12:38
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="leprous" src="cid:par...@de..." height="267" width="360"><br> The page is still readable. Personally, I am still dealing with a good deal of pain.<br> I think it was better when I thought it was a sinus infection that was going to go away soon.<br> It is a wonderful lesson for all of us.<br> Think stylish 1950s decor and good drinks promos and you won't be disappointed. and take the next couple of weeks to secure a copy of the Legend of Zelda collectors disc from eBay. They are bashing Liberal leader Stephan Dion, for no particular reason that I can figure out.<br> Sadly, when using all but one of the myriad of input jacks scattered across our TV and stereo receiver, the Wii will only display a picture for about 10 minutes and then the screen goes black.<br> Now that my Wii is shipping back to me, after a week at Nintendo, I am without a tracking number.<br> php Page Contact Information: Web Team Page Last Modified: March 14, 2007 11:22:18 PM. Wicca, for example, is much, much more then just the Rede and the Sabbats, just as Christianity is more then the Ten Commandments and Christmas.<br> Bird flu has come to Britain, and Canadians are told not to travel to Mexico. Good examples of this include the Christian Ten Commandments and the Wiccan Rede.<br> The creator said it was based on being a Muslim in a small town.<br> ) We also were able to learn a little bit about what other sections of the company are working. Or read about the Da Vinci Code at Wikipedia.<br> It is a wonderful lesson for all of us.<br> ) We also were able to learn a little bit about what other sections of the company are working.<br> Posted by silverlotus at February 2, 2007 2:02 PM in Gaming Reflections on life from a Canadian Wiccan. 5 miles) set by location program Region ANDREANOF ISLANDS, ALEUTIAN IS. It discusses the old myth that an educated woman can't have a satisfying romantic life. Examining these issues on International Women's Day is a good start, but we must keep these issues in mind all the time. Report shaking and damage at your location.<br> On and on it would have went if I hadn't hung up and just hit zero instead of trying the menu.<br> And, with quanta and I looking for a condo to buy (our first home that will be all ours and not a rental!<br> A prominent rock at the top, known as MacArt's Fort, is where the United Irishmen planned the rebellion in 1795.<br> Earthquake Information for Asia Earthquake Information for Japan Earthquake Maps Earthquake LocationLocation MapsHistorical SeismicitySeismic Hazard MapEQ Density MapGoogle Map Did you feel it? Last night I managed to snag myself a Wii after five days of searching and losing out on them twice due to Best Buy's crappy shopping cart system and Verified by VISA's slow servers.<br> ) another big change is coming. 7 - ANDREANOF ISLANDS, ALEUTIAN IS.<br> And, while my university marks weren't the best, I have always been a good student.<br> </body> </html> |
|
From: <nbo...@us...> - 2007-03-21 11:02:45
|
Revision: 93
http://svn.sourceforge.net/mactel-linux/?rev=93&view=rev
Author: nboichat
Date: 2007-03-21 04:02:39 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
Allow applesmc input device to be used as a joystick in neverball (needs x-axis inversion).
Added Paths:
-----------
trunk/kernel/mactel-patches-2.6.21/0009-applesmc_joydev.patch
Added: trunk/kernel/mactel-patches-2.6.21/0009-applesmc_joydev.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0009-applesmc_joydev.patch (rev 0)
+++ trunk/kernel/mactel-patches-2.6.21/0009-applesmc_joydev.patch 2007-03-21 11:02:39 UTC (rev 93)
@@ -0,0 +1,30 @@
+Fix y axis on applesmc input device.
+
+From: Nicolas Boichat <ni...@bo...>
+
+
+---
+
+ drivers/hwmon/applesmc.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
+index 4060667..581ed3e 100644
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -349,6 +349,7 @@ static void applesmc_calibrate(void)
+ {
+ applesmc_read_motion_sensor(SENSOR_X, &rest_x);
+ applesmc_read_motion_sensor(SENSOR_Y, &rest_y);
++ rest_x = -rest_x;
+ }
+
+ static void applesmc_mousedev_poll(unsigned long unused)
+@@ -366,6 +367,7 @@ static void applesmc_mousedev_poll(unsigned long unused)
+ if (applesmc_read_motion_sensor(SENSOR_Y, &y))
+ goto out;
+
++ x = -x;
+ input_report_abs(applesmc_idev, ABS_X, x - rest_x);
+ input_report_abs(applesmc_idev, ABS_Y, y - rest_y);
+ input_sync(applesmc_idev);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nbo...@us...> - 2007-03-21 11:01:54
|
Revision: 92
http://svn.sourceforge.net/mactel-linux/?rev=92&view=rev
Author: nboichat
Date: 2007-03-21 04:01:40 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
Remove useless controls on Macbook Pro and Macmini. Needs testing on Macmini. Will probably not work on Macbook.
Modified Paths:
--------------
trunk/kernel/mactel-patches-2.6.21/0006-sigmatel_audio.patch
trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch
Modified: trunk/kernel/mactel-patches-2.6.21/0006-sigmatel_audio.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0006-sigmatel_audio.patch 2007-03-21 10:58:05 UTC (rev 91)
+++ trunk/kernel/mactel-patches-2.6.21/0006-sigmatel_audio.patch 2007-03-21 11:01:40 UTC (rev 92)
@@ -1,5 +1,7 @@
Fix audio on Macbook Pro.
+Need to be dropped when 2.6.21-rc5 is released (in 2.6.21-rc4-git*)
+
From: Nicolas Boichat <ni...@bo...>
Modified: trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch 2007-03-21 10:58:05 UTC (rev 91)
+++ trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch 2007-03-21 11:01:40 UTC (rev 92)
@@ -5,14 +5,14 @@
---
- sound/pci/hda/patch_sigmatel.c | 10 ++--------
- 1 files changed, 2 insertions(+), 8 deletions(-)
+ sound/pci/hda/patch_sigmatel.c | 18 +++++++++---------
+ 1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
-index 2d78a9f..9ff5cf2 100644
+index c94291b..4c5fee3 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
-@@ -524,12 +524,6 @@ static unsigned int d945gtp5_pin_configs[10] = {
+@@ -524,16 +524,16 @@ static unsigned int d945gtp5_pin_configs[10] = {
0x02a19320, 0x40000100,
};
@@ -20,18 +20,29 @@
- 0x0321e230, 0x03a1e020, 0x400000fd, 0x9017e110,
- 0x400000fe, 0x0381e021, 0x1345e240, 0x13c5e22e,
- 0x400000fc, 0x400000fb,
--};
--
++static unsigned int macmini_pin_configs[10] = {
++ 0x0321e230, 0x400000fd, 0x9017e110, 0x01014010,
++ 0x400000fd, 0x0381e021, 0x1345e240, 0x13c5e22e,
++ 0x400000fc, 0x400000fb
+ };
+
static unsigned int macbook_pro_v1_pin_configs[10] = {
- 0x0321e230, 0x03a1e020, 0x9017e110, 0x01014010,
- 0x01a19021, 0x0381e021, 0x1345e240, 0x13c5e22e,
-@@ -546,8 +540,8 @@ static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = {
+- 0x0321e230, 0x03a1e020, 0x9017e110, 0x01014010,
+- 0x01a19021, 0x0381e021, 0x1345e240, 0x13c5e22e,
+- 0x02a19320, 0x400000fb
++ 0x0321e230, 0x02a7e020, 0x9017e110, 0x01014010,
++ 0x400000fd, 0x0381e021, 0x1345e240, 0x13c5e22e,
++ 0x400000fc, 0x400000fb
+ };
+
+ static unsigned int macbook_pro_v2_pin_configs[10] = {
+@@ -546,8 +546,8 @@ static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = {
[STAC_D945_REF] = ref922x_pin_configs,
[STAC_D945GTP3] = d945gtp3_pin_configs,
[STAC_D945GTP5] = d945gtp5_pin_configs,
- [STAC_MACMINI] = d945gtp5_pin_configs,
- [STAC_MACBOOK] = macbook_pin_configs,
-+ [STAC_MACMINI] = macbook_pro_v1_pin_configs,
++ [STAC_MACMINI] = macmini_pin_configs,
+ [STAC_MACBOOK] = macbook_pro_v1_pin_configs,
[STAC_MACBOOK_PRO_V1] = macbook_pro_v1_pin_configs,
[STAC_MACBOOK_PRO_V2] = macbook_pro_v2_pin_configs,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nbo...@us...> - 2007-03-21 10:58:15
|
Revision: 91
http://svn.sourceforge.net/mactel-linux/?rev=91&view=rev
Author: nboichat
Date: 2007-03-21 03:58:05 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
New coretemp patches (0008 is not essential).
Modified Paths:
--------------
trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch
Added Paths:
-----------
trunk/kernel/mactel-patches-2.6.21/0003-msr-on-cpu.patch
trunk/kernel/mactel-patches-2.6.21/0008-msr.patch
Added: trunk/kernel/mactel-patches-2.6.21/0003-msr-on-cpu.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0003-msr-on-cpu.patch (rev 0)
+++ trunk/kernel/mactel-patches-2.6.21/0003-msr-on-cpu.patch 2007-03-21 10:58:05 UTC (rev 91)
@@ -0,0 +1,204 @@
+This patch adds support for _safe (exception handled) variants of rdmsr_on_cpu and wrmsr_on_cpu. This is needed for the new coretemp driver, which might step into non-existing MSR (poorly documented).
+
+From: Rudolf Marek <r....@as...>
+
+
+---
+
+ arch/i386/lib/msr-on-cpu.c | 71 ++++++++++++++++++++++++++++++++++++++++----
+ include/asm-i386/msr.h | 12 +++++++
+ include/asm-x86_64/msr.h | 11 +++++++
+ 3 files changed, 87 insertions(+), 7 deletions(-)
+
+diff --git a/arch/i386/lib/msr-on-cpu.c b/arch/i386/lib/msr-on-cpu.c
+index 1c46bda..bd9920b 100644
+--- a/arch/i386/lib/msr-on-cpu.c
++++ b/arch/i386/lib/msr-on-cpu.c
+@@ -6,6 +6,7 @@
+ struct msr_info {
+ u32 msr_no;
+ u32 l, h;
++ int err;
+ };
+
+ static void __rdmsr_on_cpu(void *info)
+@@ -15,20 +16,38 @@ static void __rdmsr_on_cpu(void *info)
+ rdmsr(rv->msr_no, rv->l, rv->h);
+ }
+
+-void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
++static void __rdmsr_safe_on_cpu(void *info)
+ {
++ struct msr_info *rv = info;
++
++ rv->err = rdmsr_safe(rv->msr_no, &rv->l, &rv->h);
++}
++
++static int _rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h, int safe)
++{
++ int err = 0;
+ preempt_disable();
+ if (smp_processor_id() == cpu)
+- rdmsr(msr_no, *l, *h);
++ if (safe)
++ err = rdmsr_safe(msr_no, l, h);
++ else
++ rdmsr(msr_no, *l, *h);
+ else {
+ struct msr_info rv;
+
+ rv.msr_no = msr_no;
+- smp_call_function_single(cpu, __rdmsr_on_cpu, &rv, 0, 1);
++ if (safe) {
++ smp_call_function_single(cpu, __rdmsr_safe_on_cpu,
++ &rv, 0, 1);
++ err = rv.err;
++ } else {
++ smp_call_function_single(cpu, __rdmsr_on_cpu, &rv, 0, 1);
++ }
+ *l = rv.l;
+ *h = rv.h;
+ }
+ preempt_enable();
++ return err;
+ }
+
+ static void __wrmsr_on_cpu(void *info)
+@@ -38,21 +57,61 @@ static void __wrmsr_on_cpu(void *info)
+ wrmsr(rv->msr_no, rv->l, rv->h);
+ }
+
+-void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
++static void __wrmsr_safe_on_cpu(void *info)
+ {
++ struct msr_info *rv = info;
++
++ rv->err = wrmsr_safe(rv->msr_no, rv->l, rv->h);
++}
++
++static int _wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h, int safe)
++{
++ int err = 0;
+ preempt_disable();
+ if (smp_processor_id() == cpu)
+- wrmsr(msr_no, l, h);
++ if (safe)
++ err = wrmsr_safe(msr_no, l, h);
++ else
++ wrmsr(msr_no, l, h);
+ else {
+ struct msr_info rv;
+
+ rv.msr_no = msr_no;
+ rv.l = l;
+ rv.h = h;
+- smp_call_function_single(cpu, __wrmsr_on_cpu, &rv, 0, 1);
++ if (safe) {
++ smp_call_function_single(cpu, __wrmsr_safe_on_cpu,
++ &rv, 0, 1);
++ err = rv.err;
++ } else {
++ smp_call_function_single(cpu, __wrmsr_on_cpu, &rv, 0, 1);
++ }
+ }
+ preempt_enable();
++ return err;
++}
++
++void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
++{
++ _wrmsr_on_cpu(cpu, msr_no, l, h, 0);
++}
++
++void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
++{
++ _rdmsr_on_cpu(cpu, msr_no, l, h, 0);
++}
++
++int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
++{
++ return _wrmsr_on_cpu(cpu, msr_no, l, h, 1);
++}
++
++int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
++{
++ return _rdmsr_on_cpu(cpu, msr_no, l, h, 1);
+ }
+
+ EXPORT_SYMBOL(rdmsr_on_cpu);
+ EXPORT_SYMBOL(wrmsr_on_cpu);
++EXPORT_SYMBOL(rdmsr_safe_on_cpu);
++EXPORT_SYMBOL(wrmsr_safe_on_cpu);
+diff --git a/include/asm-i386/msr.h b/include/asm-i386/msr.h
+index ec3b680..5ed97c8 100644
+--- a/include/asm-i386/msr.h
++++ b/include/asm-i386/msr.h
+@@ -4,7 +4,7 @@
+ #ifdef CONFIG_PARAVIRT
+ #include <asm/paravirt.h>
+ #else
+-
++#include <linux/errno.h>
+ /*
+ * Access to machine-specific registers (available on 586 and better only)
+ * Note: the rd* operations modify the parameters directly (without using
+@@ -86,6 +86,8 @@ static inline void wrmsrl (unsigned long msr, unsigned long long val)
+ #ifdef CONFIG_SMP
+ void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
+ void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
++int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
++int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
+ #else /* CONFIG_SMP */
+ static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
+ {
+@@ -95,6 +97,14 @@ static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
+ {
+ wrmsr(msr_no, l, h);
+ }
++static inline int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
++{
++ return rdmsr_safe(msr_no, l, h);
++}
++static inline int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
++{
++ return wrmsr_safe(msr_no, l, h);
++}
+ #endif /* CONFIG_SMP */
+
+ /* symbolic names for some interesting MSRs */
+diff --git a/include/asm-x86_64/msr.h b/include/asm-x86_64/msr.h
+index 902f9a5..0327f66 100644
+--- a/include/asm-x86_64/msr.h
++++ b/include/asm-x86_64/msr.h
+@@ -2,6 +2,7 @@
+ #define X86_64_MSR_H 1
+
+ #ifndef __ASSEMBLY__
++#include <linux/errno.h>
+ /*
+ * Access to machine-specific registers (available on 586 and better only)
+ * Note: the rd* operations modify the parameters directly (without using
+@@ -163,6 +164,8 @@ static inline unsigned int cpuid_edx(unsigned int op)
+ #ifdef CONFIG_SMP
+ void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
+ void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
++int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
++int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
+ #else /* CONFIG_SMP */
+ static inline void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
+ {
+@@ -172,6 +175,14 @@ static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
+ {
+ wrmsr(msr_no, l, h);
+ }
++static inline int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h)
++{
++ return rdmsr_safe(msr_no, l, h);
++}
++static inline int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
++{
++ return wrmsr_safe(msr_no, l, h);
++}
+ #endif /* CONFIG_SMP */
+
+ #endif
Modified: trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch 2007-03-21 10:57:16 UTC (rev 90)
+++ trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch 2007-03-21 10:58:05 UTC (rev 91)
@@ -5,33 +5,30 @@
---
- Documentation/hwmon/coretemp | 37 ++++
- arch/i386/kernel/msr.c | 31 ++-
- drivers/hwmon/Kconfig | 9 +
+ Documentation/hwmon/coretemp | 36 ++++
+ MAINTAINERS | 6 +
+ drivers/hwmon/Kconfig | 8 +
drivers/hwmon/Makefile | 1
- drivers/hwmon/coretemp.c | 400 ++++++++++++++++++++++++++++++++++++++++++
- include/asm-i386/msr.h | 3
- include/asm-x86_64/msr.h | 3
- 7 files changed, 470 insertions(+), 14 deletions(-)
+ drivers/hwmon/coretemp.c | 406 ++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 457 insertions(+), 0 deletions(-)
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp
new file mode 100644
-index 0000000..ba02dee
+index 0000000..870cda9
--- /dev/null
+++ b/Documentation/hwmon/coretemp
-@@ -0,0 +1,37 @@
+@@ -0,0 +1,36 @@
+Kernel driver coretemp
+======================
+
+Supported chips:
+ * All Intel Core family
+ Prefix: 'coretemp'
-+ Addresses scanned: CPUID (family 0x6, models 0xe, 0xf)
++ CPUID: family 0x6, models 0xe, 0xf
+ Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
+ Volume 3A: System Programming Guide
+
+Author: Rudolf Marek
-+Contact: Rudolf Marek <r....@as...>
+
+Description
+-----------
@@ -39,7 +36,7 @@
+This driver permits reading temperature sensor embedded inside Intel Core CPU.
+Temperature is measured in degrees Celsius and measurement resolution is
+1 degree C. Valid temperatures are from 0 to TjMax degrees C, because
-+the actual temperature is in fact a delta from TjMax.
++the actual value of temperature register is in fact a delta from TjMax.
+
+Temperature known as TjMax is the maximum junction temperature of processor.
+Intel defines this temperature as 85C or 100C. At this temperature, protection
@@ -47,136 +44,44 @@
+may be raised, if the temperature grows enough (more than TjMax) to trigger
+the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
+
-+temp1_input - Core temperature (in milidegrees of Celsius).
-+temp1_crit - Maximum junction temperature (in milidegrees of Celsius).
++temp1_input - Core temperature (in millidegrees Celsius).
++temp1_crit - Maximum junction temperature (in millidegrees Celsius).
+temp1_crit_alarm - Set when Out-of-spec bit is set, never clears.
+ Correct CPU operation is no longer guaranteed.
-+temp1_label - Contains string with the "Core X", where X is processor
++temp1_label - Contains string "Core X", where X is processor
+ number.
+
-+The TjMax temperature is set to 85C if undocumented model specific register
-+(UMSR) 0xee has bit 30 set. If not the TjMax is 100C as documented in processor
-+datasheet. Intel will not disclose this information to individuals.
-diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c
-index bcaa6e9..c9a8f88 100644
---- a/arch/i386/kernel/msr.c
-+++ b/arch/i386/kernel/msr.c
-@@ -87,7 +87,7 @@ static void msr_smp_rdmsr(void *cmd_block)
- cmd->err = rdmsr_eio(cmd->reg, &cmd->data[0], &cmd->data[1]);
- }
++The TjMax temperature is set to 85 degrees C if undocumented model specific
++register (UMSR) 0xee has bit 30 set. If not the TjMax is 100 degrees C as
++(sometimes) documented in processor datasheet.
+diff --git a/MAINTAINERS b/MAINTAINERS
+index cbfdc3e..f74beef 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -958,6 +958,12 @@ M: mh...@wi...
+ W: http://www.wittsend.com/computone.html
+ S: Maintained
--static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
-+int msr_write(int cpu, u32 reg, u32 eax, u32 edx)
- {
- struct msr_command cmd;
- int ret;
-@@ -107,7 +107,7 @@ static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
- return ret;
- }
-
--static inline int do_rdmsr(int cpu, u32 reg, u32 * eax, u32 * edx)
-+int msr_read(int cpu, u32 reg, u32 * eax, u32 * edx)
- {
- struct msr_command cmd;
- int ret;
-@@ -131,19 +131,22 @@ static inline int do_rdmsr(int cpu, u32 reg, u32 * eax, u32 * edx)
-
- #else /* ! CONFIG_SMP */
-
--static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
-+int msr_write(int cpu, u32 reg, u32 eax, u32 edx)
- {
- return wrmsr_eio(reg, eax, edx);
- }
-
--static inline int do_rdmsr(int cpu, u32 reg, u32 *eax, u32 *edx)
-+int msr_read(int cpu, u32 reg, u32 *eax, u32 *edx)
- {
- return rdmsr_eio(reg, eax, edx);
- }
-
- #endif /* ! CONFIG_SMP */
-
--static loff_t msr_seek(struct file *file, loff_t offset, int orig)
-+EXPORT_SYMBOL_GPL(msr_write);
-+EXPORT_SYMBOL_GPL(msr_read);
++CORETEMP HARDWARE MONITORING DRIVER
++P: Rudolf Marek
++M: r....@as...
++L: lm-...@lm...
++S: Maintained
+
-+static loff_t msr_fseek(struct file *file, loff_t offset, int orig)
- {
- loff_t ret = -EINVAL;
-
-@@ -161,7 +164,7 @@ static loff_t msr_seek(struct file *file, loff_t offset, int orig)
- return ret;
- }
-
--static ssize_t msr_read(struct file *file, char __user * buf,
-+static ssize_t msr_fread(struct file *file, char __user * buf,
- size_t count, loff_t * ppos)
- {
- u32 __user *tmp = (u32 __user *) buf;
-@@ -174,7 +177,7 @@ static ssize_t msr_read(struct file *file, char __user * buf,
- return -EINVAL; /* Invalid chunk size */
-
- for (; count; count -= 8) {
-- err = do_rdmsr(cpu, reg, &data[0], &data[1]);
-+ err = msr_read(cpu, reg, &data[0], &data[1]);
- if (err)
- return err;
- if (copy_to_user(tmp, &data, 8))
-@@ -185,7 +188,7 @@ static ssize_t msr_read(struct file *file, char __user * buf,
- return ((char __user *)tmp) - buf;
- }
-
--static ssize_t msr_write(struct file *file, const char __user *buf,
-+static ssize_t msr_fwrite(struct file *file, const char __user *buf,
- size_t count, loff_t *ppos)
- {
- const u32 __user *tmp = (const u32 __user *)buf;
-@@ -200,7 +203,7 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
- for (; count; count -= 8) {
- if (copy_from_user(&data, tmp, 8))
- return -EFAULT;
-- err = do_wrmsr(cpu, reg, data[0], data[1]);
-+ err = msr_write(cpu, reg, data[0], data[1]);
- if (err)
- return err;
- tmp += 2;
-@@ -209,7 +212,7 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
- return ((char __user *)tmp) - buf;
- }
-
--static int msr_open(struct inode *inode, struct file *file)
-+static int msr_fopen(struct inode *inode, struct file *file)
- {
- unsigned int cpu = iminor(file->f_path.dentry->d_inode);
- struct cpuinfo_x86 *c = &(cpu_data)[cpu];
-@@ -227,10 +230,10 @@ static int msr_open(struct inode *inode, struct file *file)
- */
- static const struct file_operations msr_fops = {
- .owner = THIS_MODULE,
-- .llseek = msr_seek,
-- .read = msr_read,
-- .write = msr_write,
-- .open = msr_open,
-+ .llseek = msr_fseek,
-+ .read = msr_fread,
-+ .write = msr_fwrite,
-+ .open = msr_fopen,
- };
-
- static int msr_device_create(int i)
+ COSA/SRP SYNC SERIAL DRIVER
+ P: Jan "Yenya" Kasprzak
+ M: ka...@fi...
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 25b72a4..873e463 100644
+index 25b72a4..1d19717 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
-@@ -167,6 +167,15 @@ config SENSORS_ATXP1
+@@ -167,6 +167,14 @@ config SENSORS_ATXP1
This driver can also be built as a module. If so, the module
will be called atxp1.
+config SENSORS_CORETEMP
+ tristate "Intel Core (2) Duo/Solo temperature sensor"
+ depends on HWMON && X86 && EXPERIMENTAL
-+ select X86_MSR
+ help
+ If you say yes here you get support for the temperature
+ sensor inside your CPU. Supported all are all known variants
@@ -199,21 +104,20 @@
obj-$(CONFIG_SENSORS_FSCHER) += fscher.o
diff --git a/drivers/hwmon/coretemp.c b/drivers/hwmon/coretemp.c
new file mode 100644
-index 0000000..f139b41
+index 0000000..a6d19c8
--- /dev/null
+++ b/drivers/hwmon/coretemp.c
-@@ -0,0 +1,400 @@
+@@ -0,0 +1,406 @@
+/*
+ * coretemp.c - Linux kernel module for hardware monitoring
+ *
-+ * Copyright (C) 2006 Rudolf Marek <r....@as...>
++ * Copyright (C) 2007 Rudolf Marek <r....@as...>
+ *
+ * Inspired from many hwmon drivers
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
++ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -238,10 +142,11 @@
+#include <linux/mutex.h>
+#include <linux/list.h>
+#include <linux/platform_device.h>
-+#include <asm/msr.h>
+#include <linux/cpu.h>
++#include <asm/msr.h>
++#include <asm/processor.h>
+
-+#define DRVNAME "coretemp"
++#define DRVNAME "coretemp"
+
+typedef enum { SHOW_TEMP, SHOW_TJMAX, SHOW_LABEL, SHOW_NAME } SHOW;
+
@@ -260,8 +165,7 @@
+ unsigned long last_updated; /* in jiffies */
+ int temp;
+ int tjmax;
-+ /* registers values */
-+ u32 therm_status;
++ u8 alarm;
+};
+
+static struct coretemp_data *coretemp_update_device(struct device *dev);
@@ -270,7 +174,6 @@
+ * Sysfs stuff
+ */
+
-+
+static ssize_t show_name(struct device *dev, struct device_attribute
+ *devattr, char *buf)
+{
@@ -290,7 +193,7 @@
+{
+ struct coretemp_data *data = coretemp_update_device(dev);
+ /* read the Out-of-spec log, never clear */
-+ return sprintf(buf, "%d\n", (data->therm_status >> 5) & 1);
++ return sprintf(buf, "%d\n", data->alarm);
+}
+
+static ssize_t show_temp(struct device *dev,
@@ -298,9 +201,14 @@
+{
+ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+ struct coretemp_data *data = coretemp_update_device(dev);
-+ return sprintf(buf, "%d\n",
-+ attr->index ==
-+ SHOW_TEMP ? data->temp : data->tjmax);
++ int err;
++
++ if (attr->index == SHOW_TEMP)
++ err = data->valid ? sprintf(buf, "%d\n", data->temp) : -EAGAIN;
++ else
++ err = sprintf(buf, "%d\n", data->tjmax);
++
++ return err;
+}
+
+static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, show_temp, NULL,
@@ -334,14 +242,15 @@
+ u32 eax, edx;
+
+ data->valid = 0;
-+ msr_read(data->id, MSR_IA32_THERM_STATUS, &eax, &edx);
-+ data->therm_status = eax;
-+
++ rdmsr_on_cpu(data->id, MSR_IA32_THERM_STATUS, &eax, &edx);
++ data->alarm = (eax >> 5) & 1;
+ /* update only if data has been valid */
+ if (eax & 0x80000000) {
-+ data->temp = data->tjmax - (((data->therm_status >> 16)
++ data->temp = data->tjmax - (((eax >> 16)
+ & 0x7f) * 1000);
+ data->valid = 1;
++ } else {
++ dev_dbg(dev, "Temperature data invalid (0x%x)\n", eax);
+ }
+ data->last_updated = jiffies;
+ }
@@ -366,33 +275,34 @@
+ data->id = pdev->id;
+ data->name = "coretemp";
+ mutex_init(&data->update_lock);
-+ /* Tjmax default is 100C */
++ /* Tjmax default is 100 degrees C */
+ data->tjmax = 100000;
+
-+ /* Some processors have Tjmax 85 following magic should detect it */
-+ /* family is always 0x6 */
++ /* test if we can access the THERM_STATUS MSR */
++ err = rdmsr_safe_on_cpu(data->id, MSR_IA32_THERM_STATUS, &eax, &edx);
++ if (err) {
++ dev_err(&pdev->dev,
++ "Unable to access THERM_STATUS MSR, giving up\n");
++ goto exit_free;
++ }
+
-+ if (((c->x86_model == 0xf) && (c->x86_mask > 3 )) ||
-+ (c->x86_model == 0xe)) {
++ /* Some processors have Tjmax 85 following magic should detect it
++ Intel won't disclose the information without signed NDA, but
++ individuals cannot sign it. Catch(ed) 22.
++ */
+
-+ err = msr_read(data->id, 0xee, &eax, &edx);
++ if (((c->x86_model == 0xf) && (c->x86_mask > 3)) ||
++ (c->x86_model == 0xe)) {
++ err = rdmsr_safe_on_cpu(data->id, 0xee, &eax, &edx);
+ if (err) {
+ dev_warn(&pdev->dev,
-+ "Unable to access MSR 0xEE, Tjmax left at %d\n",
-+ data->tjmax);
++ "Unable to access MSR 0xEE, Tjmax left at %d"
++ "C\n", data->tjmax/1000);
+ } else if (eax & 0x40000000) {
+ data->tjmax = 85000;
+ }
+ }
+
-+ /* test if we can access the THERM_STATUS MSR */
-+ err = msr_read(data->id, MSR_IA32_THERM_STATUS, &eax, &edx);
-+
-+ if (err) {
-+ dev_err(&pdev->dev,
-+ "Unable to access THERM_STATUS MSR, giving up\n");
-+ goto exit_free;
-+ }
+ platform_set_drvdata(pdev, data);
+
+ if ((err = sysfs_create_group(&pdev->dev.kobj, &coretemp_group)))
@@ -429,9 +339,9 @@
+
+static struct platform_driver coretemp_driver = {
+ .driver = {
-+ .owner = THIS_MODULE,
-+ .name = DRVNAME,
-+ },
++ .owner = THIS_MODULE,
++ .name = DRVNAME,
++ },
+ .probe = coretemp_probe,
+ .remove = __devexit_p(coretemp_remove),
+};
@@ -445,7 +355,7 @@
+static LIST_HEAD(pdev_list);
+static DEFINE_MUTEX(pdev_list_mutex);
+
-+static int __cpuinit coretemp_devices_add(unsigned int cpu)
++static int __cpuinit coretemp_device_add(unsigned int cpu)
+{
+ int err;
+ struct platform_device *pdev;
@@ -456,18 +366,15 @@
+ err = -ENOMEM;
+ printk(KERN_ERR DRVNAME ": Device allocation failed\n");
+ goto exit;
-+
+ }
+
+ pdev_entry = kzalloc(sizeof(struct pdev_entry), GFP_KERNEL);
-+
+ if (!pdev_entry) {
+ err = -ENOMEM;
+ goto exit_device_put;
+ }
+
+ err = platform_device_add(pdev);
-+
+ if (err) {
+ printk(KERN_ERR DRVNAME ": Device addition failed (%d)\n",
+ err);
@@ -491,7 +398,7 @@
+}
+
+#ifdef CONFIG_HOTPLUG_CPU
-+void coretemp_devices_remove(unsigned int cpu)
++void coretemp_device_remove(unsigned int cpu)
+{
+ struct pdev_entry *p, *n;
+ mutex_lock(&pdev_list_mutex);
@@ -512,10 +419,10 @@
+
+ switch (action) {
+ case CPU_ONLINE:
-+ coretemp_devices_add(cpu);
++ coretemp_device_add(cpu);
+ break;
+ case CPU_DEAD:
-+ coretemp_devices_remove(cpu);
++ coretemp_device_remove(cpu);
+ break;
+ }
+ return NOTIFY_OK;
@@ -531,7 +438,11 @@
+ int i, err = -ENODEV;
+ struct pdev_entry *p, *n;
+
-+ if (current_cpu_data.x86_vendor != X86_VENDOR_INTEL)
++ printk(KERN_NOTICE DRVNAME ": This driver uses undocumented features"
++ " of Core CPU. Temperature might be wrong!\n");
++
++ /* quick check if we run Intel */
++ if (cpu_data[0].x86_vendor != X86_VENDOR_INTEL)
+ goto exit;
+
+ err = platform_driver_register(&coretemp_driver);
@@ -548,14 +459,14 @@
+ /* supported CPU not found, but report the unknown
+ family 6 CPU */
+ if ((c->x86 == 0x6) && (c->x86_model > 0xf))
-+ printk(KERN_WARNING DRVNAME ": Unknown CPU, please"
-+ " report to the lm-...@lm...\n");
++ printk(KERN_WARNING DRVNAME ": Unknown CPU"
++ "model %x\n", c->x86_model);
+ continue;
+ }
+
-+ err = coretemp_devices_add(i);
++ err = coretemp_device_add(i);
+ if (err)
-+ goto exit_driver;
++ goto exit_devices_unreg;
+ }
+ if (list_empty(&pdev_list)) {
+ err = -ENODEV;
@@ -567,7 +478,7 @@
+#endif
+ return 0;
+
-+exit_driver:
++exit_devices_unreg:
+ mutex_lock(&pdev_list_mutex);
+ list_for_each_entry_safe(p, n, &pdev_list, list) {
+ platform_device_unregister(p->pdev);
@@ -603,31 +514,3 @@
+
+module_init(coretemp_init)
+module_exit(coretemp_exit)
-diff --git a/include/asm-i386/msr.h b/include/asm-i386/msr.h
-index ec3b680..ff73a99 100644
---- a/include/asm-i386/msr.h
-+++ b/include/asm-i386/msr.h
-@@ -97,6 +97,9 @@ static inline void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
- }
- #endif /* CONFIG_SMP */
-
-+int msr_write(int cpu, u32 reg, u32 eax, u32 edx);
-+int msr_read(int cpu, u32 reg, u32 *eax, u32 *edx);
-+
- /* symbolic names for some interesting MSRs */
- /* Intel defined MSRs. */
- #define MSR_IA32_P5_MC_ADDR 0
-diff --git a/include/asm-x86_64/msr.h b/include/asm-x86_64/msr.h
-index 902f9a5..90662f4 100644
---- a/include/asm-x86_64/msr.h
-+++ b/include/asm-x86_64/msr.h
-@@ -160,6 +160,9 @@ static inline unsigned int cpuid_edx(unsigned int op)
- #define MSR_IA32_UCODE_WRITE 0x79
- #define MSR_IA32_UCODE_REV 0x8b
-
-+int msr_write(int cpu, u32 reg, u32 eax, u32 edx);
-+int msr_read(int cpu, u32 reg, u32 *eax, u32 *edx);
-+
- #ifdef CONFIG_SMP
- void rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
- void wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
Added: trunk/kernel/mactel-patches-2.6.21/0008-msr.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0008-msr.patch (rev 0)
+++ trunk/kernel/mactel-patches-2.6.21/0008-msr.patch 2007-03-21 10:58:05 UTC (rev 91)
@@ -0,0 +1,143 @@
+Use functions provided by arch/*/lib/msr-on-cpu.c in arch/i386/kernel/msr.c.
+
+From: Nicolas Boichat <ni...@bo...>
+
+
+---
+
+ arch/i386/kernel/msr.c | 106 ++----------------------------------------------
+ 1 files changed, 4 insertions(+), 102 deletions(-)
+
+diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c
+index bcaa6e9..8cd0a91 100644
+--- a/arch/i386/kernel/msr.c
++++ b/arch/i386/kernel/msr.c
+@@ -45,104 +45,6 @@
+
+ static struct class *msr_class;
+
+-static inline int wrmsr_eio(u32 reg, u32 eax, u32 edx)
+-{
+- int err;
+-
+- err = wrmsr_safe(reg, eax, edx);
+- if (err)
+- err = -EIO;
+- return err;
+-}
+-
+-static inline int rdmsr_eio(u32 reg, u32 *eax, u32 *edx)
+-{
+- int err;
+-
+- err = rdmsr_safe(reg, eax, edx);
+- if (err)
+- err = -EIO;
+- return err;
+-}
+-
+-#ifdef CONFIG_SMP
+-
+-struct msr_command {
+- int err;
+- u32 reg;
+- u32 data[2];
+-};
+-
+-static void msr_smp_wrmsr(void *cmd_block)
+-{
+- struct msr_command *cmd = (struct msr_command *)cmd_block;
+-
+- cmd->err = wrmsr_eio(cmd->reg, cmd->data[0], cmd->data[1]);
+-}
+-
+-static void msr_smp_rdmsr(void *cmd_block)
+-{
+- struct msr_command *cmd = (struct msr_command *)cmd_block;
+-
+- cmd->err = rdmsr_eio(cmd->reg, &cmd->data[0], &cmd->data[1]);
+-}
+-
+-static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
+-{
+- struct msr_command cmd;
+- int ret;
+-
+- preempt_disable();
+- if (cpu == smp_processor_id()) {
+- ret = wrmsr_eio(reg, eax, edx);
+- } else {
+- cmd.reg = reg;
+- cmd.data[0] = eax;
+- cmd.data[1] = edx;
+-
+- smp_call_function_single(cpu, msr_smp_wrmsr, &cmd, 1, 1);
+- ret = cmd.err;
+- }
+- preempt_enable();
+- return ret;
+-}
+-
+-static inline int do_rdmsr(int cpu, u32 reg, u32 * eax, u32 * edx)
+-{
+- struct msr_command cmd;
+- int ret;
+-
+- preempt_disable();
+- if (cpu == smp_processor_id()) {
+- ret = rdmsr_eio(reg, eax, edx);
+- } else {
+- cmd.reg = reg;
+-
+- smp_call_function_single(cpu, msr_smp_rdmsr, &cmd, 1, 1);
+-
+- *eax = cmd.data[0];
+- *edx = cmd.data[1];
+-
+- ret = cmd.err;
+- }
+- preempt_enable();
+- return ret;
+-}
+-
+-#else /* ! CONFIG_SMP */
+-
+-static inline int do_wrmsr(int cpu, u32 reg, u32 eax, u32 edx)
+-{
+- return wrmsr_eio(reg, eax, edx);
+-}
+-
+-static inline int do_rdmsr(int cpu, u32 reg, u32 *eax, u32 *edx)
+-{
+- return rdmsr_eio(reg, eax, edx);
+-}
+-
+-#endif /* ! CONFIG_SMP */
+-
+ static loff_t msr_seek(struct file *file, loff_t offset, int orig)
+ {
+ loff_t ret = -EINVAL;
+@@ -174,9 +76,9 @@ static ssize_t msr_read(struct file *file, char __user * buf,
+ return -EINVAL; /* Invalid chunk size */
+
+ for (; count; count -= 8) {
+- err = do_rdmsr(cpu, reg, &data[0], &data[1]);
++ err = rdmsr_safe_on_cpu(cpu, reg, &data[0], &data[1]);
+ if (err)
+- return err;
++ return -EIO;
+ if (copy_to_user(tmp, &data, 8))
+ return -EFAULT;
+ tmp += 2;
+@@ -200,9 +102,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf,
+ for (; count; count -= 8) {
+ if (copy_from_user(&data, tmp, 8))
+ return -EFAULT;
+- err = do_wrmsr(cpu, reg, data[0], data[1]);
++ err = wrmsr_safe_on_cpu(cpu, reg, data[0], data[1]);
+ if (err)
+- return err;
++ return -EIO;
+ tmp += 2;
+ }
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nbo...@us...> - 2007-03-21 10:57:19
|
Revision: 90
http://svn.sourceforge.net/mactel-linux/?rev=90&view=rev
Author: nboichat
Date: 2007-03-21 03:57:16 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
Add author name.
Modified Paths:
--------------
trunk/kernel/mactel-patches-2.6.21/0002-appleir.patch
Modified: trunk/kernel/mactel-patches-2.6.21/0002-appleir.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0002-appleir.patch 2007-03-21 10:54:14 UTC (rev 89)
+++ trunk/kernel/mactel-patches-2.6.21/0002-appleir.patch 2007-03-21 10:57:16 UTC (rev 90)
@@ -1,6 +1,6 @@
Apple IR patch.
-From: ? <?>
+From: James McKenzie <ma...@ma...>
---
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <nbo...@us...> - 2007-03-21 10:54:37
|
Revision: 89
http://svn.sourceforge.net/mactel-linux/?rev=89&view=rev
Author: nboichat
Date: 2007-03-21 03:54:14 -0700 (Wed, 21 Mar 2007)
Log Message:
-----------
Fix applesmc, as asked by Andrew Morton.
Modified Paths:
--------------
trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch
Modified: trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch 2007-03-17 18:41:11 UTC (rev 88)
+++ trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch 2007-03-21 10:54:14 UTC (rev 89)
@@ -5,11 +5,29 @@
---
+ MAINTAINERS | 6
drivers/hwmon/Kconfig | 24 +
drivers/hwmon/Makefile | 1
- drivers/hwmon/applesmc.c | 964 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 989 insertions(+), 0 deletions(-)
+ drivers/hwmon/applesmc.c | 917 ++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 948 insertions(+), 0 deletions(-)
+diff --git a/MAINTAINERS b/MAINTAINERS
+index 81bcc22..cbfdc3e 100644
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -367,6 +367,12 @@ L: lin...@vg...
+ W: http://www.canb.auug.org.au/~sfr/
+ S: Supported
+
++APPLE SMC DRIVER
++P: Nicolas Boichat
++M: ni...@bo...
++L: mac...@li...
++S: Maintained
++
+ APPLETALK NETWORK LAYER
+ P: Arnaldo Carvalho de Melo
+ M: ac...@co...
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index 6d105a1..25b72a4 100644
--- a/drivers/hwmon/Kconfig
@@ -59,10 +77,10 @@
obj-$(CONFIG_SENSORS_DS1621) += ds1621.o
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
new file mode 100644
-index 0000000..3bdd1a8
+index 0000000..4060667
--- /dev/null
+++ b/drivers/hwmon/applesmc.c
-@@ -0,0 +1,964 @@
+@@ -0,0 +1,917 @@
+/*
+ * drivers/hwmon/applesmc.c - driver for Apple's SMC (accelerometer, temperature
+ * sensors, fan control, keyboard backlight control) used in Intel-based Apple
@@ -98,6 +116,8 @@
+#include <linux/module.h>
+#include <linux/timer.h>
+#include <linux/dmi.h>
++#include <linux/mutex.h>
++#include <linux/hwmon-sysfs.h>
+#include <asm/io.h>
+#include <linux/leds.h>
+
@@ -112,24 +132,24 @@
+#define APPLESMC_READ_CMD 0x10
+#define APPLESMC_WRITE_CMD 0x11
+
-+#define LIGHT_SENSOR_LEFT_KEY "ALV0" //r-o length 6
-+#define LIGHT_SENSOR_RIGHT_KEY "ALV1" //r-o length 6
-+#define BACKLIGHT_KEY "LKSB" //w-o
++#define LIGHT_SENSOR_LEFT_KEY "ALV0" /* r-o length 6 */
++#define LIGHT_SENSOR_RIGHT_KEY "ALV1" /* r-o length 6 */
++#define BACKLIGHT_KEY "LKSB" /* w-o */
+
-+#define CLAMSHELL_KEY "MSLD" //r-o length 1 (unused)
++#define CLAMSHELL_KEY "MSLD" /* r-o length 1 (unused) */
+
-+#define MOTION_SENSOR_X_KEY "MO_X" //r-o length 2
-+#define MOTION_SENSOR_Y_KEY "MO_Y" //r-o length 2
-+#define MOTION_SENSOR_Z_KEY "MO_Z" //r-o length 2
-+#define MOTION_SENSOR_KEY "MOCN" //r/w length 2
++#define MOTION_SENSOR_X_KEY "MO_X" /* r-o length 2 */
++#define MOTION_SENSOR_Y_KEY "MO_Y" /* r-o length 2 */
++#define MOTION_SENSOR_Z_KEY "MO_Z" /* r-o length 2 */
++#define MOTION_SENSOR_KEY "MOCN" /* r/w length 2 */
+
-+#define FANS_COUNT "FNum" //r-o length 1
-+#define FANS_MANUAL "FS! " //r-w length 2
-+#define FAN_ACTUAL_SPEED "F0Ac" //r-o length 2
-+#define FAN_MIN_SPEED "F0Mn" //r-o length 2
-+#define FAN_MAX_SPEED "F0Mx" //r-o length 2
-+#define FAN_SAFE_SPEED "F0Sf" //r-o length 2
-+#define FAN_TARGET_SPEED "F0Tg" //r-w length 2
++#define FANS_COUNT "FNum" /* r-o length 1 */
++#define FANS_MANUAL "FS! " /* r-w length 2 */
++#define FAN_ACTUAL_SPEED "F0Ac" /* r-o length 2 */
++#define FAN_MIN_SPEED "F0Mn" /* r-o length 2 */
++#define FAN_MAX_SPEED "F0Mx" /* r-o length 2 */
++#define FAN_SAFE_SPEED "F0Sf" /* r-o length 2 */
++#define FAN_TARGET_SPEED "F0Tg" /* r-w length 2 */
+
+/* Temperature sensors keys. First set for Macbook(Pro), second for Macmini */
+static const char* temperature_sensors_sets[][8] = {
@@ -137,6 +157,15 @@
+ { "TC0D", "TC0P", NULL }
+};
+
++/* List of keys used to read/write fan speeds */
++static const char* fan_speed_keys[] = {
++ FAN_ACTUAL_SPEED,
++ FAN_MIN_SPEED,
++ FAN_MAX_SPEED,
++ FAN_SAFE_SPEED,
++ FAN_TARGET_SPEED
++};
++
+#define INIT_TIMEOUT_MSECS 5000 /* wait up to 5s for device init ... */
+#define INIT_WAIT_MSECS 50 /* ... in 50ms increments */
+
@@ -166,20 +195,20 @@
+static struct input_dev *applesmc_idev;
+
+/* Indicates whether this computer has an accelerometer. */
-+static unsigned int applesmc_accelerometer = 0;
++static unsigned int applesmc_accelerometer;
+
+/* Indicates whether this computer has light sensors and keyboard backlight. */
-+static unsigned int applesmc_light = 0;
++static unsigned int applesmc_light;
+
+/* Indicates which temperature sensors set to use. */
-+static unsigned int applesmc_temperature_set = 0;
++static unsigned int applesmc_temperature_set;
+
-+static DECLARE_MUTEX(applesmc_sem);
++static struct mutex applesmc_lock;
+
+/*
+ * __wait_status - Wait up to 100ms for the status port to get a certain value
+ * (masked with 0x0f), returning zero if the value is obtained. Callers must
-+ * hold applesmc_sem.
++ * hold applesmc_lock.
+ */
+static int __wait_status(u8 val)
+{
@@ -202,7 +231,7 @@
+/*
+ * applesmc_read_key - reads len bytes from a given key, and put them in buffer.
+ * Returns zero on success or a negative error on failure. Callers must
-+ * hold applesmc_sem.
++ * hold applesmc_lock.
+ */
+static int applesmc_read_key(const char* key, u8* buffer, u8 len)
+{
@@ -218,18 +247,23 @@
+ if (__wait_status(0x04))
+ goto out;
+ }
-+ if (debug) printk(KERN_DEBUG "<%s", key);
++ if (debug)
++ printk(KERN_DEBUG "<%s", key);
+
+ outb(len, APPLESMC_DATA_PORT);
-+ if (debug) printk(KERN_DEBUG ">%x", len);
++ if (debug)
++ printk(KERN_DEBUG ">%x", len);
+
+ for (i = 0; i < len; i++) {
+ if (__wait_status(0x05))
+ goto out;
+ buffer[i] = inb(APPLESMC_DATA_PORT);
-+ if (debug) printk(KERN_DEBUG "<%x", buffer[i]);
++ if (debug)
++ printk(KERN_DEBUG "<%x", buffer[i]);
+ }
-+ if (debug) printk(KERN_DEBUG "\n");
++ if (debug)
++ printk(KERN_DEBUG "\n");
++
+ ret = 0;
+
+out:
@@ -239,7 +273,7 @@
+/*
+ * applesmc_write_key - writes len bytes from buffer to a given key.
+ * Returns zero on success or a negative error on failure. Callers must
-+ * hold applesmc_sem.
++ * hold applesmc_lock.
+ */
+static int applesmc_write_key(const char* key, u8* buffer, u8 len)
+{
@@ -271,7 +305,7 @@
+
+/*
+ * applesmc_read_motion_sensor - Read motion sensor (X, Y or Z). Callers must
-+ * hold applesmc_sem.
++ * hold applesmc_lock.
+ */
+static int applesmc_read_motion_sensor(int index, s16* value)
+{
@@ -306,12 +340,14 @@
+ int total, ret = -ENXIO;
+ u8 buffer[2];
+
-+ if (!applesmc_accelerometer) return 0;
++ if (!applesmc_accelerometer)
++ return 0;
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ for (total = INIT_TIMEOUT_MSECS; total > 0; total -= INIT_WAIT_MSECS) {
-+ if (debug) printk(KERN_DEBUG "applesmc try %d\n", total);
++ if (debug)
++ printk(KERN_DEBUG "applesmc try %d\n", total);
+ if (!applesmc_read_key(MOTION_SENSOR_KEY, buffer, 2) &&
+ (buffer[0] != 0x00 || buffer[1] != 0x00)) {
+ if (total == INIT_TIMEOUT_MSECS) {
@@ -319,8 +355,7 @@
+ " already been initialized"
+ " (0x%02x, 0x%02x).\n",
+ buffer[0], buffer[1]);
-+ }
-+ else {
++ } else {
+ printk(KERN_DEBUG "applesmc: device"
+ " successfully initialized"
+ " (0x%02x, 0x%02x).\n",
@@ -338,24 +373,24 @@
+ printk(KERN_WARNING "applesmc: failed to init the device\n");
+
+out:
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ return ret;
+}
+
+/*
+ * applesmc_get_fan_count - get the number of fans. Callers must NOT hold
-+ * applesmc_sem.
++ * applesmc_lock.
+ */
+static int applesmc_get_fan_count(void)
+{
+ int ret;
+ u8 buffer[1];
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(FANS_COUNT, buffer, 1);
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
@@ -391,7 +426,7 @@
+
+/*
+ * applesmc_calibrate - Set our "resting" values. Callers must
-+ * hold applesmc_sem.
++ * hold applesmc_lock.
+ */
+static void applesmc_calibrate(void)
+{
@@ -404,7 +439,7 @@
+ s16 x, y;
+
+ /* Cannot sleep. Try nonblockingly. If we fail, try again later. */
-+ if (down_trylock(&applesmc_sem)) {
++ if (!mutex_trylock(&applesmc_lock)) {
+ mod_timer(&applesmc_timer, jiffies + APPLESMC_POLL_PERIOD);
+ return;
+ }
@@ -414,7 +449,6 @@
+ if (applesmc_read_motion_sensor(SENSOR_Y, &y))
+ goto out;
+
-+
+ input_report_abs(applesmc_idev, ABS_X, x - rest_x);
+ input_report_abs(applesmc_idev, ABS_Y, y - rest_y);
+ input_sync(applesmc_idev);
@@ -422,7 +456,7 @@
+out:
+ mod_timer(&applesmc_timer, jiffies + APPLESMC_POLL_PERIOD);
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+}
+
+/* Sysfs Files */
@@ -433,7 +467,7 @@
+ int ret;
+ s16 x, y, z;
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_motion_sensor(SENSOR_X, &x);
+ if (ret)
@@ -446,7 +480,7 @@
+ goto out;
+
+out:
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
@@ -454,13 +488,13 @@
+}
+
+static ssize_t applesmc_light_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
++ struct device_attribute *attr, char *sysfsbuf)
+{
+ int ret;
+ u8 left = 0, right = 0;
+ u8 buffer[6];
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(LIGHT_SENSOR_LEFT_KEY, buffer, 6);
+ left = buffer[2];
@@ -470,123 +504,134 @@
+ right = buffer[2];
+
+out:
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
-+ return sprintf(buf, "(%d,%d)\n", left, right);
++ return sprintf(sysfsbuf, "(%d,%d)\n", left, right);
+}
+
-+/* Displays °C * 100 */
-+static ssize_t applesmc_show_temperature(struct device *dev, char *buf,
-+ const char *key)
++/* Displays degree Celsius * 100 */
++static ssize_t applesmc_show_temperature(struct device *dev,
++ struct device_attribute *devattr, char *sysfsbuf)
+{
+ int ret;
+ u8 buffer[2];
+ unsigned int temp;
++ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
++ const char* key =
++ temperature_sensors_sets[applesmc_temperature_set][attr->index];
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(key, buffer, 2);
+ temp = buffer[0]*100;
+ temp += (buffer[1] >> 6) * 25;
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+
+ if (ret)
-+ return ret;
++ return ret;
+ else
-+ return sprintf(buf, "%u\n", temp);
++ return sprintf(sysfsbuf, "%u\n", temp);
+}
+
-+static ssize_t applesmc_show_fan_speed(struct device *dev, char *buf,
-+ const char* key, int offset)
++static ssize_t applesmc_show_fan_speed(struct device *dev,
++ struct device_attribute *attr, char *sysfsbuf)
+{
+ int ret;
+ unsigned int speed = 0;
+ char newkey[5];
+ u8 buffer[2];
++ struct sensor_device_attribute_2 *sensor_attr =
++ to_sensor_dev_attr_2(attr);
+
-+ newkey[0] = key[0];
-+ newkey[1] = '0' + offset;
-+ newkey[2] = key[2];
-+ newkey[3] = key[3];
++ newkey[0] = fan_speed_keys[sensor_attr->nr][0];
++ newkey[1] = '0' + sensor_attr->index;
++ newkey[2] = fan_speed_keys[sensor_attr->nr][2];
++ newkey[3] = fan_speed_keys[sensor_attr->nr][3];
+ newkey[4] = 0;
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(newkey, buffer, 2);
+ speed = ((buffer[0] << 8 | buffer[1]) >> 2);
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
-+ return sprintf(buf, "%u\n", speed);
++ return sprintf(sysfsbuf, "%u\n", speed);
+}
+
-+static ssize_t applesmc_store_fan_speed(struct device *dev, const char *buf,
-+ size_t count, const char* key, int offset)
++static ssize_t applesmc_store_fan_speed(struct device *dev,
++ struct device_attribute *attr,
++ const char *sysfsbuf, size_t count)
+{
+ int ret;
+ u32 speed;
+ char newkey[5];
+ u8 buffer[2];
++ struct sensor_device_attribute_2 *sensor_attr =
++ to_sensor_dev_attr_2(attr);
+
-+ speed = simple_strtoul(buf, NULL, 10);
++ speed = simple_strtoul(sysfsbuf, NULL, 10);
+
+ if (speed > 0x4000) /* Bigger than a 14-bit value */
+ return -EINVAL;
+
-+ newkey[0] = key[0];
-+ newkey[1] = '0' + offset;
-+ newkey[2] = key[2];
-+ newkey[3] = key[3];
++ newkey[0] = fan_speed_keys[sensor_attr->nr][0];
++ newkey[1] = '0' + sensor_attr->index;
++ newkey[2] = fan_speed_keys[sensor_attr->nr][2];
++ newkey[3] = fan_speed_keys[sensor_attr->nr][3];
+ newkey[4] = 0;
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ buffer[0] = (speed >> 6) & 0xff;
+ buffer[1] = (speed << 2) & 0xff;
+ ret = applesmc_write_key(newkey, buffer, 2);
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
+ return count;
+}
+
-+static ssize_t applesmc_show_fan_manual(struct device *dev, char *buf,
-+ int offset)
++static ssize_t applesmc_show_fan_manual(struct device *dev,
++ struct device_attribute *devattr, char *sysfsbuf)
+{
+ int ret;
+ u16 manual = 0;
+ u8 buffer[2];
++ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(FANS_MANUAL, buffer, 2);
-+ manual = ((buffer[0] << 8 | buffer[1]) >> offset) & 0x01;
++ manual = ((buffer[0] << 8 | buffer[1]) >> attr->index) & 0x01;
+
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
-+ return sprintf(buf, "%d\n", manual);
++ return sprintf(sysfsbuf, "%d\n", manual);
+}
+
-+static ssize_t applesmc_store_fan_manual(struct device *dev, const char *buf,
-+ size_t count, int offset)
++static ssize_t applesmc_store_fan_manual(struct device *dev,
++ struct device_attribute *devattr,
++ const char *sysfsbuf, size_t count)
+{
+ int ret;
+ u8 buffer[2];
+ u32 input;
+ u16 val;
++ struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
+
-+ input = simple_strtoul(buf, NULL, 10);
++ input = simple_strtoul(sysfsbuf, NULL, 10);
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+
+ ret = applesmc_read_key(FANS_MANUAL, buffer, 2);
+ val = (buffer[0] << 8 | buffer[1]);
@@ -594,9 +639,9 @@
+ goto out;
+
+ if (input)
-+ val = val | (0x01 << offset);
++ val = val | (0x01 << attr->index);
+ else
-+ val = val & ~(0x01 << offset);
++ val = val & ~(0x01 << attr->index);
+
+ buffer[0] = (val >> 8) & 0xFF;
+ buffer[1] = val & 0xFF;
@@ -604,7 +649,7 @@
+ ret = applesmc_write_key(FANS_MANUAL, buffer, 2);
+
+out:
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+ if (ret)
+ return ret;
+ else
@@ -612,17 +657,17 @@
+}
+
+static ssize_t applesmc_calibrate_show(struct device *dev,
-+ struct device_attribute *attr, char *buf)
++ struct device_attribute *attr, char *sysfsbuf)
+{
-+ return sprintf(buf, "(%d,%d)\n", rest_x, rest_y);
++ return sprintf(sysfsbuf, "(%d,%d)\n", rest_x, rest_y);
+}
+
+static ssize_t applesmc_calibrate_store(struct device *dev,
-+ struct device_attribute *attr, const char *buf, size_t count)
++ struct device_attribute *attr, const char *sysfsbuf, size_t count)
+{
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+ applesmc_calibrate();
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+
+ return count;
+}
@@ -632,11 +677,11 @@
+{
+ u8 buffer[2];
+
-+ down(&applesmc_sem);
++ mutex_lock(&applesmc_lock);
+ buffer[0] = value;
+ buffer[1] = 0x00;
+ applesmc_write_key(BACKLIGHT_KEY, buffer, 2);
-+ up(&applesmc_sem);
++ mutex_unlock(&applesmc_lock);
+}
+
+static struct led_classdev applesmc_backlight = {
@@ -652,7 +697,7 @@
+static DEVICE_ATTR(light, 0444, applesmc_light_show, NULL);
+
+/*
-+ * Macro defining helper functions and DEVICE_ATTR for a fan sysfs entries.
++ * Macro defining SENSOR_DEVICE_ATTR for a fan sysfs entries.
+ * - show actual speed
+ * - show/store minimum speed
+ * - show maximum speed
@@ -661,67 +706,33 @@
+ * - show/store manual mode
+ */
+#define sysfs_fan_speeds_offset(offset) \
-+static ssize_t show_fan_actual_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_speed(dev, buf, FAN_ACTUAL_SPEED, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_actual_speed, S_IRUGO, \
-+ show_fan_actual_speed_##offset, NULL); \
++static SENSOR_DEVICE_ATTR_2(fan##offset##_actual_speed, S_IRUGO, \
++ applesmc_show_fan_speed, NULL, 0, offset); \
+\
-+static ssize_t show_fan_minimum_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_speed(dev, buf, FAN_MIN_SPEED, offset); \
-+} \
-+static ssize_t store_fan_minimum_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, const char *buf, size_t count) \
-+{ \
-+ return applesmc_store_fan_speed(dev, buf, count, FAN_MIN_SPEED, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_minimum_speed, S_IRUGO | S_IWUSR, \
-+ show_fan_minimum_speed_##offset, store_fan_minimum_speed_##offset); \
++static SENSOR_DEVICE_ATTR_2(fan##offset##_minimum_speed, S_IRUGO | S_IWUSR, \
++ applesmc_show_fan_speed, applesmc_store_fan_speed, 1, offset); \
+\
-+static ssize_t show_fan_maximum_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_speed(dev, buf, FAN_MAX_SPEED, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_maximum_speed, S_IRUGO, \
-+ show_fan_maximum_speed_##offset, NULL); \
++static SENSOR_DEVICE_ATTR_2(fan##offset##_maximum_speed, S_IRUGO, \
++ applesmc_show_fan_speed, NULL, 2, offset); \
+\
-+static ssize_t show_fan_safe_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_speed(dev, buf, FAN_SAFE_SPEED, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_safe_speed, S_IRUGO, \
-+ show_fan_safe_speed_##offset, NULL); \
++static SENSOR_DEVICE_ATTR_2(fan##offset##_safe_speed, S_IRUGO, \
++ applesmc_show_fan_speed, NULL, 3, offset); \
+\
-+static ssize_t show_fan_target_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_speed(dev, buf, FAN_TARGET_SPEED, offset); \
-+} \
-+static ssize_t store_fan_target_speed_##offset (struct device *dev, \
-+ struct device_attribute *attr, const char *buf, size_t count) \
-+{ \
-+ return applesmc_store_fan_speed(dev, buf, count, FAN_TARGET_SPEED, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_target_speed, S_IRUGO | S_IWUSR, \
-+ show_fan_target_speed_##offset, store_fan_target_speed_##offset); \
-+static ssize_t show_fan_manual_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_fan_manual(dev, buf, offset); \
-+} \
-+static ssize_t store_fan_manual_##offset (struct device *dev, \
-+ struct device_attribute *attr, const char *buf, size_t count) \
-+{ \
-+ return applesmc_store_fan_manual(dev, buf, count, offset); \
-+} \
-+static DEVICE_ATTR(fan##offset##_manual, S_IRUGO | S_IWUSR, \
-+ show_fan_manual_##offset, store_fan_manual_##offset);
++static SENSOR_DEVICE_ATTR_2(fan##offset##_target_speed, S_IRUGO | S_IWUSR, \
++ applesmc_show_fan_speed, applesmc_store_fan_speed, 4, offset); \
++\
++static SENSOR_DEVICE_ATTR(fan##offset##_manual, S_IRUGO | S_IWUSR, \
++ applesmc_show_fan_manual, applesmc_store_fan_manual, offset); \
++\
++static struct attribute *fan##offset##_attributes[] = { \
++ &sensor_dev_attr_fan##offset##_actual_speed.dev_attr.attr, \
++ &sensor_dev_attr_fan##offset##_minimum_speed.dev_attr.attr, \
++ &sensor_dev_attr_fan##offset##_maximum_speed.dev_attr.attr, \
++ &sensor_dev_attr_fan##offset##_safe_speed.dev_attr.attr, \
++ &sensor_dev_attr_fan##offset##_target_speed.dev_attr.attr, \
++ &sensor_dev_attr_fan##offset##_manual.dev_attr.attr, \
++ NULL \
++};
+
+/*
+ * Create the needed functions for each fan using the macro defined above
@@ -730,54 +741,39 @@
+sysfs_fan_speeds_offset(0);
+sysfs_fan_speeds_offset(1);
+
-+/* Macro creating the sysfs entries for a fan */
-+#define device_create_file_fan(ret, client, offset) \
-+do { \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_actual_speed.attr); \
-+if (ret) break; \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_minimum_speed.attr); \
-+if (ret) break; \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_maximum_speed.attr); \
-+if (ret) break; \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_safe_speed.attr); \
-+if (ret) break; \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_target_speed.attr); \
-+if (ret) break; \
-+ret = sysfs_create_file(client, &dev_attr_fan##offset##_manual.attr); \
-+} while (0)
++static const struct attribute_group fan_attribute_groups[] = {
++ { .attrs = fan0_attributes },
++ { .attrs = fan1_attributes }
++};
+
+/*
-+ * Macro defining the helper function and DEVICE_ATTR for a temperature sensor
-+ * sysfs entry.
++ * Temperature sensors sysfs entries.
+ */
-+#define sysfs_temperature_offset(offset) \
-+static ssize_t show_temperature_##offset (struct device *dev, \
-+ struct device_attribute *attr, char *buf) \
-+{ \
-+ return applesmc_show_temperature(dev, buf, \
-+ temperature_sensors_sets[applesmc_temperature_set][offset]); \
-+} \
-+static DEVICE_ATTR(temperature_##offset, S_IRUGO, \
-+ show_temperature_##offset, NULL);
++static SENSOR_DEVICE_ATTR(temperature_0, S_IRUGO,
++ applesmc_show_temperature, NULL, 0);
++static SENSOR_DEVICE_ATTR(temperature_1, S_IRUGO,
++ applesmc_show_temperature, NULL, 1);
++static SENSOR_DEVICE_ATTR(temperature_2, S_IRUGO,
++ applesmc_show_temperature, NULL, 2);
++static SENSOR_DEVICE_ATTR(temperature_3, S_IRUGO,
++ applesmc_show_temperature, NULL, 3);
++static SENSOR_DEVICE_ATTR(temperature_4, S_IRUGO,
++ applesmc_show_temperature, NULL, 4);
++static SENSOR_DEVICE_ATTR(temperature_5, S_IRUGO,
++ applesmc_show_temperature, NULL, 5);
++static SENSOR_DEVICE_ATTR(temperature_6, S_IRUGO,
++ applesmc_show_temperature, NULL, 6);
+
-+/*
-+ * Create the needed functions for each temperature sensors using the macro
-+ * defined above (7 temperature sensors are supported)
-+ */
-+sysfs_temperature_offset(0);
-+sysfs_temperature_offset(1);
-+sysfs_temperature_offset(2);
-+sysfs_temperature_offset(3);
-+sysfs_temperature_offset(4);
-+sysfs_temperature_offset(5);
-+sysfs_temperature_offset(6);
++static struct attribute *temperature_attributes[] = {
++ &sensor_dev_attr_temperature_0.dev_attr.attr,
++ &sensor_dev_attr_temperature_1.dev_attr.attr,
++ &sensor_dev_attr_temperature_2.dev_attr.attr,
++ &sensor_dev_attr_temperature_3.dev_attr.attr,
++ &sensor_dev_attr_temperature_4.dev_attr.attr,
++ &sensor_dev_attr_temperature_5.dev_attr.attr,
++ &sensor_dev_attr_temperature_6.dev_attr.attr,
++};
+
-+/* Macro creating the sysfs entry for a temperature sensor */
-+#define device_create_files_temperature(ret, client, offset) \
-+{ \
-+ ret = sysfs_create_file(client, &dev_attr_temperature_##offset.attr); \
-+} while (0)
-+
+/* Module stuff */
+
+/*
@@ -786,8 +782,7 @@
+static int applesmc_dmi_match(struct dmi_system_id *id)
+{
+ int i = 0;
-+ struct dmi_match_data* dmi_data =
-+ (struct dmi_match_data*)id->driver_data;
++ struct dmi_match_data* dmi_data = id->driver_data;
+ printk(KERN_INFO "applesmc: %s detected:\n", id->ident);
+ applesmc_accelerometer = dmi_data->accelerometer;
+ printk(KERN_INFO "applesmc: - Model %s accelerometer\n",
@@ -804,7 +799,8 @@
+}
+
+/* Create accelerometer ressources */
-+static int applesmc_create_accelerometer(void) {
++static int applesmc_create_accelerometer(void)
++{
+ int ret;
+
+ ret = sysfs_create_file(&pdev->dev.kobj, &dev_attr_position.attr);
@@ -849,43 +845,47 @@
+}
+
+/* Release all ressources used by the accelerometer */
-+static void applesmc_release_accelerometer(void) {
++static void applesmc_release_accelerometer(void)
++{
+ del_timer_sync(&applesmc_timer);
+ input_unregister_device(applesmc_idev);
+}
+
++static __initdata struct dmi_match_data applesmc_dmi_data[] = {
++/* MacBook Pro: accelerometer, backlight and temperature set 0 */
++ { .accelerometer = 1, .light = 1, .temperature_set = 0 },
++/* MacBook: accelerometer and temperature set 0 */
++ { .accelerometer = 1, .light = 0, .temperature_set = 0 },
++/* MacBook: temperature set 1 */
++ { .accelerometer = 0, .light = 0, .temperature_set = 1 }
++};
++
++/* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
++ * So we need to put "Apple MacBook Pro" before "Apple MacBook". */
++static __initdata struct dmi_system_id applesmc_whitelist[] = {
++ { applesmc_dmi_match, "Apple MacBook Pro", {
++ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },
++ (void*)&applesmc_dmi_data[0]},
++ { applesmc_dmi_match, "Apple MacBook", {
++ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME,"MacBook") },
++ (void*)&applesmc_dmi_data[1]},
++ { applesmc_dmi_match, "Apple Macmini", {
++ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
++ DMI_MATCH(DMI_PRODUCT_NAME,"Macmini") },
++ (void*)&applesmc_dmi_data[2]},
++ { .ident = NULL }
++};
++
+static int __init applesmc_init(void)
+{
+ int ret;
+ int count;
++ int i;
+
-+ struct dmi_match_data applesmc_dmi_data[] = {
-+ /* MacBook Pro: accelerometer, backlight and temperature set 0 */
-+ { .accelerometer = 1, .light = 1, .temperature_set = 0 },
-+ /* MacBook: accelerometer and temperature set 0 */
-+ { .accelerometer = 1, .light = 0, .temperature_set = 0 },
-+ /* MacBook: temperature set 1 */
-+ { .accelerometer = 0, .light = 0, .temperature_set = 1 }
-+ };
++ mutex_init(&applesmc_lock);
+
-+ /* Note that DMI_MATCH(...,"MacBook") will match "MacBookPro1,1".
-+ * So we need to put "Apple MacBook Pro" before "Apple MacBook". */
-+ struct dmi_system_id applesmc_whitelist[] = {
-+ { applesmc_dmi_match, "Apple MacBook Pro", {
-+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
-+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },
-+ (void*)&applesmc_dmi_data[0]},
-+ { applesmc_dmi_match, "Apple MacBook", {
-+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
-+ DMI_MATCH(DMI_PRODUCT_NAME,"MacBook") },
-+ (void*)&applesmc_dmi_data[1]},
-+ { applesmc_dmi_match, "Apple Macmini", {
-+ DMI_MATCH(DMI_BOARD_VENDOR,"Apple"),
-+ DMI_MATCH(DMI_PRODUCT_NAME,"Macmini") },
-+ (void*)&applesmc_dmi_data[2]},
-+ { .ident = NULL }
-+ };
-+
+ if (!dmi_check_system(applesmc_whitelist)) {
+ printk(KERN_WARNING "applesmc: supported laptop not found!\n");
+ ret = -ENODEV;
@@ -912,8 +912,7 @@
+ count = applesmc_get_fan_count();
+ if (count < 0) {
+ printk(KERN_ERR "applesmc: Cannot get the number of fans.\n");
-+ }
-+ else {
++ } else {
+ printk(KERN_INFO "applesmc: %d fans found.\n", count);
+
+ switch (count) {
@@ -922,11 +921,13 @@
+ " but at most 2 fans are supported"
+ " by the driver.\n");
+ case 2:
-+ device_create_file_fan(ret, &pdev->dev.kobj, 1);
++ ret = sysfs_create_group(&pdev->dev.kobj,
++ &fan_attribute_groups[1]);
+ if (ret)
+ goto out_device;
+ case 1:
-+ device_create_file_fan(ret, &pdev->dev.kobj, 0);
++ ret = sysfs_create_group(&pdev->dev.kobj,
++ &fan_attribute_groups[0]);
+ if (ret)
+ goto out_device;
+ case 0:
@@ -934,43 +935,13 @@
+ }
+ }
+
-+ count = 0;
-+ while (temperature_sensors_sets[applesmc_temperature_set][count]
-+ != NULL)
-+ count++;
-+
-+ switch (count) {
-+ default:
-+ case 7:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 6);
++ for (i = 0;
++ temperature_sensors_sets[applesmc_temperature_set][i] != NULL;
++ i++) {
++ ret = sysfs_create_file(&pdev->dev.kobj,
++ temperature_attributes[i]);
+ if (ret)
+ goto out_device;
-+ case 6:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 5);
-+ if (ret)
-+ goto out_device;
-+ case 5:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 4);
-+ if (ret)
-+ goto out_device;
-+ case 4:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 3);
-+ if (ret)
-+ goto out_device;
-+ case 3:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 2);
-+ if (ret)
-+ goto out_device;
-+ case 2:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 1);
-+ if (ret)
-+ goto out_device;
-+ case 1:
-+ device_create_files_temperature(ret, &pdev->dev.kobj, 0);
-+ if (ret)
-+ goto out_device;
-+ case 0:
-+ ;
+ }
+
+ if (applesmc_accelerometer) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Nicolas B. <ni...@bo...> - 2007-03-21 06:17:15
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Tino Keitel wrote: > On Tue, Mar 13, 2007 at 22:07:48 -0700, nbo...@us... wrote: >> Revision: 84 >> http://svn.sourceforge.net/mactel-linux/?rev=84&view=rev >> Author: nboichat >> Date: 2007-03-13 22:07:48 -0700 (Tue, 13 Mar 2007) >> >> Log Message: >> ----------- >> Add appleir.patch. >> >> Added Paths: >> ----------- >> trunk/kernel/mactel-patches-2.6.21/appleir.patch >> >> Added: trunk/kernel/mactel-patches-2.6.21/appleir.patch >> =================================================================== >> --- trunk/kernel/mactel-patches-2.6.21/appleir.patch (rev 0) >> +++ trunk/kernel/mactel-patches-2.6.21/appleir.patch 2007-03-14 05:07:48 UTC (rev 84) >> @@ -0,0 +1,435 @@ >> +Apple IR patch. >> + >> +From: ? <?> > > Hi, > > this patch was originally posted to this list by James McKenzie > (macmini at madingley dot org) [1]. Maybe he should be mentioned in the SVN > repository. Sure. Will be fixed with the next commit. Thanks. Best regards, Nicolas -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGAM3M01ajQnpJXgERAlu8AJ0XUDGGLZfJB1QnFilCHhkB7YS3BQCfZPUG HTc6Rs6ZkWQbFSi2FsaeASU= =ynM2 -----END PGP SIGNATURE----- |
|
From: Bob C. <me...@bo...> - 2007-03-21 04:07:49
|
On Tue, Mar 20, 2007 at 03:02:14PM +0800, Nicolas Boichat wrote: > I tried neverball on my Macbook Pro 1st generation (Core Duo, not Core 2 > Duo), and the x axis in inverted, not the y axis. > > Could you confirm which axis is inverted on your Macbook? > > Also, have you tried the modified hdaps-gl, available here: > http://mactel-linux.svn.sourceforge.net/viewvc/mactel-linux/trunk/tools/hdaps-gl/ > ? Is it working correctly? Ok I tried it out again and it is in fact the x-axis that is inverted within neverball. The hdaps-gl works fine (Macbook Core Duo here). Thanks for the driver! -- Bob Copeland %% www.bobcopeland.com |
|
From: Patrick <zu...@fl...> - 2007-03-20 15:41:40
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="dry goods" src="cid:par...@fl..." height="164" width="499"><br> The temperature of your hands and feet increases to normal. The SuperTopo forum has a long thread with a lot of stories memorializing Todd.<br> "With CrossOver Linux 6. Brooklyn Restaurant Week AnnouncedBrooklyn's fourth annual Restaurant Week, Dine in Brooklyn, is March 19-30, 2007.<br> Finally, the consortium aims to ensure the long-term sustainability of opencourseware projects by identifying ways to improve effectiveness and reduce costs.<br> A variety of information and online and instructor-led training is available for customers wanting to learn more about Quartus II software and its productivity-enhancing features. Paul University Hospital in Dallas TX Heart and Lung Center.<br> Rockets F Chuck Hayes has continued his recent upswing with back-to-back double digit scoring, five-plus board efforts. Its so very easy to do so from the comfortable perch of a leather office chair swivling behing a computer screen in a climate controled room. in any case, keep up the good blogging. Prospect Park Photo Tour Brooklyn's flagship Park has 585-acres of natural wonder and cultural attractions to keep you busy year-round.<br> Posted by Russell Barrett December 20th, 2006 at 12:46 pm For anyone who is interested in a field test by industry tester Andrew Bisharat, you can check out the January 2007 Rock and Ice magazine.<br> Aron is no different than any one else who profits off of tragedy.<br> </body> </html> |
|
From: Bob C. <me...@bo...> - 2007-03-20 15:14:22
|
> I tried neverball on my Macbook Pro 1st generation (Core Duo, not Core 2 > Duo), and the x axis in inverted, not the y axis. > > Could you confirm which axis is inverted on your Macbook? Indeed, my memory is hazy and it may well have been the x-axis. I can't find my modified copy. I'll check it out again tonight along with your hdaps-gl and let you know how it goes... -Bob |
|
From: Tino K. <tin...@ti...> - 2007-03-20 08:08:05
|
On Wed, Mar 14, 2007 at 23:18:32 -0700, nbo...@us... wrote: > Revision: 87 > http://svn.sourceforge.net/mactel-linux/?rev=87&view=rev > Author: nboichat > Date: 2007-03-14 23:18:32 -0700 (Wed, 14 Mar 2007) > > Log Message: > ----------- > Remove usb-storage-zerowait. > Update sigmatel-audio (modifications asked by upstream maintainer) Hi, I gave the new sigmatel patches a quick test with 2.6.21-rc4 on my mini and the internal speaker, digital out and line in were ok. Regards, Tino |
|
From: Bradley H. <bd...@gm...> - 2007-03-20 07:16:10
|
Slightly off-topic, but I've been experiencing a minor bug in the keyboard backlight feature. I say it is "minor" only because the feature serves no real functional purpose. You can activate a trigger called "heartbeat" that will cause the keyboard light to pulse at a speed based on the CPU usage. On my MBP17, after activating this trigger the machine will either lock-up or core dump within about a minute (timing is not consistent). I'm not sure if this is a part of the driver you wrote, but if it is then I thought you might like to know. If not, maybe the person who did write this module will see this message. ~Bradley On 3/20/07, Nicolas Boichat <ni...@bo...> wrote: > Hello, > > Bob Copeland wrote: > > On 3/14/07, Nicolas Boichat <ni...@bo...> wrote: > >> Hello, > >> > >> I developed, a while ago, a driver the Apple System Management > >> Controller, which provides an accelerometer (Apple Sudden Motion > >> Sensor), light sensors, temperature sensors, keyboard backlight control > >> and fan control on Intel-based Apple's computers (MacBook Pro, MacBook, > >> MacMini). > > > > Hi Nicolas, > > > > I tried out an earlier version of this patch several months ago just to > > play > > around with the joystick part of the accelerometer driver on my MacBook, > > and > > found that it was backwards in the y-direction compared to what Neverball > > seemed to want (of course, NB has no way to invert the joystick). I think > > I just did something like this in my own copy: > > > > + y = -y; > > input_report_abs(applesmc_idev, ABS_X, x - rest_x); > > input_report_abs(applesmc_idev, ABS_Y, y - rest_y); > > > > I don't claim you necessarily want to change it, but thought I'd pass it > > along. > > I tried neverball on my Macbook Pro 1st generation (Core Duo, not Core 2 > Duo), and the x axis in inverted, not the y axis. > > Could you confirm which axis is inverted on your Macbook? > > Also, have you tried the modified hdaps-gl, available here: > http://mactel-linux.svn.sourceforge.net/viewvc/mactel-linux/trunk/tools/hdaps-gl/ > ? Is it working correctly? > > Thanks, > > Best regards, > > Nicolas > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Mactel-linux-devel mailing list > Mac...@li... > https://lists.sourceforge.net/lists/listinfo/mactel-linux-devel > |
|
From: Nicolas B. <ni...@bo...> - 2007-03-20 07:02:52
|
Hello, Bob Copeland wrote: > On 3/14/07, Nicolas Boichat <ni...@bo...> wrote: >> Hello, >> >> I developed, a while ago, a driver the Apple System Management >> Controller, which provides an accelerometer (Apple Sudden Motion >> Sensor), light sensors, temperature sensors, keyboard backlight control >> and fan control on Intel-based Apple's computers (MacBook Pro, MacBook, >> MacMini). > > Hi Nicolas, > > I tried out an earlier version of this patch several months ago just to > play > around with the joystick part of the accelerometer driver on my MacBook, > and > found that it was backwards in the y-direction compared to what Neverball > seemed to want (of course, NB has no way to invert the joystick). I think > I just did something like this in my own copy: > > + y = -y; > input_report_abs(applesmc_idev, ABS_X, x - rest_x); > input_report_abs(applesmc_idev, ABS_Y, y - rest_y); > > I don't claim you necessarily want to change it, but thought I'd pass it > along. I tried neverball on my Macbook Pro 1st generation (Core Duo, not Core 2 Duo), and the x axis in inverted, not the y axis. Could you confirm which axis is inverted on your Macbook? Also, have you tried the modified hdaps-gl, available here: http://mactel-linux.svn.sourceforge.net/viewvc/mactel-linux/trunk/tools/hdaps-gl/ ? Is it working correctly? Thanks, Best regards, Nicolas |
|
From: Tino K. <tin...@ti...> - 2007-03-19 13:43:12
|
On Tue, Mar 13, 2007 at 22:07:48 -0700, nbo...@us... wrote: > Revision: 84 > http://svn.sourceforge.net/mactel-linux/?rev=84&view=rev > Author: nboichat > Date: 2007-03-13 22:07:48 -0700 (Tue, 13 Mar 2007) > > Log Message: > ----------- > Add appleir.patch. > > Added Paths: > ----------- > trunk/kernel/mactel-patches-2.6.21/appleir.patch > > Added: trunk/kernel/mactel-patches-2.6.21/appleir.patch > =================================================================== > --- trunk/kernel/mactel-patches-2.6.21/appleir.patch (rev 0) > +++ trunk/kernel/mactel-patches-2.6.21/appleir.patch 2007-03-14 05:07:48 UTC (rev 84) > @@ -0,0 +1,435 @@ > +Apple IR patch. > + > +From: ? <?> Hi, this patch was originally posted to this list by James McKenzie (macmini at madingley dot org) [1]. Maybe he should be mentioned in the SVN repository. Regards, Tino [1] http://sf.net/mailarchive/forum.php?thread_id=10919392&forum_id=47882 |
|
From: Allen <yx...@bo...> - 2007-03-19 13:17:16
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="entirely" src="cid:par...@bo..." height="226" width="500"><br> Designing and maintaining an effective website is one of the many topics covered in the Infraspection Institute Level III Best Practices training course. This is due to the natural expansion and contraction that occurs as the harmonic currents increase and decrease with equipment use during certain times of the day. Far from being a "point and shoot" application, a thermographer needs to understand heater operation and heat transfer as well as issues pertinent to thermography. More importantly, it gave me the information to improve my current infrared program and expand to offer more services.<br> The client sorts the profiles by all sorts of criteria like price, report features, experience of the thermographer, etc. It's a great opportunity to share IR data with other thermographers.<br> This type of technology is commonly used in modern office equipment and lighting systems, and virtually all other low power electronic devices. Infrared Thermographers can register their company profile on ConnectIR" and receive opportunities to bid on jobs.<br> Under the right circumstances, infrared thermography can be used to provide qualitative and quantitative data for in-service heater tubes.<br> Domain names can only use letters, numbers, or dashes; spaces and symbols are not allowed. The performance of the switch mode power supply, in particular the charging of its capacitor, is critically dependant on the magnitude of the peak voltage.<br> (SITS) and was created by Greg Stockton, founder and President. It's a great opportunity to share IR data with other thermographers.<br> Because of this, the oversizing of transformers can accentuate losses caused by the skin effect.<br> Site includes composer bio, awards, credits, media reviews of recent works, studio gear, interviews, photos and related film music industry links. Lewis, President and CEO of FLIR Systems, Inc. In this Tip we explore the frequently misunderstood topic of infrared data ownership.<br> Never use an inverter in a wet location as electrocution may result. K-rated transformers are designed to meet NEC safety and installation requirements.<br> Depending on the capacity and configuration of the distribution system, the presence of third-order, zero sequence harmonics may include any or all of the following symptoms. Higher levels of phase and neutral conductor current can increase neutral to ground voltage loss, dropping the voltage to potentially damaging levels for sensitive electronic equipment.<br> This process, which is repeated twice in each cycle, causes AC current to flow only during a portion of the AC voltage wave in abrupt pulses.<br> Arent Fox LLP acted as legal advisor to the Company. In general, Shop Rule will always apply unless there is a written agreement to the contrary. Under the right conditions, thermal imagery can also provide evidence of excess energy loss through insulated window assemblies.<br> Deliveries will begin in the second half of 2007. Presently, there is a wide selection of equipment available from a record number of manufacturers. Director of Music for the award winning music and sound design team at Soundelux DMG (Design Music Group), Hollywood - Los Angeles, California.<br> For more information call 609-239-4788 or visit us online at: www. Under the right circumstances, infrared thermography can be used to provide qualitative and quantitative data for in-service heater tubes.<br> </body> </html> |
|
From: Thornton A. E. <de...@st...> - 2007-03-19 06:45:53
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="Latin America" src="cid:par...@st..." height="337" width="330"><br> At the same time, many other doctors and researchers are now beginning to feel that undiagnosed milk allergies may be the underlying problem behind the link between milk and asthma. It also deactivates carcinogens that may promote cancer.<br> It was a great event and to be able to represent the swiss flag here in Leysin was for sure pretty cool! According to James Braly, M. Im Rahmen der Pressekonferenz der 9.<br> Well, of course, it is the prescription of antihistamines, or drugs that are designed to counteract the histamines produced on purpose by the body in order to conserve water.<br> At least now we have results from the best riding in the best possible conditions.<br> Milk was the villain. Usually a cold can be easily differentiated from other conditions, like the flu and allergies, that have some similar symptoms.<br> "Nature is very homeostatic," he says. The common cold is a viral infection of the upper-respiratory tract that attacks the nose and nasal passages, and can spread to the chest. Hinzu kommen 15 Amateur Starter, die sich am Freitag den 16.<br> Though I'm not aware of any studies that validate this use, many popular European pharmaceutical products include a combination of proteolytic enzymes and "cold drugs" together in a formula.<br> All trademarks, registered trademarks and servicemarks mentioned on this site are the property of their respective owners. Diana Sadlowski (Poland, 20) 589.<br> "It was the chocolate", a cardiologist diagnosed me.<br> Echinacea in particular has been popularized as a cold treatment, so much so that you can even find it in many regular drug stores.<br> When I ate strawberry ice cream, I ended up in the ER again, with PVC's and a gastroenteritis.<br> It's right up there with Mom and apple pie as a national icon, a nutritional necessity (or so we're told) for strong bones and sparkling teeth.<br> </body> </html> |
|
From: <nbo...@us...> - 2007-03-18 22:58:57
|
Revision: 88
http://svn.sourceforge.net/mactel-linux/?rev=88&view=rev
Author: nboichat
Date: 2007-03-17 11:41:11 -0700 (Sat, 17 Mar 2007)
Log Message:
-----------
Fix sound on Macbook and Macmini.
Modified Paths:
--------------
trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch
trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch
Added Paths:
-----------
trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch
Modified: trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch 2007-03-15 06:18:32 UTC (rev 87)
+++ trunk/kernel/mactel-patches-2.6.21/0001-applesmc.patch 2007-03-17 18:41:11 UTC (rev 88)
@@ -11,10 +11,10 @@
3 files changed, 989 insertions(+), 0 deletions(-)
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index c3d4856..798b91d 100644
+index 6d105a1..25b72a4 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
-@@ -593,6 +593,30 @@ config SENSORS_HDAPS
+@@ -594,6 +594,30 @@ config SENSORS_HDAPS
Say Y here if you have an applicable laptop and want to experience
the awesome power of hdaps.
Modified: trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch 2007-03-15 06:18:32 UTC (rev 87)
+++ trunk/kernel/mactel-patches-2.6.21/0004-coretemp.patch 2007-03-17 18:41:11 UTC (rev 88)
@@ -5,14 +5,58 @@
---
- arch/i386/kernel/msr.c | 31 ++--
- drivers/hwmon/Kconfig | 9 +
- drivers/hwmon/Makefile | 1
- drivers/hwmon/coretemp.c | 400 ++++++++++++++++++++++++++++++++++++++++++++++
- include/asm-i386/msr.h | 3
- include/asm-x86_64/msr.h | 3
- 6 files changed, 433 insertions(+), 14 deletions(-)
+ Documentation/hwmon/coretemp | 37 ++++
+ arch/i386/kernel/msr.c | 31 ++-
+ drivers/hwmon/Kconfig | 9 +
+ drivers/hwmon/Makefile | 1
+ drivers/hwmon/coretemp.c | 400 ++++++++++++++++++++++++++++++++++++++++++
+ include/asm-i386/msr.h | 3
+ include/asm-x86_64/msr.h | 3
+ 7 files changed, 470 insertions(+), 14 deletions(-)
+diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp
+new file mode 100644
+index 0000000..ba02dee
+--- /dev/null
++++ b/Documentation/hwmon/coretemp
+@@ -0,0 +1,37 @@
++Kernel driver coretemp
++======================
++
++Supported chips:
++ * All Intel Core family
++ Prefix: 'coretemp'
++ Addresses scanned: CPUID (family 0x6, models 0xe, 0xf)
++ Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
++ Volume 3A: System Programming Guide
++
++Author: Rudolf Marek
++Contact: Rudolf Marek <r....@as...>
++
++Description
++-----------
++
++This driver permits reading temperature sensor embedded inside Intel Core CPU.
++Temperature is measured in degrees Celsius and measurement resolution is
++1 degree C. Valid temperatures are from 0 to TjMax degrees C, because
++the actual temperature is in fact a delta from TjMax.
++
++Temperature known as TjMax is the maximum junction temperature of processor.
++Intel defines this temperature as 85C or 100C. At this temperature, protection
++mechanism will perform actions to forcibly cool down the processor. Alarm
++may be raised, if the temperature grows enough (more than TjMax) to trigger
++the Out-Of-Spec bit. Following table summarizes the exported sysfs files:
++
++temp1_input - Core temperature (in milidegrees of Celsius).
++temp1_crit - Maximum junction temperature (in milidegrees of Celsius).
++temp1_crit_alarm - Set when Out-of-spec bit is set, never clears.
++ Correct CPU operation is no longer guaranteed.
++temp1_label - Contains string with the "Core X", where X is processor
++ number.
++
++The TjMax temperature is set to 85C if undocumented model specific register
++(UMSR) 0xee has bit 30 set. If not the TjMax is 100C as documented in processor
++datasheet. Intel will not disclose this information to individuals.
diff --git a/arch/i386/kernel/msr.c b/arch/i386/kernel/msr.c
index bcaa6e9..c9a8f88 100644
--- a/arch/i386/kernel/msr.c
@@ -122,7 +166,7 @@
static int msr_device_create(int i)
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 798b91d..5278f1d 100644
+index 25b72a4..873e463 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -167,6 +167,15 @@ config SENSORS_ATXP1
Added: trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch
===================================================================
--- trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch (rev 0)
+++ trunk/kernel/mactel-patches-2.6.21/0007-sigmatel_audio2.patch 2007-03-17 18:41:11 UTC (rev 88)
@@ -0,0 +1,38 @@
+Fix audio on Macmini and Macbook.
+
+From: Takashi Iwai <ti...@su...>
+
+
+---
+
+ sound/pci/hda/patch_sigmatel.c | 10 ++--------
+ 1 files changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
+index 2d78a9f..9ff5cf2 100644
+--- a/sound/pci/hda/patch_sigmatel.c
++++ b/sound/pci/hda/patch_sigmatel.c
+@@ -524,12 +524,6 @@ static unsigned int d945gtp5_pin_configs[10] = {
+ 0x02a19320, 0x40000100,
+ };
+
+-static unsigned int macbook_pin_configs[10] = {
+- 0x0321e230, 0x03a1e020, 0x400000fd, 0x9017e110,
+- 0x400000fe, 0x0381e021, 0x1345e240, 0x13c5e22e,
+- 0x400000fc, 0x400000fb,
+-};
+-
+ static unsigned int macbook_pro_v1_pin_configs[10] = {
+ 0x0321e230, 0x03a1e020, 0x9017e110, 0x01014010,
+ 0x01a19021, 0x0381e021, 0x1345e240, 0x13c5e22e,
+@@ -546,8 +540,8 @@ static unsigned int *stac922x_brd_tbl[STAC_922X_MODELS] = {
+ [STAC_D945_REF] = ref922x_pin_configs,
+ [STAC_D945GTP3] = d945gtp3_pin_configs,
+ [STAC_D945GTP5] = d945gtp5_pin_configs,
+- [STAC_MACMINI] = d945gtp5_pin_configs,
+- [STAC_MACBOOK] = macbook_pin_configs,
++ [STAC_MACMINI] = macbook_pro_v1_pin_configs,
++ [STAC_MACBOOK] = macbook_pro_v1_pin_configs,
+ [STAC_MACBOOK_PRO_V1] = macbook_pro_v1_pin_configs,
+ [STAC_MACBOOK_PRO_V2] = macbook_pro_v2_pin_configs,
+ };
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: Powell P. J. <qe...@ce...> - 2007-03-18 18:43:17
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> <img alt="smoked" src="cid:par...@ce..." height="195" width="374"><br> Experience withWindows, Solaris and Linux.<br> In this role you will beexpected to contribute to the overall enterprise SOA architectureand directly support the different CIO's through multipleintegration efforts. This is a highlyvisible role with very high impact on all development for thefirm and involves highly skilled engineering, contact withcustomers, and maintaining relationships with vendors. Familiarity with design patterns, strong quantitativeand analytical skills, exceptional communication skills, and theability to work well in a team-oriented environment. Front-Office Trading IT experience including previous experiencein front-office IT development with a good understanding of theEquities business environment. Very strong engineering skills on Linux.<br> In this role, you will support theeffort to establish a large historical data repository on SybaseIQ. Development experience in both UNIX and Windowenvironments is also required. A history of successful interaction with customers.<br> The ability to managetime effectively. Knowledge of Oracle database design, databasemodeling, schemas and programming techniques. Superb verbal communication, negotiation, and facilitationskills.<br> Excellent verbal andwritten communication skills. Strong technical background with experience supporting systemsand users in a fast paced global environment.<br> In thisrole you will be responsible for defining and progressing anext-generation web 2.<br> Working knowledge of UMLand ER modeling tools. Excellent problemsolving skills and the ability to look at problems and issuesfrom outside the box.<br> This role will requireinteraction with senior IT management as well as senior businessrepresentatives.<br> </body> </html> |
|
From: Nicolas B. <ni...@bo...> - 2007-03-18 12:39:15
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, Soeren Sonnenburg wrote: > On Wed, 2007-03-14 at 14:12 +0800, Nicolas Boichat wrote: > > Hi Nicolas, > >> About appletouch, I don't know exactly... If there is a consensus that >> the new value for ATP_THRESHOLD is better, it should probably stay >> there, and maybe be sent upstream. > > OK. Not sure whether this then should not better be a config option > controllable via sysfs. Maybe... If anyone wants to code it... >>> Apart from the (non-essential) core-temp patch, the patch that should >>> really make it into mainline is applesmc. I wonder whether you plan to >>> do this for 2.6.22 - such that we finally don't need any extra stuff >>> anymore ? >> We can always keep some patches, even if they are non-essential (now >> that I figured out how to use git, creating the series of patches for a >> new kernel version is really easy). > > That's true but I don't see the need if all the hw is supported in > vanilla linux after applesmc is in. I would rather send patches directly > upstream then... Yeah except the process of getting a patch upstream is long, and usually they like a lot if you can tell them many users tested it before... >> I'll work on applesmc, but don't except it for 2.6.22, as I think 2.6.21 >> will be released very shortly, so the feature freeze for 2.6.22 will >> happen shortly. I'm also not very sure about the way my code is written, >> so it might require some important modifications. > > Well 2.6.21 will still take >1month to be released so you have 6 weeks I > guess... > >>> Also, how did you find out about all these SMC keys like 'ALV0' etc ? >> By reverse-engineering the OS X driver. > > wow! how ? By disassembling some OS X kernel extensions (AppleSMC, AppleSMCLMU, SMCMotion Sensor), using "otool -tvV" IIRC. Also, OS X provides a great external debugger, you can debug the kernel from another computer (even running Linux, there are some tutorials on the web about it IIRC), you put some breakpoints at some places, see what happens... I also used external sources like the open-source smcFanControl tool... That's it! Best regards, Nicolas -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFF/TKh01ajQnpJXgERAvTwAJ9OjZpNr3/3YYVcBn6Ab8mer3oUMQCfR8xU 0n9qQRt69MZ0hMbonWQJFu0= =lVDx -----END PGP SIGNATURE----- |
|
From: Nicolas B. <ni...@bo...> - 2007-03-18 12:25:07
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, Guillaume Pujol wrote: > 2007/3/17, Nicolas Boichat <ni...@bo...>: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Hi, >> >> Guillaume Pujol wrote: >>> Hi, >>> >>> Attached to this mail you'll can find clean mactel patches for linux >>> kernel 2.6.20. >>> They apply against linux 2.6.20 + gentoo patchset + suspend2 without >>> offset nor fuzz (should apply to unpatched official kernel as well). >> Ok cool. Personally, when I did this job, I edited the patchfiles >> manually... Then it was easier for me to do a diff between the files, >> and check I didn't remove a part of the patch, or modify something... >> With your patchset it's hard for me to compare... > > Actually I did almost all modifications manually directly to the > patchfiles. It's not really what I see when I run a simple diff between the last SVN and your patchset, there are a huge amount of differences. > I had an hard time tracking and fixing all tab/spaces > mixings :). Just don't fix anything... It makes huge patches, and you lose track of the essential modifications... It's there are spaces, ok, it's bad, but leave them there. (in the kernel, you should only have tabs) > Apart from that and usbhid.patch, I did not change > anything in the code. Ok. >>> Also: >>> - rewritten usbhid.patch which was partly applied to official 2.6.20, >>> and added HID_QUIRK_IGNORE_MOUSE everywhere it was useful. >> Just beware of this in include/linux/hid.h: >> +#define HID_QUIRK_IGNORE_MOUSE 0x00010000 >> #define HID_QUIRK_BAD_RELATIVE_KEYS 0x00010000 >> >> These two constants should have a different values. > You are right, but this is the value figuring in the original > patchfile in mactel SVN. Maybe you'd like to change this value to > 0x00020000 like in upstream 2.6.21 ? Yes. >>> - removed a part of applesmc.patch which was redundant with coretemp.patch >> Which part exactly? I cannot see what you changed because you changed >> all the tabs in spaces... Also I don't think there is anything in >> applesmc redundant with coretemp... > > Oops sorry nervermind... I just checked again after a fresh checkout > and obviously there is nothing redundant. I guess it was the result of > a wrong manipulation on my local repo :| Ok. >> Thanks, > Thanks to you, >> Best regards, >> > > P.S: also I just checked and these patches apply just fine against > linux-2.6.20.3 straight from kernel.org. Ok cool to hear it. Best regards, Nicolas -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFF/S9701ajQnpJXgERAvNDAJ9QHke3mIKRZ3rj1kPICrlKGeryZgCfXYEq l9RLNh25Kh9P4VyQHkfgSuQ= =vJLp -----END PGP SIGNATURE----- |
|
From: Nicolas B. <ni...@bo...> - 2007-03-18 12:18:05
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, Soeren Sonnenburg wrote: > On Sun, 2007-03-18 at 03:03 +0800, Nicolas Boichat wrote: >> Guillaume Pujol wrote: >>> Hi, >>> >>> Attached to this mail you'll can find clean mactel patches for linux >>> kernel 2.6.20. >>> They apply against linux 2.6.20 + gentoo patchset + suspend2 without >>> offset nor fuzz (should apply to unpatched official kernel as well). >> Ok cool. Personally, when I did this job, I edited the patchfiles >> manually... Then it was easier for me to do a diff between the files, >> and check I didn't remove a part of the patch, or modify something... >> With your patchset it's hard for me to compare... > > if this patchset is against gentoo it is useful for gentoo users but not > that match for mactel-svn. also I don't see the need to even patch the > kernel with suspend2 ... ususpend, i.e. s2ram/s2disk/s2both work nicely > enough - no ? Personally I use suspend2 patchset (without much success since a long time unfortunately...). Anyway, it doesn't hurt, mactel patches and suspend2 patches modify different files. >>> Also: >>> - rewritten usbhid.patch which was partly applied to official 2.6.20, >>> and added HID_QUIRK_IGNORE_MOUSE everywhere it was useful. >> Just beware of this in include/linux/hid.h: >> +#define HID_QUIRK_IGNORE_MOUSE 0x00010000 >> #define HID_QUIRK_BAD_RELATIVE_KEYS 0x00010000 >> >> These two constants should have a different values. > > indeed IIRC the patch that is now in 2.6.21-rcX has > > #define HID_QUIRK_IGNORE_MOUSE 0x00020000 > > and while we are at it the mouse button emulation code is now also in > 2.6.20.3 ... Ok. Best regards, Nicolas -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.3 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFF/S3M01ajQnpJXgERAneJAJ9tYMaZbHqQItgmZDzsuSVWxEFIMwCcCqqB MP9zIhEbPf5RVTyxIpcHHx8= =QPM4 -----END PGP SIGNATURE----- |
|
From: Guillaume P. <gui...@gm...> - 2007-03-17 19:42:19
|
2007/3/17, Nicolas Boichat <ni...@bo...>: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hi, > > Guillaume Pujol wrote: > > Hi, > > > > Attached to this mail you'll can find clean mactel patches for linux > > kernel 2.6.20. > > They apply against linux 2.6.20 + gentoo patchset + suspend2 without > > offset nor fuzz (should apply to unpatched official kernel as well). > > Ok cool. Personally, when I did this job, I edited the patchfiles > manually... Then it was easier for me to do a diff between the files, > and check I didn't remove a part of the patch, or modify something... > With your patchset it's hard for me to compare... Actually I did almost all modifications manually directly to the patchfiles. I had an hard time tracking and fixing all tab/spaces mixings :). Apart from that and usbhid.patch, I did not change anything in the code. > > > Also: > > - rewritten usbhid.patch which was partly applied to official 2.6.20, > > and added HID_QUIRK_IGNORE_MOUSE everywhere it was useful. > > Just beware of this in include/linux/hid.h: > +#define HID_QUIRK_IGNORE_MOUSE 0x00010000 > #define HID_QUIRK_BAD_RELATIVE_KEYS 0x00010000 > > These two constants should have a different values. You are right, but this is the value figuring in the original patchfile in mactel SVN. Maybe you'd like to change this value to 0x00020000 like in upstream 2.6.21 ? > > - removed a part of applesmc.patch which was redundant with coretemp.patch > Which part exactly? I cannot see what you changed because you changed > all the tabs in spaces... Also I don't think there is anything in > applesmc redundant with coretemp... Oops sorry nervermind... I just checked again after a fresh checkout and obviously there is nothing redundant. I guess it was the result of a wrong manipulation on my local repo :| > > Thanks, Thanks to you, > > Best regards, > P.S: also I just checked and these patches apply just fine against linux-2.6.20.3 straight from kernel.org. |
|
From: Soeren S. <mac...@nn...> - 2007-03-17 19:13:13
|
On Sun, 2007-03-18 at 03:03 +0800, Nicolas Boichat wrote: > Guillaume Pujol wrote: > > Hi, > > > > Attached to this mail you'll can find clean mactel patches for linux > > kernel 2.6.20. > > They apply against linux 2.6.20 + gentoo patchset + suspend2 without > > offset nor fuzz (should apply to unpatched official kernel as well). > > Ok cool. Personally, when I did this job, I edited the patchfiles > manually... Then it was easier for me to do a diff between the files, > and check I didn't remove a part of the patch, or modify something... > With your patchset it's hard for me to compare... if this patchset is against gentoo it is useful for gentoo users but not that match for mactel-svn. also I don't see the need to even patch the kernel with suspend2 ... ususpend, i.e. s2ram/s2disk/s2both work nicely enough - no ? > > Also: > > - rewritten usbhid.patch which was partly applied to official 2.6.20, > > and added HID_QUIRK_IGNORE_MOUSE everywhere it was useful. > > Just beware of this in include/linux/hid.h: > +#define HID_QUIRK_IGNORE_MOUSE 0x00010000 > #define HID_QUIRK_BAD_RELATIVE_KEYS 0x00010000 > > These two constants should have a different values. indeed IIRC the patch that is now in 2.6.21-rcX has #define HID_QUIRK_IGNORE_MOUSE 0x00020000 and while we are at it the mouse button emulation code is now also in 2.6.20.3 ... Soeren |