/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 
 | 
/* 
 | 
 * Interfaces for vfio-ccw 
 | 
 * 
 | 
 * Copyright IBM Corp. 2017 
 | 
 * 
 | 
 * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> 
 | 
 */ 
 | 
  
 | 
#ifndef _VFIO_CCW_H_ 
 | 
#define _VFIO_CCW_H_ 
 | 
  
 | 
#include <linux/types.h> 
 | 
  
 | 
/* used for START SUBCHANNEL, always present */ 
 | 
struct ccw_io_region { 
 | 
#define ORB_AREA_SIZE 12 
 | 
    __u8    orb_area[ORB_AREA_SIZE]; 
 | 
#define SCSW_AREA_SIZE 12 
 | 
    __u8    scsw_area[SCSW_AREA_SIZE]; 
 | 
#define IRB_AREA_SIZE 96 
 | 
    __u8    irb_area[IRB_AREA_SIZE]; 
 | 
    __u32    ret_code; 
 | 
} __packed; 
 | 
  
 | 
/* 
 | 
 * used for processing commands that trigger asynchronous actions 
 | 
 * Note: this is controlled by a capability 
 | 
 */ 
 | 
#define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0) 
 | 
#define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1) 
 | 
struct ccw_cmd_region { 
 | 
    __u32 command; 
 | 
    __u32 ret_code; 
 | 
} __packed; 
 | 
  
 | 
/* 
 | 
 * Used for processing commands that read the subchannel-information block 
 | 
 * Reading this region triggers a stsch() to hardware 
 | 
 * Note: this is controlled by a capability 
 | 
 */ 
 | 
struct ccw_schib_region { 
 | 
#define SCHIB_AREA_SIZE 52 
 | 
    __u8 schib_area[SCHIB_AREA_SIZE]; 
 | 
} __packed; 
 | 
  
 | 
/* 
 | 
 * Used for returning a Channel Report Word to userspace. 
 | 
 * Note: this is controlled by a capability 
 | 
 */ 
 | 
struct ccw_crw_region { 
 | 
    __u32 crw; 
 | 
    __u32 pad; 
 | 
} __packed; 
 | 
  
 | 
#endif 
 |