zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

aspeed-p2a-ctrl.h (1905B) - Raw


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