Merge tag 'hwmon-for-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck...
[linux-2.6-block.git] / arch / s390 / include / asm / sclp.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
ab14de6c 2/*
ab14de6c
HC
3 * Copyright IBM Corp. 2007
4 * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
5 */
6
7#ifndef _ASM_S390_SCLP_H
8#define _ASM_S390_SCLP_H
9
10#include <linux/types.h>
e5854a58 11#include <asm/chpid.h>
9c095234 12#include <asm/cpu.h>
ab14de6c 13
e5854a58 14#define SCLP_CHP_INFO_MASK_SIZE 32
d08d9430 15#define SCLP_MAX_CORES 256
e5854a58
PO
16
17struct sclp_chp_info {
18 u8 recognized[SCLP_CHP_INFO_MASK_SIZE];
19 u8 standby[SCLP_CHP_INFO_MASK_SIZE];
20 u8 configured[SCLP_CHP_INFO_MASK_SIZE];
21};
22
05dd2530
HC
23#define LOADPARM_LEN 8
24
25struct sclp_ipl_info {
26 int is_valid;
27 int has_dump;
28 char loadparm[LOADPARM_LEN];
29};
30
d08d9430 31struct sclp_core_entry {
10ad34bc 32 u8 core_id;
8dfd523f
DH
33 u8 reserved0;
34 u8 : 4;
35 u8 sief2 : 1;
23861451
DH
36 u8 skey : 1;
37 u8 : 2;
b9e28897
DH
38 u8 : 2;
39 u8 gpere : 1;
217a4406 40 u8 siif : 1;
d614be05
DH
41 u8 sigpif : 1;
42 u8 : 3;
72cd82b9
DH
43 u8 reserved2[3];
44 u8 : 2;
45 u8 ib : 1;
4a5c3e08
DH
46 u8 cei : 1;
47 u8 : 4;
72cd82b9 48 u8 reserved3[6];
08d07968
HC
49 u8 type;
50 u8 reserved1;
51} __attribute__((packed));
52
d08d9430 53struct sclp_core_info {
08d07968
HC
54 unsigned int configured;
55 unsigned int standby;
56 unsigned int combined;
d08d9430 57 struct sclp_core_entry core[SCLP_MAX_CORES];
08d07968
HC
58};
59
37c5f6c8
DH
60struct sclp_info {
61 unsigned char has_linemode : 1;
62 unsigned char has_vt220 : 1;
63 unsigned char has_siif : 1;
64 unsigned char has_sigpif : 1;
d08d9430 65 unsigned char has_core_type : 1;
37c5f6c8 66 unsigned char has_sprp : 1;
f7ba1d34
ED
67 unsigned char has_hvs : 1;
68 unsigned char has_esca : 1;
8dfd523f 69 unsigned char has_sief2 : 1;
4013ade3 70 unsigned char has_64bscao : 1;
b9e28897 71 unsigned char has_gpere : 1;
09be9cb9 72 unsigned char has_cmma : 1;
5236c751 73 unsigned char has_gsls : 1;
72cd82b9 74 unsigned char has_ib : 1;
4a5c3e08 75 unsigned char has_cei : 1;
a0eb55e6 76 unsigned char has_pfmfi : 1;
9c375490 77 unsigned char has_ibs : 1;
23861451 78 unsigned char has_skey : 1;
71cb1bf6 79 unsigned char has_kss : 1;
9e73ea70 80 unsigned char has_gisaf : 1;
37c5f6c8
DH
81 unsigned int ibc;
82 unsigned int mtid;
83 unsigned int mtid_cp;
84 unsigned int mtid_prev;
423d5b36
HC
85 unsigned long rzm;
86 unsigned long rnmax;
87 unsigned long hamax;
d08d9430 88 unsigned int max_cores;
37c5f6c8 89 unsigned long hsa_size;
423d5b36 90 unsigned long facilities;
154fa27e 91 unsigned int hmfai;
37c5f6c8
DH
92};
93extern struct sclp_info sclp;
94
12283a40
SO
95struct zpci_report_error_header {
96 u8 version; /* Interface version byte */
97 u8 action; /* Action qualifier byte
98 * 1: Deconfigure and repair action requested
99 * (OpenCrypto Problem Call Home)
100 * 2: Informational Report
101 * (OpenCrypto Successful Diagnostics Execution)
102 */
103 u16 length; /* Length of Subsequent Data (up to 4K – SCLP header */
104 u8 data[0]; /* Subsequent Data passed verbatim to SCLP ET 24 */
105} __packed;
106
d5ab7a34
HC
107int sclp_early_get_core_info(struct sclp_core_info *info);
108void sclp_early_get_ipl_info(struct sclp_ipl_info *info);
109void sclp_early_detect(void);
110void sclp_early_printk(const char *s);
55a5542a
GS
111void sclp_early_printk_force(const char *s);
112void __sclp_early_printk(const char *s, unsigned int len, unsigned int force);
d5ab7a34 113
af51160e 114int _sclp_get_core_info(struct sclp_core_info *info);
d08d9430
MS
115int sclp_core_configure(u8 core);
116int sclp_core_deconfigure(u8 core);
05dd2530
HC
117int sclp_sdias_blk_count(void);
118int sclp_sdias_copy(void *dest, int blk_num, int nr_blks);
119int sclp_chp_configure(struct chp_id chpid);
120int sclp_chp_deconfigure(struct chp_id chpid);
121int sclp_chp_read_info(struct sclp_chp_info *info);
7441b062
JG
122int sclp_pci_configure(u32 fid);
123int sclp_pci_deconfigure(u32 fid);
12283a40 124int sclp_pci_report(struct zpci_report_error_header *report, u32 fh, u32 fid);
df9694c7
MS
125int memcpy_hsa_kernel(void *dest, unsigned long src, size_t count);
126int memcpy_hsa_user(void __user *dest, unsigned long src, size_t count);
e435dc31 127void sclp_ocf_cpc_name_copy(char *dst);
fbf87dff 128
af51160e
HC
129static inline int sclp_get_core_info(struct sclp_core_info *info, int early)
130{
131 if (early)
d5ab7a34 132 return sclp_early_get_core_info(info);
af51160e
HC
133 return _sclp_get_core_info(info);
134}
135
ab14de6c 136#endif /* _ASM_S390_SCLP_H */