patch-2.2.19 linux/drivers/isdn/eicon/linsys.c
Next file: linux/drivers/isdn/eicon/log.c
Previous file: linux/drivers/isdn/eicon/linio.c
Back to the patch index
Back to the overall index
- Lines: 168
- Date:
Sun Mar 25 11:37:32 2001
- Orig file:
v2.2.18/drivers/isdn/eicon/linsys.c
- Orig date:
Wed Dec 31 19:00:00 1969
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.18/drivers/isdn/eicon/linsys.c linux/drivers/isdn/eicon/linsys.c
@@ -0,0 +1,167 @@
+
+/*
+ *
+ * Copyright (C) Eicon Technology Corporation, 2000.
+ *
+ * Eicon File Revision : 1.10
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+
+#include <linux/sched.h>
+#undef N_DATA
+#include <linux/tqueue.h>
+
+#include <linux/smp.h>
+struct pt_regs;
+#include <linux/interrupt.h>
+#include <linux/ioport.h>
+
+#include "sys.h"
+#include "divas.h"
+#include "adapter.h"
+#include "divalog.h"
+
+#include "uxio.h"
+
+#ifdef MODULE
+void bcopy(void *pSource, void *pDest, dword dwLength)
+{
+ memcpy(pDest, pSource, dwLength);
+}
+#endif
+
+void bzero(void *pDataArea, dword dwLength)
+{
+ memset(pDataArea, 0, dwLength);
+}
+
+int Divas4BRIInitPCI(card_t *card, dia_card_t *cfg)
+{
+ /* Use UxPciConfigWrite routines to initialise PCI config space */
+
+/* wPCIcommand = 0x03;
+ cm_write_devconfig16(CMKey, PCI_COMMAND, &wPCIcommand);
+
+ wPCIcommand = 0x280;
+ cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);
+
+ bPCIcommand = 0x30;
+ cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);
+*/
+ return 0;
+}
+
+int DivasPRIInitPCI(card_t *card, dia_card_t *cfg)
+{
+ /* Use UxPciConfigWrite routines to initialise PCI config space */
+
+/* wPCIcommand = 0x03;
+ cm_write_devconfig16(CMKey, PCI_COMMAND, &wPCIcommand);
+
+ wPCIcommand = 0x280;
+ cm_write_devconfig16(CMKey, PCI_STATUS, &wPCIcommand);
+
+ bPCIcommand = 0x30;
+ cm_write_devconfig8(CMKey, PCI_LATENCY, &bPCIcommand);*/
+
+ return 0;
+}
+
+int DivasBRIInitPCI(card_t *card, dia_card_t *cfg)
+{
+ /* Need to set these platform dependent values after patching */
+
+ card->hw->reset_base = card->cfg.reset_base;
+ card->hw->io_base = card->cfg.io_base;
+
+ request_region(card->hw->reset_base,0x80,"Divas");
+ request_region(card->hw->io_base,0x20,"Divas");
+
+
+ /* Same as for PRI */
+ return DivasPRIInitPCI(card, cfg);
+}
+
+/* ######################### Stubs of routines that are not done yet ################## */
+/*void DivasLogIdi(card_t *card, ENTITY *e, int request)
+{
+}
+*/
+
+int DivasDpcSchedule(void)
+{
+ static struct tq_struct DivasTask;
+
+ DivasTask.routine = DivasDoDpc;
+ DivasTask.data = (void *) 0;
+
+ queue_task(&DivasTask, &tq_immediate);
+ mark_bh(IMMEDIATE_BH);
+
+ return 0;
+}
+
+int DivasScheduleRequestDpc(void)
+{
+ static struct tq_struct DivasTask;
+
+ DivasTask.routine = DivasDoRequestDpc;
+ DivasTask.data = (void *) 0;
+
+ queue_task(&DivasTask, &tq_immediate);
+ mark_bh(IMMEDIATE_BH);
+
+ return 0;
+}
+
+void DivasLogAdd(void *buffer, int length)
+{
+ static
+ boolean_t overflow = FALSE;
+ static
+ boolean_t busy = FALSE;
+
+ /* make sure we're not interrupting ourselves */
+
+ if (busy)
+ {
+ printk(KERN_DEBUG "Divas: Logging interrupting self !\n");
+ return;
+ }
+ busy = TRUE;
+
+ /* ignore call if daemon isn't running and we've reached limit */
+
+ if (DivasLogFifoFull())
+ {
+ if (!overflow)
+ {
+ printk(KERN_DEBUG "Divas: Trace buffer full\n");
+ overflow = TRUE;
+ }
+ busy = FALSE;
+ return;
+ }
+
+ DivasLogFifoWrite(buffer, length);
+
+ busy = FALSE;
+ return;
+}
+
+/* #################################################################################### */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)