42 #define MAX_XLOG_SIZE (64 * 1024)
52 int factor = (IoAdapter->
tasks == 1) ? 1 : 2;
63 if ((TrapID == 0x99999999) || (TrapID == 0x99999901))
75 if ((regs[0] >= offset)
76 && (regs[0] < offset + (IoAdapter->
MemorySize >> factor) - 1))
83 size = offset + (IoAdapter->
MemorySize >> factor) - regs[0];
91 diva_os_free(0, Xlog);
121 DBG_TRC((
"resetted board @ reset addr 0x%08lx", qBriReset))
140 DBG_TRC((
"started processor @ addr 0x%08lx", qBriReset))
160 qBriIsacDspReset = (
dword volatile __iomem *)&p[hw_offset];
177 DBG_TRC((
"stopped processor @ addr 0x%08lx", qBriReset))
184 #define FPGA_NAME_OFFSET 0x10
189 char *fpgaFile, *fpgaType, *fpgaDate, *fpgaTime;
198 for (i = 0; File[
i] != 0xff;)
202 DBG_FTL((
"FPGA download: start of data header not found"))
209 if ((File[i] & 0xF0) != 0x20)
211 DBG_FTL((
"FPGA download: data header corrupted"))
219 fpgaTlen = (
dword)fpgaFile[fpgaFlen + 2];
222 fpgaType = (
char *)&fpgaFile[fpgaFlen + 3];
223 fpgaDlen = (
dword) fpgaType[fpgaTlen + 2];
226 fpgaDate = (
char *)&fpgaType[fpgaTlen + 3];
227 fpgaTime = (
char *)&fpgaDate[fpgaDlen + 3];
228 cnt = (
dword)(((File[i] & 0x0F) << 20) + (File[i + 1] << 12)
229 + (File[i + 2] << 4) + (File[i + 3] >> 4));
233 DBG_FTL((
"FPGA download: '%s' file too small (%ld < %ld)",
234 FileName, *Length, code + ((cnt + 7) / 8)))
241 while ((fpgaDate[i] !=
'\0')
242 && ((fpgaDate[i] <
'0') || (fpgaDate[i] >
'9')))
247 while ((fpgaDate[i] >=
'0') && (fpgaDate[i] <=
'9'))
248 year = year * 10 + (fpgaDate[i++] -
'0');
249 }
while ((year < 2000) && (fpgaDate[
i] !=
'\0'));
261 DBG_LOG((
"FPGA[%s] file %s (%s %s) len %d",
262 fpgaType, fpgaFile, fpgaDate, fpgaTime, cnt))
268 #define FPGA_PROG 0x0001
269 #define FPGA_BUSY 0x0002
270 #define FPGA_CS 0x000C
271 #define FPGA_CCLK 0x0100
272 #define FPGA_DOUT 0x0400
273 #define FPGA_DIN FPGA_DOUT
290 name =
"dsbri2f.bit";
295 name =
"dsbri2m.bit";
299 name =
"ds4bri2.bit";
302 File = qBri_check_FPGAsrc(IoAdapter, name,
307 File = qBri_check_FPGAsrc(IoAdapter,
"ds4bri.bit",
325 DBG_FTL((
"FPGA download: acknowledge for FPGA memory clear missing"))
333 while (code < FileLength)
335 val = ((
word)File[code++]) << 3;
337 for (bit = 8; bit-- > 0; val <<= 1)
353 if (!(val & FPGA_BUSY))
355 DBG_FTL((
"FPGA download: chip remains in busy state (0x%04x)", val))
394 for (i = 0; i < IoAdapter->
tasks; ++
i)
399 && IoAdapter->
tst_irq(&IoAdapter->
a))
413 static void disable_qBri_interrupt(
PISDN_ADAPTER IoAdapter) {
435 static void set_common_qBri_functions(
PISDN_ADAPTER IoAdapter) {
455 IoAdapter->
load = load_qBri_hardware;
457 IoAdapter->
disIrq = disable_qBri_interrupt;
458 IoAdapter->
rstFnc = reset_qBri_hardware;
459 IoAdapter->
stop = stop_qBri_hardware;
460 IoAdapter->
trapFnc = qBri_cpu_trapped;
464 IoAdapter->
a.
io = (
void *)IoAdapter;
468 if (!IoAdapter->
tasks) {
472 set_common_qBri_functions(IoAdapter);
477 if (!IoAdapter->
tasks) {
481 set_common_qBri_functions(IoAdapter);
497 if (!IoAdapter->
tasks) {
502 if (IoAdapter->
tasks > 1) {