|
@@ -137,3 +137,40 @@
|
|
#define LCA_PMR_OCCEB 0xffff0000L /* Override cycle counter - even bits */
|
|
#define LCA_PMR_OCCEB 0xffff0000L /* Override cycle counter - even bits */
|
|
#define LCA_PMR_OCCOB 0xffff000000000000L /* Override cycle counter - even bits */
|
|
#define LCA_PMR_OCCOB 0xffff000000000000L /* Override cycle counter - even bits */
|
|
#define LCA_PMR_PRIMARY_MASK 0xfffffffffffffff8L
|
|
#define LCA_PMR_PRIMARY_MASK 0xfffffffffffffff8L
|
|
|
|
+
|
|
|
|
+/* LCA PMR Macros */
|
|
|
|
+
|
|
|
|
+#define LCA_READ_PMR (*(volatile unsigned long *)LCA_PMR_ADDR)
|
|
|
|
+#define LCA_WRITE_PMR(d) (*((volatile unsigned long *)LCA_PMR_ADDR) = (d))
|
|
|
|
+
|
|
|
|
+#define LCA_GET_PRIMARY(r) ((r) & LCA_PMR_PDIV)
|
|
|
|
+#define LCA_GET_OVERRIDE(r) (((r) >> 3) & LCA_PMR_PDIV)
|
|
|
|
+#define LCA_SET_PRIMARY_CLOCK(r, c) ((r) = (((r) & LCA_PMR_PRIMARY_MASK)|(c)))
|
|
|
|
+
|
|
|
|
+/* LCA PMR Divisor values */
|
|
|
|
+#define LCA_PMR_DIV_1 0x0
|
|
|
|
+#define LCA_PMR_DIV_1_5 0x1
|
|
|
|
+#define LCA_PMR_DIV_2 0x2
|
|
|
|
+#define LCA_PMR_DIV_4 0x3
|
|
|
|
+#define LCA_PMR_DIV_8 0x4
|
|
|
|
+#define LCA_PMR_DIV_16 0x5
|
|
|
|
+#define LCA_PMR_DIV_MIN DIV_1
|
|
|
|
+#define LCA_PMR_DIV_MAX DIV_16
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Data structure for handling LCA machine checks. Correctable errors
|
|
|
|
+ * result in a short logout frame, uncorrectable ones in a long one.
|
|
|
|
+ */
|
|
|
|
+struct el_lca_mcheck_short {
|
|
|
|
+ struct el_common h; /* common logout header */
|
|
|
|
+ unsigned long esr; /* error-status register */
|
|
|
|
+ unsigned long ear; /* error-address register */
|
|
|
|
+ unsigned long dc_stat; /* dcache status register */
|
|
|
|
+ unsigned long ioc_stat0; /* I/O controller status register 0 */
|
|
|
|
+ unsigned long ioc_stat1; /* I/O controller status register 1 */
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct el_lca_mcheck_long {
|
|
|
|
+ struct el_common h; /* common logout header */
|
|
|
|
+ unsigned long pt[31]; /* PAL temps */
|