1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * Copyright 2019 Google Inc 4*f80ad8b4SAndroid Build Coastguard Worker * 5*f80ad8b4SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 6*f80ad8b4SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 7*f80ad8b4SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 8*f80ad8b4SAndroid Build Coastguard Worker * 2 of the License, or (at your option) any later version. 9*f80ad8b4SAndroid Build Coastguard Worker * 10*f80ad8b4SAndroid Build Coastguard Worker * Provides a simple driver to control the ASPEED P2A interface which allows 11*f80ad8b4SAndroid Build Coastguard Worker * the host to read and write to various regions of the BMC's memory. 12*f80ad8b4SAndroid Build Coastguard Worker */ 13*f80ad8b4SAndroid Build Coastguard Worker 14*f80ad8b4SAndroid Build Coastguard Worker #ifndef _UAPI_LINUX_ASPEED_P2A_CTRL_H 15*f80ad8b4SAndroid Build Coastguard Worker #define _UAPI_LINUX_ASPEED_P2A_CTRL_H 16*f80ad8b4SAndroid Build Coastguard Worker 17*f80ad8b4SAndroid Build Coastguard Worker #include <linux/ioctl.h> 18*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 19*f80ad8b4SAndroid Build Coastguard Worker 20*f80ad8b4SAndroid Build Coastguard Worker #define ASPEED_P2A_CTRL_READ_ONLY 0 21*f80ad8b4SAndroid Build Coastguard Worker #define ASPEED_P2A_CTRL_READWRITE 1 22*f80ad8b4SAndroid Build Coastguard Worker 23*f80ad8b4SAndroid Build Coastguard Worker /* 24*f80ad8b4SAndroid Build Coastguard Worker * This driver provides a mechanism for enabling or disabling the read-write 25*f80ad8b4SAndroid Build Coastguard Worker * property of specific windows into the ASPEED BMC's memory. 26*f80ad8b4SAndroid Build Coastguard Worker * 27*f80ad8b4SAndroid Build Coastguard Worker * A user can map a region of the BMC's memory as read-only or read-write, with 28*f80ad8b4SAndroid Build Coastguard Worker * the caveat that once any region is mapped, all regions are unlocked for 29*f80ad8b4SAndroid Build Coastguard Worker * reading. 30*f80ad8b4SAndroid Build Coastguard Worker */ 31*f80ad8b4SAndroid Build Coastguard Worker 32*f80ad8b4SAndroid Build Coastguard Worker /* 33*f80ad8b4SAndroid Build Coastguard Worker * Unlock a region of BMC physical memory for access from the host. 34*f80ad8b4SAndroid Build Coastguard Worker * 35*f80ad8b4SAndroid Build Coastguard Worker * Also used to read back the optional memory-region configuration for the 36*f80ad8b4SAndroid Build Coastguard Worker * driver. 37*f80ad8b4SAndroid Build Coastguard Worker */ 38*f80ad8b4SAndroid Build Coastguard Worker struct aspeed_p2a_ctrl_mapping { 39*f80ad8b4SAndroid Build Coastguard Worker __u64 addr; 40*f80ad8b4SAndroid Build Coastguard Worker __u32 length; 41*f80ad8b4SAndroid Build Coastguard Worker __u32 flags; 42*f80ad8b4SAndroid Build Coastguard Worker }; 43*f80ad8b4SAndroid Build Coastguard Worker 44*f80ad8b4SAndroid Build Coastguard Worker #define __ASPEED_P2A_CTRL_IOCTL_MAGIC 0xb3 45*f80ad8b4SAndroid Build Coastguard Worker 46*f80ad8b4SAndroid Build Coastguard Worker /* 47*f80ad8b4SAndroid Build Coastguard Worker * This IOCTL is meant to configure a region or regions of memory given a 48*f80ad8b4SAndroid Build Coastguard Worker * starting address and length to be readable by the host, or 49*f80ad8b4SAndroid Build Coastguard Worker * readable-writeable. 50*f80ad8b4SAndroid Build Coastguard Worker */ 51*f80ad8b4SAndroid Build Coastguard Worker #define ASPEED_P2A_CTRL_IOCTL_SET_WINDOW _IOW(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \ 52*f80ad8b4SAndroid Build Coastguard Worker 0x00, struct aspeed_p2a_ctrl_mapping) 53*f80ad8b4SAndroid Build Coastguard Worker 54*f80ad8b4SAndroid Build Coastguard Worker /* 55*f80ad8b4SAndroid Build Coastguard Worker * This IOCTL is meant to read back to the user the base address and length of 56*f80ad8b4SAndroid Build Coastguard Worker * the memory-region specified to the driver for use with mmap. 57*f80ad8b4SAndroid Build Coastguard Worker */ 58*f80ad8b4SAndroid Build Coastguard Worker #define ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG \ 59*f80ad8b4SAndroid Build Coastguard Worker _IOWR(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \ 60*f80ad8b4SAndroid Build Coastguard Worker 0x01, struct aspeed_p2a_ctrl_mapping) 61*f80ad8b4SAndroid Build Coastguard Worker 62*f80ad8b4SAndroid Build Coastguard Worker #endif /* _UAPI_LINUX_ASPEED_P2A_CTRL_H */ 63