18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci *  Copyright IBM Corp. 2006
48c2ecf20Sopenharmony_ci *  Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci#ifndef __S390_STP_H
78c2ecf20Sopenharmony_ci#define __S390_STP_H
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#include <linux/compiler.h>
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci/* notifier for syncs */
128c2ecf20Sopenharmony_ciextern struct atomic_notifier_head s390_epoch_delta_notifier;
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci/* STP interruption parameter */
158c2ecf20Sopenharmony_cistruct stp_irq_parm {
168c2ecf20Sopenharmony_ci	u32		: 14;
178c2ecf20Sopenharmony_ci	u32 tsc		:  1;	/* Timing status change */
188c2ecf20Sopenharmony_ci	u32 lac		:  1;	/* Link availability change */
198c2ecf20Sopenharmony_ci	u32 tcpc	:  1;	/* Time control parameter change */
208c2ecf20Sopenharmony_ci	u32		: 15;
218c2ecf20Sopenharmony_ci} __packed;
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci#define STP_OP_SYNC	1
248c2ecf20Sopenharmony_ci#define STP_OP_CTRL	3
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_cistruct stp_sstpi {
278c2ecf20Sopenharmony_ci	u32		: 32;
288c2ecf20Sopenharmony_ci	u32 tu		:  1;
298c2ecf20Sopenharmony_ci	u32 lu		:  1;
308c2ecf20Sopenharmony_ci	u32		:  6;
318c2ecf20Sopenharmony_ci	u32 stratum	:  8;
328c2ecf20Sopenharmony_ci	u32 vbits	: 16;
338c2ecf20Sopenharmony_ci	u32 leaps	: 16;
348c2ecf20Sopenharmony_ci	u32 tmd		:  4;
358c2ecf20Sopenharmony_ci	u32 ctn		:  4;
368c2ecf20Sopenharmony_ci	u32		:  3;
378c2ecf20Sopenharmony_ci	u32 c		:  1;
388c2ecf20Sopenharmony_ci	u32 tst		:  4;
398c2ecf20Sopenharmony_ci	u32 tzo		: 16;
408c2ecf20Sopenharmony_ci	u32 dsto	: 16;
418c2ecf20Sopenharmony_ci	u32 ctrl	: 16;
428c2ecf20Sopenharmony_ci	u32		: 16;
438c2ecf20Sopenharmony_ci	u32 tto;
448c2ecf20Sopenharmony_ci	u32		: 32;
458c2ecf20Sopenharmony_ci	u32 ctnid[3];
468c2ecf20Sopenharmony_ci	u32		: 32;
478c2ecf20Sopenharmony_ci	u32 todoff[4];
488c2ecf20Sopenharmony_ci	u32 rsvd[48];
498c2ecf20Sopenharmony_ci} __packed;
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_cistruct stp_tzib {
528c2ecf20Sopenharmony_ci	u32 tzan	: 16;
538c2ecf20Sopenharmony_ci	u32		: 16;
548c2ecf20Sopenharmony_ci	u32 tzo		: 16;
558c2ecf20Sopenharmony_ci	u32 dsto	: 16;
568c2ecf20Sopenharmony_ci	u32 stn;
578c2ecf20Sopenharmony_ci	u32 dstn;
588c2ecf20Sopenharmony_ci	u64 dst_on_alg;
598c2ecf20Sopenharmony_ci	u64 dst_off_alg;
608c2ecf20Sopenharmony_ci} __packed;
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_cistruct stp_tcpib {
638c2ecf20Sopenharmony_ci	u32 atcode	: 4;
648c2ecf20Sopenharmony_ci	u32 ntcode	: 4;
658c2ecf20Sopenharmony_ci	u32 d		: 1;
668c2ecf20Sopenharmony_ci	u32		: 23;
678c2ecf20Sopenharmony_ci	s32 tto;
688c2ecf20Sopenharmony_ci	struct stp_tzib atzib;
698c2ecf20Sopenharmony_ci	struct stp_tzib ntzib;
708c2ecf20Sopenharmony_ci	s32 adst_offset : 16;
718c2ecf20Sopenharmony_ci	s32 ndst_offset : 16;
728c2ecf20Sopenharmony_ci	u32 rsvd1;
738c2ecf20Sopenharmony_ci	u64 ntzib_update;
748c2ecf20Sopenharmony_ci	u64 ndsto_update;
758c2ecf20Sopenharmony_ci} __packed;
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_cistruct stp_lsoib {
788c2ecf20Sopenharmony_ci	u32 p		: 1;
798c2ecf20Sopenharmony_ci	u32		: 31;
808c2ecf20Sopenharmony_ci	s32 also	: 16;
818c2ecf20Sopenharmony_ci	s32 nlso	: 16;
828c2ecf20Sopenharmony_ci	u64 nlsout;
838c2ecf20Sopenharmony_ci} __packed;
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_cistruct stp_stzi {
868c2ecf20Sopenharmony_ci	u32 rsvd0[3];
878c2ecf20Sopenharmony_ci	u64 data_ts;
888c2ecf20Sopenharmony_ci	u32 rsvd1[22];
898c2ecf20Sopenharmony_ci	struct stp_tcpib tcpib;
908c2ecf20Sopenharmony_ci	struct stp_lsoib lsoib;
918c2ecf20Sopenharmony_ci} __packed;
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci/* Functions needed by the machine check handler */
948c2ecf20Sopenharmony_ciint stp_sync_check(void);
958c2ecf20Sopenharmony_ciint stp_island_check(void);
968c2ecf20Sopenharmony_civoid stp_queue_work(void);
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci#endif /* __S390_STP_H */
99