162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ioctl interface for /dev/chsc 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright IBM Corp. 2008, 2012 662306a36Sopenharmony_ci * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#ifndef _ASM_CHSC_H 1062306a36Sopenharmony_ci#define _ASM_CHSC_H 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/types.h> 1362306a36Sopenharmony_ci#include <linux/ioctl.h> 1462306a36Sopenharmony_ci#include <asm/chpid.h> 1562306a36Sopenharmony_ci#include <asm/schid.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#define CHSC_SIZE 0x1000 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct chsc_async_header { 2062306a36Sopenharmony_ci __u16 length; 2162306a36Sopenharmony_ci __u16 code; 2262306a36Sopenharmony_ci __u32 cmd_dependend; 2362306a36Sopenharmony_ci __u32 key : 4; 2462306a36Sopenharmony_ci __u32 : 28; 2562306a36Sopenharmony_ci struct subchannel_id sid; 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistruct chsc_async_area { 2962306a36Sopenharmony_ci struct chsc_async_header header; 3062306a36Sopenharmony_ci __u8 data[CHSC_SIZE - sizeof(struct chsc_async_header)]; 3162306a36Sopenharmony_ci}; 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistruct chsc_header { 3462306a36Sopenharmony_ci __u16 length; 3562306a36Sopenharmony_ci __u16 code; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct chsc_sync_area { 3962306a36Sopenharmony_ci struct chsc_header header; 4062306a36Sopenharmony_ci __u8 data[CHSC_SIZE - sizeof(struct chsc_header)]; 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistruct chsc_response_struct { 4462306a36Sopenharmony_ci __u16 length; 4562306a36Sopenharmony_ci __u16 code; 4662306a36Sopenharmony_ci __u32 parms; 4762306a36Sopenharmony_ci __u8 data[CHSC_SIZE - 2 * sizeof(__u16) - sizeof(__u32)]; 4862306a36Sopenharmony_ci}; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_cistruct chsc_chp_cd { 5162306a36Sopenharmony_ci struct chp_id chpid; 5262306a36Sopenharmony_ci int m; 5362306a36Sopenharmony_ci int fmt; 5462306a36Sopenharmony_ci struct chsc_response_struct cpcb; 5562306a36Sopenharmony_ci}; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cistruct chsc_cu_cd { 5862306a36Sopenharmony_ci __u16 cun; 5962306a36Sopenharmony_ci __u8 cssid; 6062306a36Sopenharmony_ci int m; 6162306a36Sopenharmony_ci int fmt; 6262306a36Sopenharmony_ci struct chsc_response_struct cucb; 6362306a36Sopenharmony_ci}; 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistruct chsc_sch_cud { 6662306a36Sopenharmony_ci struct subchannel_id schid; 6762306a36Sopenharmony_ci int fmt; 6862306a36Sopenharmony_ci struct chsc_response_struct scub; 6962306a36Sopenharmony_ci}; 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cistruct conf_id { 7262306a36Sopenharmony_ci int m; 7362306a36Sopenharmony_ci __u8 cssid; 7462306a36Sopenharmony_ci __u8 ssid; 7562306a36Sopenharmony_ci}; 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_cistruct chsc_conf_info { 7862306a36Sopenharmony_ci struct conf_id id; 7962306a36Sopenharmony_ci int fmt; 8062306a36Sopenharmony_ci struct chsc_response_struct scid; 8162306a36Sopenharmony_ci}; 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_cistruct ccl_parm_chpid { 8462306a36Sopenharmony_ci int m; 8562306a36Sopenharmony_ci struct chp_id chp; 8662306a36Sopenharmony_ci}; 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_cistruct ccl_parm_cssids { 8962306a36Sopenharmony_ci __u8 f_cssid; 9062306a36Sopenharmony_ci __u8 l_cssid; 9162306a36Sopenharmony_ci}; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_cistruct chsc_comp_list { 9462306a36Sopenharmony_ci struct { 9562306a36Sopenharmony_ci enum { 9662306a36Sopenharmony_ci CCL_CU_ON_CHP = 1, 9762306a36Sopenharmony_ci CCL_CHP_TYPE_CAP = 2, 9862306a36Sopenharmony_ci CCL_CSS_IMG = 4, 9962306a36Sopenharmony_ci CCL_CSS_IMG_CONF_CHAR = 5, 10062306a36Sopenharmony_ci CCL_IOP_CHP = 6, 10162306a36Sopenharmony_ci } ctype; 10262306a36Sopenharmony_ci int fmt; 10362306a36Sopenharmony_ci struct ccl_parm_chpid chpid; 10462306a36Sopenharmony_ci struct ccl_parm_cssids cssids; 10562306a36Sopenharmony_ci } req; 10662306a36Sopenharmony_ci struct chsc_response_struct sccl; 10762306a36Sopenharmony_ci}; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_cistruct chsc_dcal { 11062306a36Sopenharmony_ci struct { 11162306a36Sopenharmony_ci enum { 11262306a36Sopenharmony_ci DCAL_CSS_IID_PN = 4, 11362306a36Sopenharmony_ci } atype; 11462306a36Sopenharmony_ci __u32 list_parm[2]; 11562306a36Sopenharmony_ci int fmt; 11662306a36Sopenharmony_ci } req; 11762306a36Sopenharmony_ci struct chsc_response_struct sdcal; 11862306a36Sopenharmony_ci}; 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_cistruct chsc_cpd_info { 12162306a36Sopenharmony_ci struct chp_id chpid; 12262306a36Sopenharmony_ci int m; 12362306a36Sopenharmony_ci int fmt; 12462306a36Sopenharmony_ci int rfmt; 12562306a36Sopenharmony_ci int c; 12662306a36Sopenharmony_ci struct chsc_response_struct chpdb; 12762306a36Sopenharmony_ci}; 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci#define CHSC_IOCTL_MAGIC 'c' 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci#define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area) 13262306a36Sopenharmony_ci#define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \ 13362306a36Sopenharmony_ci struct chsc_chp_cd) 13462306a36Sopenharmony_ci#define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd) 13562306a36Sopenharmony_ci#define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud) 13662306a36Sopenharmony_ci#define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info) 13762306a36Sopenharmony_ci#define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list) 13862306a36Sopenharmony_ci#define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info) 13962306a36Sopenharmony_ci#define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal) 14062306a36Sopenharmony_ci#define CHSC_START_SYNC _IOWR(CHSC_IOCTL_MAGIC, 0x89, struct chsc_sync_area) 14162306a36Sopenharmony_ci#define CHSC_ON_CLOSE_SET _IOWR(CHSC_IOCTL_MAGIC, 0x8a, struct chsc_async_area) 14262306a36Sopenharmony_ci#define CHSC_ON_CLOSE_REMOVE _IO(CHSC_IOCTL_MAGIC, 0x8b) 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci#endif 145