chsc.h 1.4 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7
#ifndef S390_CHSC_H
#define S390_CHSC_H

#define CHSC_SEI_ACC_CHPID        1
#define CHSC_SEI_ACC_LINKADDR     2
#define CHSC_SEI_ACC_FULLLINKADDR 3

8 9
#define CHSC_SDA_OC_MSS   0x2

L
Linus Torvalds 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
struct chsc_header {
	u16 length;
	u16 code;
};

struct channel_path_desc {
	u8 flags;
	u8 lsn;
	u8 desc;
	u8 chpid;
	u8 swla;
	u8 zeroes;
	u8 chla;
	u8 chpp;
};

struct channel_path {
	int id;
	int state;
	struct channel_path_desc desc;
	struct device dev;
};

extern void s390_process_css( void );
extern void chsc_validate_chpids(struct subchannel *);
extern void chpid_is_actually_online(int);

struct css_general_char {
	u64 : 41;
	u32 aif : 1;     /* bit 41 */
	u32 : 3;
	u32 mcss : 1;    /* bit 45 */
	u32 : 2;
	u32 ext_mb : 1;  /* bit 48 */
	u32 : 7;
	u32 aif_tdd : 1; /* bit 56 */
46 47 48
	u32 : 1;
	u32 qebsm : 1;   /* bit 58 */
	u32 : 8;
L
Linus Torvalds 已提交
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
	u32 aif_osa : 1; /* bit 67 */
	u32 : 28;
}__attribute__((packed));

struct css_chsc_char {
	u64 res;
	u64 : 43;
	u32 scssc : 1;  /* bit 107 */
	u32 scsscf : 1; /* bit 108 */
	u32 : 19;
}__attribute__((packed));

extern struct css_general_char css_general_characteristics;
extern struct css_chsc_char css_chsc_characteristics;

extern int chsc_determine_css_characteristics(void);
extern int css_characteristics_avail;

extern void *chsc_get_chp_desc(struct subchannel*, int);
68

69 70
extern int chsc_enable_facility(int);

71 72
#define to_channelpath(dev) container_of(dev, struct channel_path, dev)

L
Linus Torvalds 已提交
73
#endif