The External-Time-Reference (ETR) clock synchronization interface has been superseded by Server-Time-Protocol (STP). Remove the outdated ETR interface. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>tirimbino
parent
936cc855ff
commit
fd5ada0403
@ -1,229 +0,0 @@ |
||||
/*
|
||||
* Copyright IBM Corp. 2006 |
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) |
||||
*/ |
||||
#ifndef __S390_ETR_H |
||||
#define __S390_ETR_H |
||||
|
||||
/* ETR attachment control register */ |
||||
struct etr_eacr { |
||||
unsigned int e0 : 1; /* port 0 stepping control */ |
||||
unsigned int e1 : 1; /* port 1 stepping control */ |
||||
unsigned int _pad0 : 5; /* must be 00100 */ |
||||
unsigned int dp : 1; /* data port control */ |
||||
unsigned int p0 : 1; /* port 0 change recognition control */ |
||||
unsigned int p1 : 1; /* port 1 change recognition control */ |
||||
unsigned int _pad1 : 3; /* must be 000 */ |
||||
unsigned int ea : 1; /* ETR alert control */ |
||||
unsigned int es : 1; /* ETR sync check control */ |
||||
unsigned int sl : 1; /* switch to local control */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* Port state returned by steai */ |
||||
enum etr_psc { |
||||
etr_psc_operational = 0, |
||||
etr_psc_semi_operational = 1, |
||||
etr_psc_protocol_error = 4, |
||||
etr_psc_no_symbols = 8, |
||||
etr_psc_no_signal = 12, |
||||
etr_psc_pps_mode = 13 |
||||
}; |
||||
|
||||
/* Logical port state returned by stetr */ |
||||
enum etr_lpsc { |
||||
etr_lpsc_operational_step = 0, |
||||
etr_lpsc_operational_alt = 1, |
||||
etr_lpsc_semi_operational = 2, |
||||
etr_lpsc_protocol_error = 4, |
||||
etr_lpsc_no_symbol_sync = 8, |
||||
etr_lpsc_no_signal = 12, |
||||
etr_lpsc_pps_mode = 13 |
||||
}; |
||||
|
||||
/* ETR status words */ |
||||
struct etr_esw { |
||||
struct etr_eacr eacr; /* attachment control register */ |
||||
unsigned int y : 1; /* stepping mode */ |
||||
unsigned int _pad0 : 5; /* must be 00000 */ |
||||
unsigned int p : 1; /* stepping port number */ |
||||
unsigned int q : 1; /* data port number */ |
||||
unsigned int psc0 : 4; /* port 0 state code */ |
||||
unsigned int psc1 : 4; /* port 1 state code */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* Second level data register status word */ |
||||
struct etr_slsw { |
||||
unsigned int vv1 : 1; /* copy of validity bit data frame 1 */ |
||||
unsigned int vv2 : 1; /* copy of validity bit data frame 2 */ |
||||
unsigned int vv3 : 1; /* copy of validity bit data frame 3 */ |
||||
unsigned int vv4 : 1; /* copy of validity bit data frame 4 */ |
||||
unsigned int _pad0 : 19; /* must by all zeroes */ |
||||
unsigned int n : 1; /* EAF port number */ |
||||
unsigned int v1 : 1; /* validity bit ETR data frame 1 */ |
||||
unsigned int v2 : 1; /* validity bit ETR data frame 2 */ |
||||
unsigned int v3 : 1; /* validity bit ETR data frame 3 */ |
||||
unsigned int v4 : 1; /* validity bit ETR data frame 4 */ |
||||
unsigned int _pad1 : 4; /* must be 0000 */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* ETR data frames */ |
||||
struct etr_edf1 { |
||||
unsigned int u : 1; /* untuned bit */ |
||||
unsigned int _pad0 : 1; /* must be 0 */ |
||||
unsigned int r : 1; /* service request bit */ |
||||
unsigned int _pad1 : 4; /* must be 0000 */ |
||||
unsigned int a : 1; /* time adjustment bit */ |
||||
unsigned int net_id : 8; /* ETR network id */ |
||||
unsigned int etr_id : 8; /* id of ETR which sends data frames */ |
||||
unsigned int etr_pn : 8; /* port number of ETR output port */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
struct etr_edf2 { |
||||
unsigned int etv : 32; /* Upper 32 bits of TOD. */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
struct etr_edf3 { |
||||
unsigned int rc : 8; /* failure reason code */ |
||||
unsigned int _pad0 : 3; /* must be 000 */ |
||||
unsigned int c : 1; /* ETR coupled bit */ |
||||
unsigned int tc : 4; /* ETR type code */ |
||||
unsigned int blto : 8; /* biased local time offset */ |
||||
/* (blto - 128) * 15 = minutes */ |
||||
unsigned int buo : 8; /* biased utc offset */ |
||||
/* (buo - 128) = leap seconds */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
struct etr_edf4 { |
||||
unsigned int ed : 8; /* ETS device dependent data */ |
||||
unsigned int _pad0 : 1; /* must be 0 */ |
||||
unsigned int buc : 5; /* biased ut1 correction */ |
||||
/* (buc - 16) * 0.1 seconds */ |
||||
unsigned int em : 6; /* ETS error magnitude */ |
||||
unsigned int dc : 6; /* ETS drift code */ |
||||
unsigned int sc : 6; /* ETS steering code */ |
||||
} __attribute__ ((packed)); |
||||
|
||||
/*
|
||||
* ETR attachment information block, two formats |
||||
* format 1 has 4 reserved words with a size of 64 bytes |
||||
* format 2 has 16 reserved words with a size of 96 bytes |
||||
*/ |
||||
struct etr_aib { |
||||
struct etr_esw esw; |
||||
struct etr_slsw slsw; |
||||
unsigned long long tsp; |
||||
struct etr_edf1 edf1; |
||||
struct etr_edf2 edf2; |
||||
struct etr_edf3 edf3; |
||||
struct etr_edf4 edf4; |
||||
unsigned int reserved[16]; |
||||
} __attribute__ ((packed,aligned(8))); |
||||
|
||||
/* ETR interruption parameter */ |
||||
struct etr_irq_parm { |
||||
unsigned int _pad0 : 8; |
||||
unsigned int pc0 : 1; /* port 0 state change */ |
||||
unsigned int pc1 : 1; /* port 1 state change */ |
||||
unsigned int _pad1 : 3; |
||||
unsigned int eai : 1; /* ETR alert indication */ |
||||
unsigned int _pad2 : 18; |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* Inline assembly helper functions */ |
||||
static inline int etr_setr(struct etr_eacr *ctrl) |
||||
{ |
||||
int rc = -EOPNOTSUPP; |
||||
|
||||
asm volatile( |
||||
" .insn s,0xb2160000,%1\n" |
||||
"0: la %0,0\n" |
||||
"1:\n" |
||||
EX_TABLE(0b,1b) |
||||
: "+d" (rc) : "Q" (*ctrl)); |
||||
return rc; |
||||
} |
||||
|
||||
/* Stores a format 1 aib with 64 bytes */ |
||||
static inline int etr_stetr(struct etr_aib *aib) |
||||
{ |
||||
int rc = -EOPNOTSUPP; |
||||
|
||||
asm volatile( |
||||
" .insn s,0xb2170000,%1\n" |
||||
"0: la %0,0\n" |
||||
"1:\n" |
||||
EX_TABLE(0b,1b) |
||||
: "+d" (rc) : "Q" (*aib)); |
||||
return rc; |
||||
} |
||||
|
||||
/* Stores a format 2 aib with 96 bytes for specified port */ |
||||
static inline int etr_steai(struct etr_aib *aib, unsigned int func) |
||||
{ |
||||
register unsigned int reg0 asm("0") = func; |
||||
int rc = -EOPNOTSUPP; |
||||
|
||||
asm volatile( |
||||
" .insn s,0xb2b30000,%1\n" |
||||
"0: la %0,0\n" |
||||
"1:\n" |
||||
EX_TABLE(0b,1b) |
||||
: "+d" (rc) : "Q" (*aib), "d" (reg0)); |
||||
return rc; |
||||
} |
||||
|
||||
/* Function codes for the steai instruction. */ |
||||
#define ETR_STEAI_STEPPING_PORT 0x10 |
||||
#define ETR_STEAI_ALTERNATE_PORT 0x11 |
||||
#define ETR_STEAI_PORT_0 0x12 |
||||
#define ETR_STEAI_PORT_1 0x13 |
||||
|
||||
/* Functions needed by the machine check handler */ |
||||
int etr_switch_to_local(void); |
||||
int etr_sync_check(void); |
||||
void etr_queue_work(void); |
||||
|
||||
/* notifier for syncs */ |
||||
extern struct atomic_notifier_head s390_epoch_delta_notifier; |
||||
|
||||
/* STP interruption parameter */ |
||||
struct stp_irq_parm { |
||||
unsigned int _pad0 : 14; |
||||
unsigned int tsc : 1; /* Timing status change */ |
||||
unsigned int lac : 1; /* Link availability change */ |
||||
unsigned int tcpc : 1; /* Time control parameter change */ |
||||
unsigned int _pad2 : 15; |
||||
} __attribute__ ((packed)); |
||||
|
||||
#define STP_OP_SYNC 1 |
||||
#define STP_OP_CTRL 3 |
||||
|
||||
struct stp_sstpi { |
||||
unsigned int rsvd0; |
||||
unsigned int rsvd1 : 8; |
||||
unsigned int stratum : 8; |
||||
unsigned int vbits : 16; |
||||
unsigned int leaps : 16; |
||||
unsigned int tmd : 4; |
||||
unsigned int ctn : 4; |
||||
unsigned int rsvd2 : 3; |
||||
unsigned int c : 1; |
||||
unsigned int tst : 4; |
||||
unsigned int tzo : 16; |
||||
unsigned int dsto : 16; |
||||
unsigned int ctrl : 16; |
||||
unsigned int rsvd3 : 16; |
||||
unsigned int tto; |
||||
unsigned int rsvd4; |
||||
unsigned int ctnid[3]; |
||||
unsigned int rsvd5; |
||||
unsigned int todoff[4]; |
||||
unsigned int rsvd6[48]; |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* Functions needed by the machine check handler */ |
||||
int stp_sync_check(void); |
||||
int stp_island_check(void); |
||||
void stp_queue_work(void); |
||||
|
||||
#endif /* __S390_ETR_H */ |
@ -0,0 +1,51 @@ |
||||
/*
|
||||
* Copyright IBM Corp. 2006 |
||||
* Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com) |
||||
*/ |
||||
#ifndef __S390_STP_H |
||||
#define __S390_STP_H |
||||
|
||||
/* notifier for syncs */ |
||||
extern struct atomic_notifier_head s390_epoch_delta_notifier; |
||||
|
||||
/* STP interruption parameter */ |
||||
struct stp_irq_parm { |
||||
unsigned int _pad0 : 14; |
||||
unsigned int tsc : 1; /* Timing status change */ |
||||
unsigned int lac : 1; /* Link availability change */ |
||||
unsigned int tcpc : 1; /* Time control parameter change */ |
||||
unsigned int _pad2 : 15; |
||||
} __attribute__ ((packed)); |
||||
|
||||
#define STP_OP_SYNC 1 |
||||
#define STP_OP_CTRL 3 |
||||
|
||||
struct stp_sstpi { |
||||
unsigned int rsvd0; |
||||
unsigned int rsvd1 : 8; |
||||
unsigned int stratum : 8; |
||||
unsigned int vbits : 16; |
||||
unsigned int leaps : 16; |
||||
unsigned int tmd : 4; |
||||
unsigned int ctn : 4; |
||||
unsigned int rsvd2 : 3; |
||||
unsigned int c : 1; |
||||
unsigned int tst : 4; |
||||
unsigned int tzo : 16; |
||||
unsigned int dsto : 16; |
||||
unsigned int ctrl : 16; |
||||
unsigned int rsvd3 : 16; |
||||
unsigned int tto; |
||||
unsigned int rsvd4; |
||||
unsigned int ctnid[3]; |
||||
unsigned int rsvd5; |
||||
unsigned int todoff[4]; |
||||
unsigned int rsvd6[48]; |
||||
} __attribute__ ((packed)); |
||||
|
||||
/* Functions needed by the machine check handler */ |
||||
int stp_sync_check(void); |
||||
int stp_island_check(void); |
||||
void stp_queue_work(void); |
||||
|
||||
#endif /* __S390_STP_H */ |
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue