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