blob: ba07463897c10e4288ed375c4ff1d3de3fefc11f [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright IBM Corp. 2006
4 * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
5 */
6#ifndef __S390_STP_H
7#define __S390_STP_H
8
Olivier Deprez157378f2022-04-04 15:47:50 +02009#include <linux/compiler.h>
10
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000011/* notifier for syncs */
12extern struct atomic_notifier_head s390_epoch_delta_notifier;
13
14/* STP interruption parameter */
15struct stp_irq_parm {
Olivier Deprez157378f2022-04-04 15:47:50 +020016 u32 : 14;
17 u32 tsc : 1; /* Timing status change */
18 u32 lac : 1; /* Link availability change */
19 u32 tcpc : 1; /* Time control parameter change */
20 u32 : 15;
21} __packed;
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000022
23#define STP_OP_SYNC 1
24#define STP_OP_CTRL 3
25
26struct stp_sstpi {
Olivier Deprez157378f2022-04-04 15:47:50 +020027 u32 : 32;
28 u32 tu : 1;
29 u32 lu : 1;
30 u32 : 6;
31 u32 stratum : 8;
32 u32 vbits : 16;
33 u32 leaps : 16;
34 u32 tmd : 4;
35 u32 ctn : 4;
36 u32 : 3;
37 u32 c : 1;
38 u32 tst : 4;
39 u32 tzo : 16;
40 u32 dsto : 16;
41 u32 ctrl : 16;
42 u32 : 16;
43 u32 tto;
44 u32 : 32;
45 u32 ctnid[3];
46 u32 : 32;
47 u32 todoff[4];
48 u32 rsvd[48];
49} __packed;
50
51struct stp_tzib {
52 u32 tzan : 16;
53 u32 : 16;
54 u32 tzo : 16;
55 u32 dsto : 16;
56 u32 stn;
57 u32 dstn;
58 u64 dst_on_alg;
59 u64 dst_off_alg;
60} __packed;
61
62struct stp_tcpib {
63 u32 atcode : 4;
64 u32 ntcode : 4;
65 u32 d : 1;
66 u32 : 23;
67 s32 tto;
68 struct stp_tzib atzib;
69 struct stp_tzib ntzib;
70 s32 adst_offset : 16;
71 s32 ndst_offset : 16;
72 u32 rsvd1;
73 u64 ntzib_update;
74 u64 ndsto_update;
75} __packed;
76
77struct stp_lsoib {
78 u32 p : 1;
79 u32 : 31;
80 s32 also : 16;
81 s32 nlso : 16;
82 u64 nlsout;
83} __packed;
84
85struct stp_stzi {
86 u32 rsvd0[3];
87 u64 data_ts;
88 u32 rsvd1[22];
89 struct stp_tcpib tcpib;
90 struct stp_lsoib lsoib;
91} __packed;
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000092
93/* Functions needed by the machine check handler */
94int stp_sync_check(void);
95int stp_island_check(void);
96void stp_queue_work(void);
97
98#endif /* __S390_STP_H */