1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * userio: virtual serio device support 4*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2015 Red Hat 5*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2015 Lyude (Stephen Chandler Paul) <[email protected]> 6*f80ad8b4SAndroid Build Coastguard Worker * 7*f80ad8b4SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify it 8*f80ad8b4SAndroid Build Coastguard Worker * under the terms of the GNU Lesser General Public License as published by the 9*f80ad8b4SAndroid Build Coastguard Worker * Free Software Foundation; either version 2 of the License, or (at your 10*f80ad8b4SAndroid Build Coastguard Worker * option) any later version. 11*f80ad8b4SAndroid Build Coastguard Worker * 12*f80ad8b4SAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, but WITHOUT 13*f80ad8b4SAndroid Build Coastguard Worker * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14*f80ad8b4SAndroid Build Coastguard Worker * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 15*f80ad8b4SAndroid Build Coastguard Worker * details. 16*f80ad8b4SAndroid Build Coastguard Worker * 17*f80ad8b4SAndroid Build Coastguard Worker * This is the public header used for user-space communication with the userio 18*f80ad8b4SAndroid Build Coastguard Worker * driver. __attribute__((__packed__)) is used for all structs to keep ABI 19*f80ad8b4SAndroid Build Coastguard Worker * compatibility between all architectures. 20*f80ad8b4SAndroid Build Coastguard Worker */ 21*f80ad8b4SAndroid Build Coastguard Worker 22*f80ad8b4SAndroid Build Coastguard Worker #ifndef _USERIO_H 23*f80ad8b4SAndroid Build Coastguard Worker #define _USERIO_H 24*f80ad8b4SAndroid Build Coastguard Worker 25*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 26*f80ad8b4SAndroid Build Coastguard Worker 27*f80ad8b4SAndroid Build Coastguard Worker enum userio_cmd_type { 28*f80ad8b4SAndroid Build Coastguard Worker USERIO_CMD_REGISTER = 0, 29*f80ad8b4SAndroid Build Coastguard Worker USERIO_CMD_SET_PORT_TYPE = 1, 30*f80ad8b4SAndroid Build Coastguard Worker USERIO_CMD_SEND_INTERRUPT = 2 31*f80ad8b4SAndroid Build Coastguard Worker }; 32*f80ad8b4SAndroid Build Coastguard Worker 33*f80ad8b4SAndroid Build Coastguard Worker /* 34*f80ad8b4SAndroid Build Coastguard Worker * userio Commands 35*f80ad8b4SAndroid Build Coastguard Worker * All commands sent to /dev/userio are encoded using this structure. The type 36*f80ad8b4SAndroid Build Coastguard Worker * field should contain a USERIO_CMD* value that indicates what kind of command 37*f80ad8b4SAndroid Build Coastguard Worker * is being sent to userio. The data field should contain the accompanying 38*f80ad8b4SAndroid Build Coastguard Worker * argument for the command, if there is one. 39*f80ad8b4SAndroid Build Coastguard Worker */ 40*f80ad8b4SAndroid Build Coastguard Worker struct userio_cmd { 41*f80ad8b4SAndroid Build Coastguard Worker __u8 type; 42*f80ad8b4SAndroid Build Coastguard Worker __u8 data; 43*f80ad8b4SAndroid Build Coastguard Worker } __attribute__((__packed__)); 44*f80ad8b4SAndroid Build Coastguard Worker 45*f80ad8b4SAndroid Build Coastguard Worker #endif /* !_USERIO_H */ 46