xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/toshiba.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /* toshiba.h -- Linux driver for accessing the SMM on Toshiba laptops
3*f80ad8b4SAndroid Build Coastguard Worker  *
4*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (c) 1996-2000  Jonathan A. Buzzard ([email protected])
5*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (c) 2015  Azael Avalos <[email protected]>
6*f80ad8b4SAndroid Build Coastguard Worker  *
7*f80ad8b4SAndroid Build Coastguard Worker  * Thanks to Juergen Heinzl <[email protected]> for the pointers
8*f80ad8b4SAndroid Build Coastguard Worker  * on making sure the structure is aligned and packed.
9*f80ad8b4SAndroid Build Coastguard Worker  *
10*f80ad8b4SAndroid Build Coastguard Worker  * This program is free software; you can redistribute it and/or modify it
11*f80ad8b4SAndroid Build Coastguard Worker  * under the terms of the GNU General Public License as published by the
12*f80ad8b4SAndroid Build Coastguard Worker  * Free Software Foundation; either version 2, or (at your option) any
13*f80ad8b4SAndroid Build Coastguard Worker  * later version.
14*f80ad8b4SAndroid Build Coastguard Worker  *
15*f80ad8b4SAndroid Build Coastguard Worker  * This program is distributed in the hope that it will be useful, but
16*f80ad8b4SAndroid Build Coastguard Worker  * WITHOUT ANY WARRANTY; without even the implied warranty of
17*f80ad8b4SAndroid Build Coastguard Worker  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18*f80ad8b4SAndroid Build Coastguard Worker  * General Public License for more details.
19*f80ad8b4SAndroid Build Coastguard Worker  *
20*f80ad8b4SAndroid Build Coastguard Worker  */
21*f80ad8b4SAndroid Build Coastguard Worker 
22*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_TOSHIBA_H
23*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_TOSHIBA_H
24*f80ad8b4SAndroid Build Coastguard Worker 
25*f80ad8b4SAndroid Build Coastguard Worker /*
26*f80ad8b4SAndroid Build Coastguard Worker  * Toshiba modules paths
27*f80ad8b4SAndroid Build Coastguard Worker  */
28*f80ad8b4SAndroid Build Coastguard Worker 
29*f80ad8b4SAndroid Build Coastguard Worker #define TOSH_PROC		"/proc/toshiba"
30*f80ad8b4SAndroid Build Coastguard Worker #define TOSH_DEVICE		"/dev/toshiba"
31*f80ad8b4SAndroid Build Coastguard Worker #define TOSHIBA_ACPI_PROC	"/proc/acpi/toshiba"
32*f80ad8b4SAndroid Build Coastguard Worker #define TOSHIBA_ACPI_DEVICE	"/dev/toshiba_acpi"
33*f80ad8b4SAndroid Build Coastguard Worker 
34*f80ad8b4SAndroid Build Coastguard Worker /*
35*f80ad8b4SAndroid Build Coastguard Worker  * Toshiba SMM structure
36*f80ad8b4SAndroid Build Coastguard Worker  */
37*f80ad8b4SAndroid Build Coastguard Worker 
38*f80ad8b4SAndroid Build Coastguard Worker typedef struct {
39*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int eax;
40*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int ebx __attribute__ ((packed));
41*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int ecx __attribute__ ((packed));
42*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int edx __attribute__ ((packed));
43*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int esi __attribute__ ((packed));
44*f80ad8b4SAndroid Build Coastguard Worker 	unsigned int edi __attribute__ ((packed));
45*f80ad8b4SAndroid Build Coastguard Worker } SMMRegisters;
46*f80ad8b4SAndroid Build Coastguard Worker 
47*f80ad8b4SAndroid Build Coastguard Worker /*
48*f80ad8b4SAndroid Build Coastguard Worker  * IOCTLs (0x90 - 0x91)
49*f80ad8b4SAndroid Build Coastguard Worker  */
50*f80ad8b4SAndroid Build Coastguard Worker 
51*f80ad8b4SAndroid Build Coastguard Worker #define TOSH_SMM		_IOWR('t', 0x90, SMMRegisters)
52*f80ad8b4SAndroid Build Coastguard Worker /*
53*f80ad8b4SAndroid Build Coastguard Worker  * Convenience toshiba_acpi command.
54*f80ad8b4SAndroid Build Coastguard Worker  *
55*f80ad8b4SAndroid Build Coastguard Worker  * The System Configuration Interface (SCI) is opened/closed internally
56*f80ad8b4SAndroid Build Coastguard Worker  * to avoid userspace of buggy BIOSes.
57*f80ad8b4SAndroid Build Coastguard Worker  *
58*f80ad8b4SAndroid Build Coastguard Worker  * The toshiba_acpi module checks whether the eax register is set with
59*f80ad8b4SAndroid Build Coastguard Worker  * SCI_GET (0xf300) or SCI_SET (0xf400), returning -EINVAL if not.
60*f80ad8b4SAndroid Build Coastguard Worker  */
61*f80ad8b4SAndroid Build Coastguard Worker #define TOSHIBA_ACPI_SCI	_IOWR('t', 0x91, SMMRegisters)
62*f80ad8b4SAndroid Build Coastguard Worker 
63*f80ad8b4SAndroid Build Coastguard Worker 
64*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_TOSHIBA_H */
65