mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 00:01:35 +00:00 
			
		
		
		
	 62733e5a5a
			
		
	
	
		62733e5a5a
		
	
	
	
	
		
			
			All scsw helper functions are very short and usage of them shouldn't result in function calls. Therefore we move them to a separate header file. Also saves a lot of EXPORT_SYMBOLs. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
		
			
				
	
	
		
			157 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * ioctl interface for /dev/chsc
 | |
|  *
 | |
|  * Copyright 2008 IBM Corp.
 | |
|  * Author(s): Cornelia Huck <cornelia.huck@de.ibm.com>
 | |
|  */
 | |
| 
 | |
| #ifndef _ASM_CHSC_H
 | |
| #define _ASM_CHSC_H
 | |
| 
 | |
| #include <linux/types.h>
 | |
| #include <asm/chpid.h>
 | |
| #include <asm/schid.h>
 | |
| 
 | |
| struct chsc_async_header {
 | |
| 	__u16 length;
 | |
| 	__u16 code;
 | |
| 	__u32 cmd_dependend;
 | |
| 	__u32 key : 4;
 | |
| 	__u32 : 28;
 | |
| 	struct subchannel_id sid;
 | |
| } __attribute__ ((packed));
 | |
| 
 | |
| struct chsc_async_area {
 | |
| 	struct chsc_async_header header;
 | |
| 	__u8 data[PAGE_SIZE - 16 /* size of chsc_async_header */];
 | |
| } __attribute__ ((packed));
 | |
| 
 | |
| 
 | |
| struct chsc_response_struct {
 | |
| 	__u16 length;
 | |
| 	__u16 code;
 | |
| 	__u32 parms;
 | |
| 	__u8 data[PAGE_SIZE - 8];
 | |
| } __attribute__ ((packed));
 | |
| 
 | |
| struct chsc_chp_cd {
 | |
| 	struct chp_id chpid;
 | |
| 	int m;
 | |
| 	int fmt;
 | |
| 	struct chsc_response_struct cpcb;
 | |
| };
 | |
| 
 | |
| struct chsc_cu_cd {
 | |
| 	__u16 cun;
 | |
| 	__u8 cssid;
 | |
| 	int m;
 | |
| 	int fmt;
 | |
| 	struct chsc_response_struct cucb;
 | |
| };
 | |
| 
 | |
| struct chsc_sch_cud {
 | |
| 	struct subchannel_id schid;
 | |
| 	int fmt;
 | |
| 	struct chsc_response_struct scub;
 | |
| };
 | |
| 
 | |
| struct conf_id {
 | |
| 	int m;
 | |
| 	__u8 cssid;
 | |
| 	__u8 ssid;
 | |
| };
 | |
| 
 | |
| struct chsc_conf_info {
 | |
| 	struct conf_id id;
 | |
| 	int fmt;
 | |
| 	struct chsc_response_struct scid;
 | |
| };
 | |
| 
 | |
| struct ccl_parm_chpid {
 | |
| 	int m;
 | |
| 	struct chp_id chp;
 | |
| };
 | |
| 
 | |
| struct ccl_parm_cssids {
 | |
| 	__u8 f_cssid;
 | |
| 	__u8 l_cssid;
 | |
| };
 | |
| 
 | |
| struct chsc_comp_list {
 | |
| 	struct {
 | |
| 		enum {
 | |
| 			CCL_CU_ON_CHP = 1,
 | |
| 			CCL_CHP_TYPE_CAP = 2,
 | |
| 			CCL_CSS_IMG = 4,
 | |
| 			CCL_CSS_IMG_CONF_CHAR = 5,
 | |
| 			CCL_IOP_CHP = 6,
 | |
| 		} ctype;
 | |
| 		int fmt;
 | |
| 		struct ccl_parm_chpid chpid;
 | |
| 		struct ccl_parm_cssids cssids;
 | |
| 	} req;
 | |
| 	struct chsc_response_struct sccl;
 | |
| };
 | |
| 
 | |
| struct chsc_dcal {
 | |
| 	struct {
 | |
| 		enum {
 | |
| 			DCAL_CSS_IID_PN = 4,
 | |
| 		} atype;
 | |
| 		__u32 list_parm[2];
 | |
| 		int fmt;
 | |
| 	} req;
 | |
| 	struct chsc_response_struct sdcal;
 | |
| };
 | |
| 
 | |
| struct chsc_cpd_info {
 | |
| 	struct chp_id chpid;
 | |
| 	int m;
 | |
| 	int fmt;
 | |
| 	int rfmt;
 | |
| 	int c;
 | |
| 	struct chsc_response_struct chpdb;
 | |
| };
 | |
| 
 | |
| #define CHSC_IOCTL_MAGIC 'c'
 | |
| 
 | |
| #define CHSC_START _IOWR(CHSC_IOCTL_MAGIC, 0x81, struct chsc_async_area)
 | |
| #define CHSC_INFO_CHANNEL_PATH _IOWR(CHSC_IOCTL_MAGIC, 0x82, \
 | |
| 				    struct chsc_chp_cd)
 | |
| #define CHSC_INFO_CU _IOWR(CHSC_IOCTL_MAGIC, 0x83, struct chsc_cu_cd)
 | |
| #define CHSC_INFO_SCH_CU _IOWR(CHSC_IOCTL_MAGIC, 0x84, struct chsc_sch_cud)
 | |
| #define CHSC_INFO_CI _IOWR(CHSC_IOCTL_MAGIC, 0x85, struct chsc_conf_info)
 | |
| #define CHSC_INFO_CCL _IOWR(CHSC_IOCTL_MAGIC, 0x86, struct chsc_comp_list)
 | |
| #define CHSC_INFO_CPD _IOWR(CHSC_IOCTL_MAGIC, 0x87, struct chsc_cpd_info)
 | |
| #define CHSC_INFO_DCAL _IOWR(CHSC_IOCTL_MAGIC, 0x88, struct chsc_dcal)
 | |
| 
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| struct css_general_char {
 | |
| 	u64 : 12;
 | |
| 	u32 dynio : 1;	 /* bit 12 */
 | |
| 	u32 : 28;
 | |
| 	u32 aif : 1;	 /* bit 41 */
 | |
| 	u32 : 3;
 | |
| 	u32 mcss : 1;	 /* bit 45 */
 | |
| 	u32 fcs : 1;	 /* bit 46 */
 | |
| 	u32 : 1;
 | |
| 	u32 ext_mb : 1;  /* bit 48 */
 | |
| 	u32 : 7;
 | |
| 	u32 aif_tdd : 1; /* bit 56 */
 | |
| 	u32 : 1;
 | |
| 	u32 qebsm : 1;	 /* bit 58 */
 | |
| 	u32 : 8;
 | |
| 	u32 aif_osa : 1; /* bit 67 */
 | |
| 	u32 : 14;
 | |
| 	u32 cib : 1;	 /* bit 82 */
 | |
| 	u32 : 5;
 | |
| 	u32 fcx : 1;	 /* bit 88 */
 | |
| 	u32 : 7;
 | |
| }__attribute__((packed));
 | |
| 
 | |
| extern struct css_general_char css_general_characteristics;
 | |
| 
 | |
| #endif /* __KERNEL__ */
 | |
| #endif
 |