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