Merge tag 'asoc-v5.15' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie...
[linux-2.6-microblaze.git] / arch / s390 / include / asm / stp.h
1 /* 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
9 #include <linux/compiler.h>
10
11 /* notifier for syncs */
12 extern struct atomic_notifier_head s390_epoch_delta_notifier;
13
14 /* STP interruption parameter */
15 struct stp_irq_parm {
16         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;
22
23 #define STP_OP_SYNC     1
24 #define STP_OP_CTRL     3
25
26 struct stp_sstpi {
27         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
51 struct 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
62 struct 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
77 struct stp_lsoib {
78         u32 p           : 1;
79         u32             : 31;
80         s32 also        : 16;
81         s32 nlso        : 16;
82         u64 nlsout;
83 } __packed;
84
85 struct 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;
92
93 /* Functions needed by the machine check handler */
94 int stp_sync_check(void);
95 int stp_island_check(void);
96 void stp_queue_work(void);
97
98 #endif /* __S390_STP_H */