This source file includes following definitions.
- qib_read_kreg32
- qib_read_kreg64
- qib_write_kreg
1 #ifndef _QIB_7220_H
2 #define _QIB_7220_H
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include "qib_7220_regs.h"
37
38
39 #define IBA7220_KRCVEGRCNT 2048U
40
41 #define IB_7220_LT_STATE_CFGRCVFCFG 0x09
42 #define IB_7220_LT_STATE_CFGWAITRMT 0x0a
43 #define IB_7220_LT_STATE_TXREVLANES 0x0d
44 #define IB_7220_LT_STATE_CFGENH 0x10
45
46 struct qib_chip_specific {
47 u64 __iomem *cregbase;
48 u64 *cntrs;
49 u64 *portcntrs;
50 spinlock_t sdepb_lock;
51 spinlock_t rcvmod_lock;
52 spinlock_t gpio_lock;
53 u64 hwerrmask;
54 u64 errormask;
55 u64 gpio_out;
56 u64 gpio_mask;
57 u64 extctrl;
58 u32 ncntrs;
59 u32 nportcntrs;
60 u32 cntrnamelen;
61 u32 portcntrnamelen;
62 u32 numctxts;
63 u32 rcvegrcnt;
64 u32 autoneg_tries;
65 u32 serdes_first_init_done;
66 u32 sdmabufcnt;
67 u32 lastbuf_for_pio;
68 u32 updthresh;
69 u32 updthresh_dflt;
70 u8 presets_needed;
71 u8 relock_timer_active;
72 char emsgbuf[128];
73 char sdmamsgbuf[192];
74 char bitsmsgbuf[64];
75 struct timer_list relock_timer;
76 unsigned int relock_interval;
77 struct qib_devdata *dd;
78 };
79
80 struct qib_chippport_specific {
81 struct qib_pportdata pportdata;
82 wait_queue_head_t autoneg_wait;
83 struct delayed_work autoneg_work;
84 struct timer_list chase_timer;
85
86
87
88
89
90
91
92
93 u64 ibdeltainprog;
94 u64 ibsymdelta;
95 u64 ibsymsnap;
96 u64 iblnkerrdelta;
97 u64 iblnkerrsnap;
98 u64 ibcctrl;
99 u64 ibcddrctrl;
100 unsigned long chase_end;
101 u32 last_delay_mult;
102 };
103
104
105
106
107
108
109
110 int qib_sd7220_presets(struct qib_devdata *dd);
111 int qib_sd7220_init(struct qib_devdata *dd);
112 void qib_sd7220_clr_ibpar(struct qib_devdata *);
113
114
115
116
117
118 #define IB_7220_SERDES 2
119
120 static inline u32 qib_read_kreg32(const struct qib_devdata *dd,
121 const u16 regno)
122 {
123 if (!dd->kregbase || !(dd->flags & QIB_PRESENT))
124 return -1;
125 return readl((u32 __iomem *)&dd->kregbase[regno]);
126 }
127
128 static inline u64 qib_read_kreg64(const struct qib_devdata *dd,
129 const u16 regno)
130 {
131 if (!dd->kregbase || !(dd->flags & QIB_PRESENT))
132 return -1;
133
134 return readq(&dd->kregbase[regno]);
135 }
136
137 static inline void qib_write_kreg(const struct qib_devdata *dd,
138 const u16 regno, u64 value)
139 {
140 if (dd->kregbase)
141 writeq(value, &dd->kregbase[regno]);
142 }
143
144 void set_7220_relock_poll(struct qib_devdata *, int);
145 void shutdown_7220_relock_poll(struct qib_devdata *);
146 void toggle_7220_rclkrls(struct qib_devdata *);
147
148
149 #endif