1eda2e30cSEnric Balletbo i Serra /* SPDX-License-Identifier: GPL-2.0 */ 2eda2e30cSEnric Balletbo i Serra /* 3eda2e30cSEnric Balletbo i Serra * ChromeOS EC device interface. 4eda2e30cSEnric Balletbo i Serra * 5eda2e30cSEnric Balletbo i Serra * Copyright (C) 2014 Google, Inc. 6eda2e30cSEnric Balletbo i Serra */ 7eda2e30cSEnric Balletbo i Serra 8eda2e30cSEnric Balletbo i Serra #ifndef _UAPI_LINUX_CROS_EC_DEV_H_ 9eda2e30cSEnric Balletbo i Serra #define _UAPI_LINUX_CROS_EC_DEV_H_ 10eda2e30cSEnric Balletbo i Serra 11eda2e30cSEnric Balletbo i Serra #include <linux/bits.h> 12eda2e30cSEnric Balletbo i Serra #include <linux/ioctl.h> 13eda2e30cSEnric Balletbo i Serra #include <linux/types.h> 14eda2e30cSEnric Balletbo i Serra 15840d9f13SEnric Balletbo i Serra #include <linux/platform_data/cros_ec_commands.h> 16eda2e30cSEnric Balletbo i Serra 17eda2e30cSEnric Balletbo i Serra #define CROS_EC_DEV_VERSION "1.0.0" 18eda2e30cSEnric Balletbo i Serra 19eda2e30cSEnric Balletbo i Serra /** 20eda2e30cSEnric Balletbo i Serra * struct cros_ec_readmem - Struct used to read mapped memory. 21eda2e30cSEnric Balletbo i Serra * @offset: Within EC_LPC_ADDR_MEMMAP region. 22eda2e30cSEnric Balletbo i Serra * @bytes: Number of bytes to read. Zero means "read a string" (including '\0') 23eda2e30cSEnric Balletbo i Serra * At most only EC_MEMMAP_SIZE bytes can be read. 24eda2e30cSEnric Balletbo i Serra * @buffer: Where to store the result. The ioctl returns the number of bytes 25eda2e30cSEnric Balletbo i Serra * read or negative on error. 26eda2e30cSEnric Balletbo i Serra */ 27eda2e30cSEnric Balletbo i Serra struct cros_ec_readmem { 28eda2e30cSEnric Balletbo i Serra uint32_t offset; 29eda2e30cSEnric Balletbo i Serra uint32_t bytes; 30eda2e30cSEnric Balletbo i Serra uint8_t buffer[EC_MEMMAP_SIZE]; 31eda2e30cSEnric Balletbo i Serra }; 32eda2e30cSEnric Balletbo i Serra 33eda2e30cSEnric Balletbo i Serra #define CROS_EC_DEV_IOC 0xEC 34eda2e30cSEnric Balletbo i Serra #define CROS_EC_DEV_IOCXCMD _IOWR(CROS_EC_DEV_IOC, 0, struct cros_ec_command) 35eda2e30cSEnric Balletbo i Serra #define CROS_EC_DEV_IOCRDMEM _IOWR(CROS_EC_DEV_IOC, 1, struct cros_ec_readmem) 36*96a0a807SEnric Balletbo i Serra #define CROS_EC_DEV_IOCEVENTMASK _IO(CROS_EC_DEV_IOC, 2) 37eda2e30cSEnric Balletbo i Serra 38eda2e30cSEnric Balletbo i Serra #endif /* _CROS_EC_DEV_H_ */ 39