chsc.h (2903B)
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2/* 3 * ioctl interface for /dev/chsc 4 * 5 * Copyright IBM Corp. 2008, 2012 6 * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 7 */ 8 9#ifndef _ASM_CHSC_H 10#define _ASM_CHSC_H 11 12#include <linux/types.h> 13#include <linux/ioctl.h> 14#include <asm/chpid.h> 15#include <asm/schid.h> 16 17#define CHSC_SIZE 0x1000 18 19struct chsc_async_header { 20 __u16 length; 21 __u16 code; 22 __u32 cmd_dependend; 23 __u32 key : 4; 24 __u32 : 28; 25 struct subchannel_id sid; 26}; 27 28struct chsc_async_area { 29 struct chsc_async_header header; 30 __u8 data[CHSC_SIZE - sizeof(struct chsc_async_header)]; 31}; 32 33struct chsc_header { 34 __u16 length; 35 __u16 code; 36}; 37 38struct chsc_sync_area { 39 struct chsc_header header; 40 __u8 data[CHSC_SIZE - sizeof(struct chsc_header)]; 41}; 42 43struct chsc_response_struct { 44 __u16 length; 45 __u16 code; 46 __u32 parms; 47 __u8 data[CHSC_SIZE - 2 * sizeof(__u16) - sizeof(__u32)]; 48}; 49 50struct chsc_chp_cd { 51 struct chp_id chpid; 52 int m; 53 int fmt; 54 struct chsc_response_struct cpcb; 55}; 56 57struct chsc_cu_cd { 58 __u16 cun; 59 __u8 cssid; 60 int m; 61 int fmt; 62 struct chsc_response_struct cucb; 63}; 64 65struct chsc_sch_cud { 66 struct subchannel_id schid; 67 int fmt; 68 struct chsc_response_struct scub; 69}; 70 71struct conf_id { 72 int m; 73 __u8 cssid; 74 __u8 ssid; 75}; 76 77struct chsc_conf_info { 78 struct conf_id id; 79 int fmt; 80 struct chsc_response_struct scid; 81}; 82 83struct ccl_parm_chpid { 84 int m; 85 struct chp_id chp; 86}; 87 88struct ccl_parm_cssids { 89 __u8 f_cssid; 90 __u8 l_cssid; 91}; 92 93struct chsc_comp_list { 94 struct { 95 enum { 96 CCL_CU_ON_CHP = 1, 97 CCL_CHP_TYPE_CAP = 2, 98 CCL_CSS_IMG = 4, 99 CCL_CSS_IMG_CONF_CHAR = 5, 100 CCL_IOP_CHP = 6, 101 } ctype; 102 int fmt; 103 struct ccl_parm_chpid chpid; 104 struct ccl_parm_cssids cssids; 105 } req; 106 struct chsc_response_struct sccl; 107}; 108 109struct chsc_dcal { 110 struct { 111 enum { 112 DCAL_CSS_IID_PN = 4, 113 } atype; 114 __u32 list_parm[2]; 115 int fmt; 116 } req; 117 struct chsc_response_struct sdcal; 118}; 119 120struct chsc_cpd_info { 121 struct chp_id chpid; 122 int m; 123 int fmt; 124 int rfmt; 125 int c; 126 struct chsc_response_struct chpdb; 127}; 128 129#define CHSC_IOCTL_MAGIC 'c' 130 131#define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area) 132#define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \ 133 struct chsc_chp_cd) 134#define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd) 135#define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud) 136#define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info) 137#define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list) 138#define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) 139#define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) 140#define CHSC_START_SYNC _IOWR(CHSC_IOCTL_MAGIC, 0x89, struct chsc_sync_area) 141#define CHSC_ON_CLOSE_SET _IOWR(CHSC_IOCTL_MAGIC, 0x8a, struct chsc_async_area) 142#define CHSC_ON_CLOSE_REMOVE _IO(CHSC_IOCTL_MAGIC, 0x8b) 143 144#endif