chsc.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef S390_CHSC_H
  2. #define S390_CHSC_H
  3. #define NR_CHPIDS 256
  4. #define CHSC_SEI_ACC_CHPID 1
  5. #define CHSC_SEI_ACC_LINKADDR 2
  6. #define CHSC_SEI_ACC_FULLLINKADDR 3
  7. struct chsc_header {
  8. u16 length;
  9. u16 code;
  10. };
  11. struct channel_path_desc {
  12. u8 flags;
  13. u8 lsn;
  14. u8 desc;
  15. u8 chpid;
  16. u8 swla;
  17. u8 zeroes;
  18. u8 chla;
  19. u8 chpp;
  20. };
  21. struct channel_path {
  22. int id;
  23. int state;
  24. struct channel_path_desc desc;
  25. struct device dev;
  26. };
  27. extern void s390_process_css( void );
  28. extern void chsc_validate_chpids(struct subchannel *);
  29. extern void chpid_is_actually_online(int);
  30. struct css_general_char {
  31. u64 : 41;
  32. u32 aif : 1; /* bit 41 */
  33. u32 : 3;
  34. u32 mcss : 1; /* bit 45 */
  35. u32 : 2;
  36. u32 ext_mb : 1; /* bit 48 */
  37. u32 : 7;
  38. u32 aif_tdd : 1; /* bit 56 */
  39. u32 : 10;
  40. u32 aif_osa : 1; /* bit 67 */
  41. u32 : 28;
  42. }__attribute__((packed));
  43. struct css_chsc_char {
  44. u64 res;
  45. u64 : 43;
  46. u32 scssc : 1; /* bit 107 */
  47. u32 scsscf : 1; /* bit 108 */
  48. u32 : 19;
  49. }__attribute__((packed));
  50. extern struct css_general_char css_general_characteristics;
  51. extern struct css_chsc_char css_chsc_characteristics;
  52. extern int chsc_determine_css_characteristics(void);
  53. extern int css_characteristics_avail;
  54. extern void *chsc_get_chp_desc(struct subchannel*, int);
  55. #endif