From rydberg@euromail.se Sun Jul 13 22:23:32 2008 Subject: [PATCH] hwmon: Support for Macbook Air in applesmc From: Henrik Rydberg To: nicolas@boichat.ch Content-Type: text/plain X-Mailer: Evolution 2.22.2 Content-Transfer-Encoding: 7bit Date: Sun, 13 Jul 2008 22:23:32 +0200 Mime-Version: 1.0 X-Evolution: 000001a8-0010 From: Henrik Rydberg The Applesmc module wrongly detects the Macbook Air as a macbook, which does not have keyboard backlights. Also, the sensor set is wrong. A patch is attached which 1) Makes applesmc detect the Macbook Air, 2) Sets up a minimal set of sensors. Signed-off-by: Henrik Rydberg --- The sensor set implemented in the patch is minimal, simply because I was not able to determine which sensors actually work; there are too many of these: applesmc: wait status failed: c != 8 The motion sensor, although available, is turned off for the same reason. Below all keys found using the instructions of http://lkml.org/lkml/2007/4/13/16 are listed. They probably mean a lot more to you than they do to me :-) Best regards, Henrik Rydberg Macbook Air SMC ------------------------------------------------------------ #KEY +LKS ACEN ACFP ACID ACIN ACOW AL! ALA0 ALA1 ALA2 ALA3 ALA4 ALA5 ALAT ALI0 ALI1 ALP0 ALP1 ALRV ALSC ALSF ALSL ALT0 ALT1 ALTH ALV0 ALV1 AUPO B0AC B0AP B0AV B0Al B0Am B0As B0At B0Az B0BI B0FC B0LI B0RI B0RM B0St B2DR BATP BBAD BBIN BC1V BC2V BC3V BCCT BCN1 BCN2 BCN3 BCN4 BCN5 BCNM BNum BRSC BSAC BSDC BSIn BZ0S BZ0s BZ1S BZ1s BZ2S BZ2s BZ3S BZ3s BZSA CHBI CHBV CHGC CHGD CHGI CHGV CLK! CLKC CLKH CLKS CLKT CRCB CRCU DPLM EPCA EPCF EPCI EPCV EPMA EPMI EPUA EPUF EPUI EPUV EVCT EVMD EVRD F0Ac F0ID F0Mn F0Mt F0Mx F0Sf F0Tg FNum FPhz FS! HBWK HDBS HDST HDSW IB0R IB0r ID0R ID0r IG0C IG0c Ic0R Ic0r LAcN LAtN LCCN LCCQ LCKA LCSA LCTN LCTQ LDSP LKSB LS! LSCF LSDD LSDU LSFD LSFU LSLB LSLF LSLN LSOF LSOO LSPV LSRB LSSB LSSE LSSS LSSV LSUP MACA MACM MACR MOCF MOCN MOHD MOHT MOLD MOLT MOST MOVX MOVY MOVZ MO_X MO_Y MO_Z MSAL MSAR MSAc MSAg MSAm MSBC MSBP MSBc MSBp MSDW MSLD MSPA MSPS MSSD MSSE MSSF MSSP MSSS MSTC MSTM MSTc MSTg MSTm MSWR NATJ NATi NS0T NTOK ONMI PB0R PD0R PG0C PT0C Pc0R PcFR RBr REV RMde RPlt RSvn RVBF RVUF SAS! SCIA SCIL SDRd SIS! SM0x SM0y SM0z SMBC SMBG SMBR SMBS SMBW SPH0 SPHS SPHT SPHZ SPS! TB0T TB1S TB1T TB2S TB2T TC0D TC0P TCFP TTF0 TW0P Th0H Tp0P TpFP Ts0P Ts0S UPRC VD0R VD0r VG0C VG0c VP0R VP0r zDBG ------------------------------------------------------------ This patch is against the linux-next tree: v2.6.26-rc9-7639-g60392c2 diff -uprN ../linux-next/drivers/hwmon/applesmc.c drivers/hwmon/applesmc.c --- ../linux-next/drivers/hwmon/applesmc.c 2008-07-13 14:15:00.000000000 +0200 +++ drivers/hwmon/applesmc.c 2008-07-13 20:47:14.000000000 +0200 @@ -98,6 +98,8 @@ static const char* temperature_sensors_s "TH1P", "TH2P", "TH3P", "TMAP", "TMAS", "TMBS", "TM0P", "TM0S", "TM1P", "TM1S", "TM2P", "TM2S", "TM3S", "TM8P", "TM8S", "TM9P", "TM9S", "TN0H", "TS0C", NULL }, +/* Set 5: Macbook Air */ + { "TB0T", NULL }, }; /* List of keys used to read/write fan speeds */ @@ -1223,11 +1225,17 @@ static __initdata struct dmi_match_data { .accelerometer = 0, .light = 0, .temperature_set = 3 }, /* MacPro: temperature set 4 */ { .accelerometer = 0, .light = 0, .temperature_set = 4 }, +/* MacBook Air: accelerometer, backlight and temperature set 5 */ + { .accelerometer = 0, .light = 1, .temperature_set = 5 }, }; /* 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 Air", { + DMI_MATCH(DMI_BOARD_VENDOR,"Apple"), + DMI_MATCH(DMI_PRODUCT_NAME,"MacBookAir") }, + (void*)&applesmc_dmi_data[5]}, { applesmc_dmi_match, "Apple MacBook Pro", { DMI_MATCH(DMI_BOARD_VENDOR,"Apple"), DMI_MATCH(DMI_PRODUCT_NAME,"MacBookPro") },