chsc.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. #define CHSC_SDA_OC_MSS 0x2
  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 : 1;
  40. u32 qebsm : 1; /* bit 58 */
  41. u32 : 8;
  42. u32 aif_osa : 1; /* bit 67 */
  43. u32 : 28;
  44. }__attribute__((packed));
  45. struct css_chsc_char {
  46. u64 res;
  47. u64 : 43;
  48. u32 scssc : 1; /* bit 107 */
  49. u32 scsscf : 1; /* bit 108 */
  50. u32 : 19;
  51. }__attribute__((packed));
  52. extern struct css_general_char css_general_characteristics;
  53. extern struct css_chsc_char css_chsc_characteristics;
  54. extern int chsc_determine_css_characteristics(void);
  55. extern int css_characteristics_avail;
  56. extern void *chsc_get_chp_desc(struct subchannel*, int);
  57. extern int chsc_enable_facility(int);
  58. #define to_channelpath(device) container_of(device, struct channel_path, dev)
  59. #endif