OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [uclinux/] [uClinux-2.0.x/] [drivers/] [isdn/] [pcbit/] [module.c] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 199 simons
/*
2
 * Copyright (C) 1996 Universidade de Lisboa
3
 *
4
 * Written by Pedro Roque Marques (roque@di.fc.ul.pt)
5
 *
6
 * This software may be used and distributed according to the terms of
7
 * the GNU Public License, incorporated herein by reference.
8
 */
9
 
10
/*
11
 *        PCBIT-D module support
12
 */
13
 
14
#include <linux/module.h>
15
 
16
#include <linux/sched.h>
17
#include <linux/string.h>
18
#include <linux/kernel.h>
19
#include <linux/tqueue.h>
20
#include <linux/skbuff.h>
21
 
22
#include <linux/isdnif.h>
23
#include "pcbit.h"
24
 
25
static int mem[MAX_PCBIT_CARDS] = {0, };
26
static int irq[MAX_PCBIT_CARDS] = {0, };
27
 
28
int num_boards;
29
struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS] = {0, 0, 0, 0};
30
 
31
int init_module(void);
32
void cleanup_module(void);
33
 
34
extern void pcbit_terminate(int board);
35
extern int pcbit_init_dev(int board, int mem_base, int irq);
36
 
37
#ifdef MODULE
38
#if (LINUX_VERSION_CODE > 0x020111)
39
MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_PCBIT_CARDS) "i");
40
MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_PCBIT_CARDS) "i");
41
#endif
42
#define pcbit_init init_module
43
#endif
44
 
45
int pcbit_init(void)
46
{
47
        int board;
48
 
49
        num_boards = 0;
50
 
51
        printk(KERN_INFO
52
               "PCBIT-D device driver v 0.5 - "
53
               "Copyright (C) 1996 Universidade de Lisboa\n");
54
 
55
        if (mem[0] || irq[0])
56
        {
57
                for (board=0; board < MAX_PCBIT_CARDS && mem[board] && irq[board]; board++)
58
                {
59
                        if (!mem[board])
60
                                mem[board] = 0xD0000;
61
                        if (!irq[board])
62
                                irq[board] = 5;
63
 
64
                        if (pcbit_init_dev(board, mem[board], irq[board]) == 0)
65
                                num_boards++;
66
 
67
                        else
68
                        {
69
                                printk(KERN_WARNING
70
                                       "pcbit_init failed for dev %d",
71
                                       board + 1);
72
                                return -EIO;
73
                        }
74
                }
75
        }
76
 
77
        /* Hardcoded default settings detection */
78
 
79
        if (!num_boards)
80
        {
81
                printk(KERN_INFO
82
                       "Trying to detect board using default settings\n");
83
                if (pcbit_init_dev(0, 0xD0000, 5) == 0)
84
                        num_boards++;
85
                else
86
                        return -EIO;
87
        }
88
 
89
        /* No symbols to export, hide all symbols */
90
#if (LINUX_VERSION_CODE < 0x020111)
91
        register_symtab(NULL);
92
#else
93
        EXPORT_NO_SYMBOLS;
94
#endif
95
 
96
        return 0;
97
}
98
 
99
#ifdef MODULE
100
void cleanup_module(void)
101
{
102
        int board;
103
 
104
        for (board = 0; board < num_boards; board++)
105
                pcbit_terminate(board);
106
        printk(KERN_INFO
107
               "PCBIT-D module unloaded\n");
108
}
109
 
110
#else
111
void pcbit_setup(char *str, int *ints)
112
{
113
        int i, j, argc;
114
 
115
        argc = ints[0];
116
        i = 0;
117
        j = 1;
118
 
119
        while (argc && (i<MAX_PCBIT_CARDS)) {
120
 
121
                if (argc) {
122
                        mem[i]  = ints[j];
123
                        j++; argc--;
124
                }
125
 
126
                if (argc) {
127
                        irq[i]  = ints[j];
128
                        j++; argc--;
129
                }
130
 
131
                i++;
132
        }
133
}
134
#endif
135
 
136
 
137
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.