aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorAzael Avalos <coproscefalo@gmail.com>2015-07-22 20:09:11 -0400
committerDarren Hart <dvhart@linux.intel.com>2015-07-24 17:15:10 -0400
commitfc5462f8525b47fa219452289ecb22c921c16823 (patch)
tree6a9cbde344c432b0cb18c67105506cffc304dfae /include/uapi/linux
parent7deef550f3a7d44c1d52a6d54f824e7e180c08ae (diff)
toshiba_acpi: Add /dev/toshiba_acpi device
There were previous attempts to "merge" the toshiba SMM module to the toshiba_acpi one, they were trying to imitate what the old toshiba module does, however, some models (TOS1900 devices) come with a "crippled" implementation and do not provide all the "features" a "genuine" Toshiba BIOS does. This patch adds a new device called toshiba_acpi, which aim is to enable userspace to access the SMM on Toshiba laptops via ACPI calls. Creating a new convenience _IOWR command to access the SCI functions by opening/closing the SCI internally to avoid buggy BIOS, while at the same time providing backwards compatibility. Older programs (and new) who wish to access the SMM on newer models can do it by pointing their path to /dev/toshiba_acpi (instead of /dev/toshiba) as the toshiba.h header was modified to reflect these changes as well as adds all the toshiba_acpi paths and command, however, it is strongly recommended to use the new IOCTL for any SCI command to avoid any buggy BIOS. Signed-off-by: Azael Avalos <coproscefalo@gmail.com> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/toshiba.h32
1 files changed, 29 insertions, 3 deletions
diff --git a/include/uapi/linux/toshiba.h b/include/uapi/linux/toshiba.h
index e9bef5b2f91e..c58bf4b5bb26 100644
--- a/include/uapi/linux/toshiba.h
+++ b/include/uapi/linux/toshiba.h
@@ -1,6 +1,7 @@
1/* toshiba.h -- Linux driver for accessing the SMM on Toshiba laptops 1/* toshiba.h -- Linux driver for accessing the SMM on Toshiba laptops
2 * 2 *
3 * Copyright (c) 1996-2000 Jonathan A. Buzzard (jonathan@buzzard.org.uk) 3 * Copyright (c) 1996-2000 Jonathan A. Buzzard (jonathan@buzzard.org.uk)
4 * Copyright (c) 2015 Azael Avalos <coproscefalo@gmail.com>
4 * 5 *
5 * Thanks to Juergen Heinzl <juergen@monocerus.demon.co.uk> for the pointers 6 * Thanks to Juergen Heinzl <juergen@monocerus.demon.co.uk> for the pointers
6 * on making sure the structure is aligned and packed. 7 * on making sure the structure is aligned and packed.
@@ -20,9 +21,18 @@
20#ifndef _UAPI_LINUX_TOSHIBA_H 21#ifndef _UAPI_LINUX_TOSHIBA_H
21#define _UAPI_LINUX_TOSHIBA_H 22#define _UAPI_LINUX_TOSHIBA_H
22 23
23#define TOSH_PROC "/proc/toshiba" 24/*
24#define TOSH_DEVICE "/dev/toshiba" 25 * Toshiba modules paths
25#define TOSH_SMM _IOWR('t', 0x90, int) /* broken: meant 24 bytes */ 26 */
27
28#define TOSH_PROC "/proc/toshiba"
29#define TOSH_DEVICE "/dev/toshiba"
30#define TOSHIBA_ACPI_PROC "/proc/acpi/toshiba"
31#define TOSHIBA_ACPI_DEVICE "/dev/toshiba_acpi"
32
33/*
34 * Toshiba SMM structure
35 */
26 36
27typedef struct { 37typedef struct {
28 unsigned int eax; 38 unsigned int eax;
@@ -33,5 +43,21 @@ typedef struct {
33 unsigned int edi __attribute__ ((packed)); 43 unsigned int edi __attribute__ ((packed));
34} SMMRegisters; 44} SMMRegisters;
35 45
46/*
47 * IOCTLs (0x90 - 0x91)
48 */
49
50#define TOSH_SMM _IOWR('t', 0x90, SMMRegisters)
51/*
52 * Convenience toshiba_acpi command.
53 *
54 * The System Configuration Interface (SCI) is opened/closed internally
55 * to avoid userspace of buggy BIOSes.
56 *
57 * The toshiba_acpi module checks whether the eax register is set with
58 * SCI_GET (0xf300) or SCI_SET (0xf400), returning -EINVAL if not.
59 */
60#define TOSHIBA_ACPI_SCI _IOWR('t', 0x91, SMMRegisters)
61
36 62
37#endif /* _UAPI_LINUX_TOSHIBA_H */ 63#endif /* _UAPI_LINUX_TOSHIBA_H */