chsc.h 1.3 KB

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