aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Renninger <trenn@suse.de>2010-07-16 07:11:35 -0400
committerMatthew Garrett <mjg@redhat.com>2010-08-03 09:49:06 -0400
commita420e46412ad9d33c7174cd4311b91728122e2c4 (patch)
tree36c01a0fc6f2a0a0a8daa23f6a8ca906021d35f3
parent49c6c5ff924cecc0b6260109a510b7ed4c970dc5 (diff)
X86 platform drivers: Remove EC dump from thinkpad_acpi
There is a general interface for that now (provided by other patches in this patch series): /sys/kernel/debug/ec/*/io Signed-off-by: Thomas Renninger <trenn@suse.de> CC: Alexey Starikovskiy <astarikovskiy@suse.de> CC: Len Brown <lenb@kernel.org> CC: linux-kernel@vger.kernel.org CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org CC: Henrique de Moraes Holschuh <hmh@hmh.eng.br> CC: ibm-acpi-devel@lists.sourceforge.net Signed-off-by: Matthew Garrett <mjg@redhat.com>
-rw-r--r--Documentation/laptops/thinkpad-acpi.txt71
-rw-r--r--drivers/platform/x86/thinkpad_acpi.c73
2 files changed, 11 insertions, 133 deletions
diff --git a/Documentation/laptops/thinkpad-acpi.txt b/Documentation/laptops/thinkpad-acpi.txt
index fc15538d8b4..f6f80257add 100644
--- a/Documentation/laptops/thinkpad-acpi.txt
+++ b/Documentation/laptops/thinkpad-acpi.txt
@@ -960,70 +960,21 @@ Sysfs notes:
960 subsystem, and follow all of the hwmon guidelines at 960 subsystem, and follow all of the hwmon guidelines at
961 Documentation/hwmon. 961 Documentation/hwmon.
962 962
963EXPERIMENTAL: Embedded controller register dump
964-----------------------------------------------
963 965
964EXPERIMENTAL: Embedded controller register dump -- /proc/acpi/ibm/ecdump 966This feature is not included in the thinkpad driver anymore.
965------------------------------------------------------------------------ 967Instead the EC can be accessed through /sys/kernel/debug/ec with
966 968a userspace tool which can be found here:
967This feature is marked EXPERIMENTAL because the implementation 969ftp://ftp.suse.com/pub/people/trenn/sources/ec
968directly accesses hardware registers and may not work as expected. USE
969WITH CAUTION! To use this feature, you need to supply the
970experimental=1 parameter when loading the module.
971
972This feature dumps the values of 256 embedded controller
973registers. Values which have changed since the last time the registers
974were dumped are marked with a star:
975
976[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
977EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
978EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
979EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
980EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
981EC 0x30: 01 07 1a 00 30 04 00 00 *85 00 00 10 00 50 00 00
982EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
983EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 *bc *02 *bc
984EC 0x60: *02 *bc *02 00 00 00 00 00 00 00 00 00 00 00 00 00
985EC 0x70: 00 00 00 00 00 12 30 40 *24 *26 *2c *27 *20 80 *1f 80
986EC 0x80: 00 00 00 06 *37 *0e 03 00 00 00 0e 07 00 00 00 00
987EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
988EC 0xa0: *ff 09 ff 09 ff ff *64 00 *00 *00 *a2 41 *ff *ff *e0 00
989EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
990EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
991EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
992EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
993EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
994
995This feature can be used to determine the register holding the fan
996speed on some models. To do that, do the following:
997 970
971Use it to determine the register holding the fan
972speed on some models. To do that, do the following:
998 - make sure the battery is fully charged 973 - make sure the battery is fully charged
999 - make sure the fan is running 974 - make sure the fan is running
1000 - run 'cat /proc/acpi/ibm/ecdump' several times, once per second or so 975 - use above mentioned tool to read out the EC
1001 976
1002The first step makes sure various charging-related values don't 977Often fan and temperature values vary between
1003vary. The second ensures that the fan-related values do vary, since
1004the fan speed fluctuates a bit. The third will (hopefully) mark the
1005fan register with a star:
1006
1007[root@x40 ibm-acpi]# cat /proc/acpi/ibm/ecdump
1008EC +00 +01 +02 +03 +04 +05 +06 +07 +08 +09 +0a +0b +0c +0d +0e +0f
1009EC 0x00: a7 47 87 01 fe 96 00 08 01 00 cb 00 00 00 40 00
1010EC 0x10: 00 00 ff ff f4 3c 87 09 01 ff 42 01 ff ff 0d 00
1011EC 0x20: 00 00 00 00 00 00 00 00 00 00 00 03 43 00 00 80
1012EC 0x30: 01 07 1a 00 30 04 00 00 85 00 00 10 00 50 00 00
1013EC 0x40: 00 00 00 00 00 00 14 01 00 04 00 00 00 00 00 00
1014EC 0x50: 00 c0 02 0d 00 01 01 02 02 03 03 03 03 bc 02 bc
1015EC 0x60: 02 bc 02 00 00 00 00 00 00 00 00 00 00 00 00 00
1016EC 0x70: 00 00 00 00 00 12 30 40 24 27 2c 27 21 80 1f 80
1017EC 0x80: 00 00 00 06 *be 0d 03 00 00 00 0e 07 00 00 00 00
1018EC 0x90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1019EC 0xa0: ff 09 ff 09 ff ff 64 00 00 00 a2 41 ff ff e0 00
1020EC 0xb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1021EC 0xc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1022EC 0xd0: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1023EC 0xe0: 00 00 00 00 00 00 00 00 11 20 49 04 24 06 55 03
1024EC 0xf0: 31 55 48 54 35 38 57 57 08 2f 45 73 07 65 6c 1a
1025
1026Another set of values that varies often is the temperature
1027readings. Since temperatures don't change vary fast, you can take 978readings. Since temperatures don't change vary fast, you can take
1028several quick dumps to eliminate them. 979several quick dumps to eliminate them.
1029 980
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
index 4bdb13796e2..5d6119bed00 100644
--- a/drivers/platform/x86/thinkpad_acpi.c
+++ b/drivers/platform/x86/thinkpad_acpi.c
@@ -5838,75 +5838,6 @@ static struct ibm_struct thermal_driver_data = {
5838}; 5838};
5839 5839
5840/************************************************************************* 5840/*************************************************************************
5841 * EC Dump subdriver
5842 */
5843
5844static u8 ecdump_regs[256];
5845
5846static int ecdump_read(struct seq_file *m)
5847{
5848 int i, j;
5849 u8 v;
5850
5851 seq_printf(m, "EC "
5852 " +00 +01 +02 +03 +04 +05 +06 +07"
5853 " +08 +09 +0a +0b +0c +0d +0e +0f\n");
5854 for (i = 0; i < 256; i += 16) {
5855 seq_printf(m, "EC 0x%02x:", i);
5856 for (j = 0; j < 16; j++) {
5857 if (!acpi_ec_read(i + j, &v))
5858 break;
5859 if (v != ecdump_regs[i + j])
5860 seq_printf(m, " *%02x", v);
5861 else
5862 seq_printf(m, " %02x", v);
5863 ecdump_regs[i + j] = v;
5864 }
5865 seq_putc(m, '\n');
5866 if (j != 16)
5867 break;
5868 }
5869
5870 /* These are way too dangerous to advertise openly... */
5871#if 0
5872 seq_printf(m, "commands:\t0x<offset> 0x<value>"
5873 " (<offset> is 00-ff, <value> is 00-ff)\n");
5874 seq_printf(m, "commands:\t0x<offset> <value> "
5875 " (<offset> is 00-ff, <value> is 0-255)\n");
5876#endif
5877 return 0;
5878}
5879
5880static int ecdump_write(char *buf)
5881{
5882 char *cmd;
5883 int i, v;
5884
5885 while ((cmd = next_cmd(&buf))) {
5886 if (sscanf(cmd, "0x%x 0x%x", &i, &v) == 2) {
5887 /* i and v set */
5888 } else if (sscanf(cmd, "0x%x %u", &i, &v) == 2) {
5889 /* i and v set */
5890 } else
5891 return -EINVAL;
5892 if (i >= 0 && i < 256 && v >= 0 && v < 256) {
5893 if (!acpi_ec_write(i, v))
5894 return -EIO;
5895 } else
5896 return -EINVAL;
5897 }
5898
5899 return 0;
5900}
5901
5902static struct ibm_struct ecdump_driver_data = {
5903 .name = "ecdump",
5904 .read = ecdump_read,
5905 .write = ecdump_write,
5906 .flags.experimental = 1,
5907};
5908
5909/*************************************************************************
5910 * Backlight/brightness subdriver 5841 * Backlight/brightness subdriver
5911 */ 5842 */
5912 5843
@@ -8883,9 +8814,6 @@ static struct ibm_init_struct ibms_init[] __initdata = {
8883 .data = &thermal_driver_data, 8814 .data = &thermal_driver_data,
8884 }, 8815 },
8885 { 8816 {
8886 .data = &ecdump_driver_data,
8887 },
8888 {
8889 .init = brightness_init, 8817 .init = brightness_init,
8890 .data = &brightness_driver_data, 8818 .data = &brightness_driver_data,
8891 }, 8819 },
@@ -8993,7 +8921,6 @@ TPACPI_PARAM(light);
8993TPACPI_PARAM(cmos); 8921TPACPI_PARAM(cmos);
8994TPACPI_PARAM(led); 8922TPACPI_PARAM(led);
8995TPACPI_PARAM(beep); 8923TPACPI_PARAM(beep);
8996TPACPI_PARAM(ecdump);
8997TPACPI_PARAM(brightness); 8924TPACPI_PARAM(brightness);
8998TPACPI_PARAM(volume); 8925TPACPI_PARAM(volume);
8999TPACPI_PARAM(fan); 8926TPACPI_PARAM(fan);