Hi Nicolas,

Thanks for doing all this.  What kinds of tools are you using on OS X
to find out how the OS is talking to the SMC.  Did you just generate
the assembler code for AppleSMC.kext?

Thanks,
Sheer

On 4/6/07, Nicolas Boichat <[EMAIL PROTECTED]> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hello,
>
> I spent my day reverse-engineering AppleSMC.kext driver on Mac OS X
> (10.4.8), and here are my conclusions:
>  - Only a few keys are written on startup. I'm almost sure these keys
> are kept as-is after a reboot, none of them seem to have a huge impact
> on the power consumption.
>  - OS X does NOT take control over the fans.
>
> List of keys written by OS X, during boot-up (no keys are written once
> the system has booted, except the key corresponding to the keyboard
> backlight):
>
> NTOK (0x4e544f4b) - [1-ui8 ] ==> Wrote 0x01
> MOLD (0x4d4f4c44) - [1-ui8 ] ==> Wrote 0x14
> MOHD (0x4d4f4844) - [1-ui8 ] ==> Wrote 0x14
> MOLT (0x4d4f4c54) - [2-sp78] ==> Wrote 0x00 0x60
> MOHT (0x4d4f4854) - [2-sp78] ==> Wrote 0x01 0xc0
> MOCN (0x4d4f434e) - [2-ui16] ==> Wrote 0x00 0xf8
> MOCN (0x4d4f434e) - [2-ui16] ==> Wrote 0x80 0xf8
> 102: MOCN (0x4d4f434e) - [2-ui16] ==> Wrote 0xe0 0xf8
> CLKT (0x434c4b54) - [4-ui32] ==> Wrote 0x00 0x00 0xf4 0xd0 (varies)
> CLKL ??? ==> Wrote 0x00 0x00 0x70 0x80
> MOCN (0x4d4f434e) - [2-ui16] ==> Wrote 0xe0 0xf8
> MSDW (0x4d534457) - [1-flag] ==> Wrote 0x01 (cold boots only)
>
> I also found a way to list all the keys supported by the SMC controller
>  (with some comments):
> 0: #KEY (0x234b4559) - [4-ui32] (smcGetKeyCount)
> 1: +LKS (0x2b4c4b53) - [1-flag]
> 2: ACID (0x41434944) - [8-ch8*]
> 3: AL!  (0x414c2120) - [1-ui8 ]
> 4: ALA0 (0x414c4130) - [6-{ala]
> 5: ALA1 (0x414c4131) - [6-{ala]
> 6: ALA2 (0x414c4132) - [6-{ala]
> 7: ALA3 (0x414c4133) - [6-{ala]
> 8: ALA4 (0x414c4134) - [6-{ala]
> 9: ALA5 (0x414c4135) - [6-{ala]
> 10: ALAT (0x414c4154) - [4-{alt]
> 11: ALI0 (0x414c4930) - [3-{ali]
> 12: ALI1 (0x414c4931) - [3-{ali]
> 13: ALSC (0x414c5343) - [16-{alc]
> 14: ALSF (0x414c5346) - [2-fp1f]
> 15: ALSL (0x414c534c) - [2-ui16]
> 16: ALST (0x414c5354) - [2-ui16]
> 17: ALT0 (0x414c5430) - [4-{alr]
> 18: ALT1 (0x414c5431) - [4-{alr]
> 19: ALT2 (0x414c5432) - [4-{alr]
> 20: ALT3 (0x414c5433) - [4-{alr]
> 21: ALV0 (0x414c5630) - [6-{alv]
> 22: ALV1 (0x414c5631) - [6-{alv]
> 23: B0AC (0x42304143) - [2-si16]
> 24: B0AV (0x42304156) - [2-ui16]
> 25: B0BI (0x42304249) - [1-ui8 ]
> 26: B0LI (0x42304c49) - [2-ui16]
> 27: B0RI (0x42305249) - [2-ui16]
> 28: B0St (0x42305374) - [2-ui16]
> 29: BATP (0x42415450) - [1-flag]
> 30: BNum (0x424e756d) - [1-ui8 ]
> 31: BRSC (0x42525343) - [2-ui16]
> 32: BSDC (0x42534443) - [1-ui8 ]
> 33: BSIn (0x4253496e) - [1-ui8 ]
> 34: CLKT (0x434c4b54) - [4-ui32] smcSetTimeCallback ????
> 35: Dlpc (0x446c7063) - [1-flag]
> 36: EPCF (0x45504346) - [1-flag]
> 37: EPCI (0x45504349) - [4-ui32]
> 38: EPCV (0x45504356) - [2-ui16]
> 39: EPMA (0x45504d41) - [4-ch8*]
> 40: EPMI (0x45504d49) - [1-ui8 ]
> 41: EPUF (0x45505546) - [1-flag]
> 42: EPUI (0x45505549) - [4-ui32]
> 43: EPUV (0x45505556) - [2-ui16]
> 44: EVCT (0x45564354) - [2-ui16]
> 45: EVMD (0x45564d44) - [4-ui32]
> 46: EVRD (0x45565244) - [32-ch8*]
> 47: F0Ac (0x46304163) - [2-fpe2]
> 48: F0ID (0x46304944) - [16-{fds]
> 49: F0Mn (0x46304d6e) - [2-fpe2]
> 50: F0Mx (0x46304d78) - [2-fpe2]
> 51: F0Sf (0x46305366) - [2-fpe2]
> 52: F0Tg (0x46305467) - [2-fpe2]
> 53: F1Ac (0x46314163) - [2-fpe2]
> 54: F1ID (0x46314944) - [16-{fds]
> 55: F1Mn (0x46314d6e) - [2-fpe2]
> 56: F1Mx (0x46314d78) - [2-fpe2]
> 57: F1Sf (0x46315366) - [2-fpe2]
> 58: F1Tg (0x46315467) - [2-fpe2]
> 59: FNum (0x464e756d) - [1-ui8 ]
> 60: FS!  (0x46532120) - [2-ui16]
> 61: HDBS (0x48444253) - [1-ui8]
> 62: HDST (0x48445354) - [4-ui16]
> 63: HDSW (0x48445357) - [4-ui32]
> 64: IC0C (0x49433043) - [2-fp6a]
> 65: IC0c (0x49433063) - [2-ui16]
> 66: ID0R (0x49443052) - [2-fp3d]
> 67: ID0r (0x49443072) - [2-ui16]
> 68: IF0R (0x49463052) - [2-fp4c]
> 69: IF0r (0x49463072) - [2-ui16]
> 70: IG0C (0x49473043) - [2-fp6a]
> 71: IG0c (0x49473063) - [2-ui16]
> 72: IM0R (0x494d3052) - [2-fp6a]
> 73: IM0r (0x494d3072) - [2-ui16]
> 74: IN0R (0x494e3052) - [2-fp6a]
> 75: IN0r (0x494e3072) - [2-ui16]
> 76: IP0R (0x49503052) - [2-fp4c]
> 77: IP0r (0x49503072) - [2-ui16]
> 78: LAcN (0x4c41634e) - [1-ui8 ]
> 79: LAtN (0x4c41744e) - [2-ui16] variableCommand ???
> 80: LDSB (0x4c445342) - [2-fp1f]
> 81: LKSB (0x4c4b5342) - [2-{lkb]
> 82: LS!  (0x4c532120) - [1-ui8 ]
> 83: LSCF (0x4c534346) - [10-{lsc]
> 84: LSDD (0x4c534444) - [8-{lsd]
> 85: LSDU (0x4c534455) - [8-{lsd]
> 86: LSFD (0x4c534644) - [6-{lsf]
> 87: LSFU (0x4c534655) - [6-{lsf]
> 88: LSLB (0x4c534c42) - [2-{pwm]
> 89: LSLF (0x4c534c46) - [2-{pwm]
> 90: LSLN (0x4c534c4e) - [2-{pwm]
> 91: LSOF (0x4c534f46) - [1-flag] smcHandlePEHaltRestart
> 92: LSOO (0x4c534f4f) - [1-flag]
> 93: LSPV (0x4c535056) - [2-{pwm]
> 94: LSRB (0x4c535242) - [1-flag]
> 95: LSSB (0x4c535342) - [2-{lso] smcHandlePEHaltRestart
> 96: LSSS (0x4c535353) - [2-{lso] AppleSMC13setPowerState
> 97: LSUP (0x4c535550) - [1-ui8 ]
> 98: MACA (0x4d414341) - [4-ui32]
> 99: MACM (0x4d41434d) - [1-flag]
> 100: MACR (0x4d414352) - [32-ch8*]
>
> 101: MOCF (0x4d4f4346) - [2-ui16] NOPE
> 102: MOCN (0x4d4f434e) - [2-ui16]
>  - 80 00 to enable readings
>  - Interrupts(?) by anding 60 00
> 103: MOHD (0x4d4f4844) - [1-ui8 ]
>  - 14 is put there
> 104: MOHT (0x4d4f4854) - [2-sp78]
>  - 01 c0 there
> 105: MOLD (0x4d4f4c44) - [1-ui8 ]
>  - 14 there
> 106: MOLT (0x4d4f4c54) - [2-sp78]
>  - 00 60 there
> 107: MOST (0x4d4f5354) - [2-ui16]
>  - Read
> 108: MO_X (0x4d4f5f58) - [2-sp78]
> 109: MO_Y (0x4d4f5f59) - [2-sp78]
> 110: MO_Z (0x4d4f5f5a) - [2-sp78]
>
> 111: MSAL (0x4d53414c) - [1-si8 ]
> 112: MSBC (0x4d534243) - [2-ui16]
> 113: MSBP (0x4d534250) - [2-ui16]
> 114: MSBc (0x4d534263) - [2-ui16]
> 115: MSBp (0x4d534270) - [2-ui16]
> 116: MSC0 (0x4d534330) - [2-ui16]
> 117: MSC1 (0x4d534331) - [2-ui16]
> 118: MSC2 (0x4d534332) - [2-ui16]
> 119: MSC3 (0x4d534333) - [2-ui16]
> 120: MSCP (0x4d534350) - [2-ui16]
> 121: MSCR (0x4d534352) - [1-ui18]
> 122: MSCS (0x4d534353) - [1-ui8 ]
> 123: MSCT (0x4d534354) - [1-ui8 ]
> 124: MSCa (0x4d534361) - [2-ui16]
> 125: MSCb (0x4d534362) - [2-ui16]
> 126: MSCc (0x4d534363) - [2-ui16]
> 127: MSCd (0x4d534364) - [2-ui16]
> 128: MSCl (0x4d53436c) - [2-ui16]
> 129: MSCm (0x4d53436d) - [2-ui16]
> 130: MSCn (0x4d53436e) - [2-ui16]
> 131: MSCo (0x4d53436f) - [2-ui16]
> 132: MSDW (0x4d534457) - [1-flag] AppleSMC13setPowerState
> AppleSMC27smcPowerStateChangeCallback
> 133: MSLD (0x4d534c44) - [1-ui8 ]
> 134: MSPA (0x4d535041) - [1-ui8 ]
> 135: MSPB (0x4d535042) - [1-ui8 ]
> 136: MSPH (0x4d535048) - [2-ui8 ]
> 137: MSPS (0x4d535053) - [1-{msp]
> 138: MSSD (0x4d535344) - [1-si8 ] AppleSMC23smcPublishShutdownCause
> 139: MSSS (0x4d535353) - [1-{mss]
> 140: MSTM (0x4d53544d) - [1-ui8 ]
> 141: MSTc (0x4d535463) - [1-ui8 ]
> 142: MSTg (0x4d535467) - [1-ui8 ]
> 143: MSTm (0x4d53546d) - [1-ui8 ]
> 144: MSWR (0x4d535752) - [1-ui8 ]
> 145: NTOK (0x4e544f4b) - [1-ui8 ] AppleSMC5startEP9IOService
> AppleSMC13setPowerState
> 146: ONMI (0x4f4e4d49) - [1-ui8 ]
> 147: OSK0 (0x4f534b30) - [32-ch8*]
> 148: OSK1 (0x4f534b31) - [32-ch8*]
> 149: PC0C (0x50433043) - [2-fp88]
> 150: PD0R (0x50443052) - [2-fp88]
> 151: PF0R (0x50463052) - [2-fp88]
> 152: PG0C (0x50473043) - [2-fp88]
> 153: PM0R (0x504d3052) - [2-fp88]
> 154: PN0R (0x504e3052) - [2-fp88]
> 155: PP0R (0x50503052) - [2-fp88]
> 156: RBr  (0x52427220) - [8-ch8*]
> 157: REV  (0x52455620) - [6-{rev] AppleSMC10smcGetVersEP10SMCVersion
> 158: RMde (0x524d6465) - [1-byte]
> 159: RPlt (0x52506c74) - [8-ch8*]
> 160: RSvn (0x5253766e) - [4-ui32]
> 161: RVBF (0x52564246) - [6-{rev]
> 162: RVUF (0x52565546) - [6-{rev]
> 163: SAS! (0x53415321) - [4-ui32]
> 164: SDRd (0x53445264) - [2-ui16]
> 165: SIS! (0x53495321) - [2-ui16]
> 166: SM0x (0x534d3078) - [2-ui16]
> 167: SM0y (0x534d3079) - [2-ui16]
> 168: SM0z (0x534d307a) - [2-ui16]
> 169: SPHT (0x53504854) - [1-ui8 ]
> 170: SPS! (0x53505321) - [2-ui16]
> 171: TA0P (0x54413050) - [2-sp78]
> 172: TB0T (0x54423054) - [2-sp78]
> 173: TC0D (0x54433044) - [2-sp78]
> 174: TC0P (0x54433050) - [2-sp78]
> 175: TG0H (0x54473048) - [2-sp78]
> 176: TG0P (0x54473050) - [2-sp78]
> 177: TG0T (0x54473054) - [2-sp78]
> 178: Th0H (0x54683048) - [2-sp78]
> 179: Th1H (0x54683148) - [2-sp78]
> 180: Tm0P (0x546d3050) - [2-sp78]
> 181: Ts0P (0x54733050) - [2-sp78]
> 182: Ts1P (0x54733150) - [2-sp78]
> 183: VC0C (0x56433043) - [2-fp2e]
> 184: VC0c (0x56433063) - [2-ui16]
> 185: VG0C (0x56473043) - [2-fp2e]
> 186: VG0c (0x56473063) - [2-ui16]
> 187: VP0R (0x56503052) - [2-fp4c]
> 188: VP0r (0x56503072) - [2-ui16]
> 189: iC0C (0x69433043) - [2-ui16]
> 190: iC0c (0x69433063) - [2-ui16]
> 191: iD0R (0x69443052) - [2-ui16]
> 192: iD0r (0x69443072) - [2-ui16]
> 193: iF0R (0x69463052) - [2-ui16]
> 194: iF0r (0x69463072) - [2-ui16]
> 195: iG0C (0x69473043) - [2-ui16]
> 196: iG0c (0x69473063) - [2-ui16]
> 197: iM0R (0x694d3052) - [2-ui16]
> 198: iM0r (0x694d3072) - [2-ui16]
> 199: iN0R (0x694e3052) - [2-ui16]
> 200: iN0r (0x694e3072) - [2-ui16]
> 201: iP0R (0x69503052) - [2-ui16]
> 202: iP0r (0x69503072) - [2-ui16]
> 203: pC0C (0x70433043) - [2-{sds]
> 204: pD0R (0x70443052) - [2-{sds]
> 205: pF0R (0x70463052) - [2-{sds]
> 206: pG0C (0x70473043) - [2-{sds]
> 207: pM0R (0x704d3052) - [2-{sds]
> 208: pN0R (0x704e3052) - [2-{sds]
> 209: pP0R (0x70503052) - [2-{sds]
> 210: tA0P (0x74413050) - [2-{sds]
> 211: tB0T (0x74423054) - [2-{sds]
> 212: tC0D (0x74433044) - [2-{sds]
> 213: tC0P (0x74433050) - [2-{sds]
> 214: tG0H (0x74473048) - [2-{sds]
> 215: tG0P (0x74473050) - [2-{sds]
> 216: tG0T (0x74473054) - [2-{sds]
> 217: th0H (0x74683048) - [2-{sds]
> 218: th1H (0x74683148) - [2-{sds]
> 219: tm0P (0x746d3050) - [2-{sds]
> 220: ts0P (0x74733050) - [2-{sds]
> 221: ts1P (0x74733150) - [2-{sds]
> 222: vC0C (0x76433043) - [2-{sds]
> 223: vC0c (0x76433063) - [2-{sds]
> 224: vG0C (0x76473043) - [2-{sds]
> 225: vG0c (0x76473063) - [2-{sds]
> 226: vP0R (0x76503052) - [2-{sds]
> 227: vP0r (0x76503072) - [2-{sds]
> 228: {ala (0x7b616c61) - [3-]
> 229: {alc (0x7b616c63) - [3-]
> 230: {ali (0x7b616c69) - [3-]
> 231: {alr (0x7b616c72) - [3-]
> 232: {alt (0x7b616c74) - [3-]
> 233: {alv (0x7b616c76) - [3-]
> 234: {fds (0x7b666473) - [3-]
> 235: {lkb (0x7b6c6b62) - [3-]
> 236: {lsc (0x7b6c7363) - [3-]
> 237: {lsd (0x7b6c7364) - [3-]
> 238: {lsf (0x7b6c7366) - [3-]
> 239: {lsm (0x7b6c736d) - [3-]
> 240: {lso (0x7b6c736f) - [3-]
> 241: {lss (0x7b6c7373) - [3-]
> 242: {msp (0x7b6d7370) - [3-]
> 243: {mss (0x7b6d7373) - [3-]
> 244: {pwm (0x7b70776d) - [3-]
> 245: {rev (0x7b726576) - [3-]
> 246: {sds (0x7b736473) - [3-]
>
> I still have to find out how to catch motion sensor interrupts, but, as
> long as it concerns heat problems, the solution has to be found
> somewhere else...
>
> Best regards,
>
> Nicolas
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.3 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFGFiNh01ajQnpJXgERAoipAJsFM2dN9nnKBStoxdQXCzdziHuECgCeMi/L
> EQ3oPK01yRFLJTHnaN3QtYM=
> =2Dor
> -----END PGP SIGNATURE-----
>
> -------------------------------------------------------------------------
> 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-users mailing list
> Mactel-linux-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mactel-linux-users
>

-------------------------------------------------------------------------
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-users mailing list
Mactel-linux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mactel-linux-users

Reply via email to