linux/drivers/s390/cio/chsc.h
<<
>>
Prefs
   1#ifndef S390_CHSC_H
   2#define S390_CHSC_H
   3
   4#include <linux/types.h>
   5#include <linux/device.h>
   6#include <asm/chpid.h>
   7#include <asm/chsc.h>
   8#include <asm/schid.h>
   9
  10#define CHSC_SDA_OC_MSS   0x2
  11
  12struct chsc_header {
  13        u16 length;
  14        u16 code;
  15} __attribute__ ((packed));
  16
  17#define NR_MEASUREMENT_CHARS 5
  18struct cmg_chars {
  19        u32 values[NR_MEASUREMENT_CHARS];
  20} __attribute__ ((packed));
  21
  22#define NR_MEASUREMENT_ENTRIES 8
  23struct cmg_entry {
  24        u32 values[NR_MEASUREMENT_ENTRIES];
  25} __attribute__ ((packed));
  26
  27struct channel_path_desc {
  28        u8 flags;
  29        u8 lsn;
  30        u8 desc;
  31        u8 chpid;
  32        u8 swla;
  33        u8 zeroes;
  34        u8 chla;
  35        u8 chpp;
  36} __attribute__ ((packed));
  37
  38struct channel_path;
  39
  40struct css_chsc_char {
  41        u64 res;
  42        u64 : 20;
  43        u32 secm : 1; /* bit 84 */
  44        u32 : 1;
  45        u32 scmc : 1; /* bit 86 */
  46        u32 : 20;
  47        u32 scssc : 1;  /* bit 107 */
  48        u32 scsscf : 1; /* bit 108 */
  49        u32 : 19;
  50}__attribute__((packed));
  51
  52extern struct css_chsc_char css_chsc_characteristics;
  53
  54struct chsc_ssd_info {
  55        u8 path_mask;
  56        u8 fla_valid_mask;
  57        struct chp_id chpid[8];
  58        u16 fla[8];
  59};
  60extern int chsc_get_ssd_info(struct subchannel_id schid,
  61                             struct chsc_ssd_info *ssd);
  62extern int chsc_determine_css_characteristics(void);
  63extern int chsc_alloc_sei_area(void);
  64extern void chsc_free_sei_area(void);
  65
  66extern int chsc_enable_facility(int);
  67struct channel_subsystem;
  68extern int chsc_secm(struct channel_subsystem *, int);
  69int __chsc_do_secm(struct channel_subsystem *css, int enable, void *page);
  70
  71int chsc_chp_vary(struct chp_id chpid, int on);
  72int chsc_determine_channel_path_desc(struct chp_id chpid, int fmt, int rfmt,
  73                                     int c, int m,
  74                                     struct chsc_response_struct *resp);
  75int chsc_determine_base_channel_path_desc(struct chp_id chpid,
  76                                          struct channel_path_desc *desc);
  77void chsc_chp_online(struct chp_id chpid);
  78void chsc_chp_offline(struct chp_id chpid);
  79int chsc_get_channel_measurement_chars(struct channel_path *chp);
  80
  81int chsc_error_from_response(int response);
  82
  83#endif
  84