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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rc203soc/] [sw/] [uClinux/] [drivers/] [scsi/] [scsi_module.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1626 jcastillo
/*
2
 *  scsi_module.c Copyright (1994, 1995) Eric Youngdale.
3
 *
4
 * Support for loading low-level scsi drivers using the linux kernel loadable
5
 * module interface.
6
 *
7
 * To use, the host adapter should first define and initialize the variable
8
 * driver_template (datatype Scsi_Host_Template), and then include this file.
9
 * This should also be wrapped in a #ifdef MODULE/#endif.
10
 *
11
 * The low -level driver must also define a release function which will
12
 * free any irq assignments, release any dma channels, release any I/O
13
 * address space that might be reserved, and otherwise clean up after itself.
14
 * The idea is that the same driver should be able to be reloaded without
15
 * any difficulty.  This makes debugging new drivers easier, as you should
16
 * be able to load the driver, test it, unload, modify and reload.
17
 *
18
 * One *very* important caveat.  If the driver may need to do DMA on the
19
 * ISA bus, you must have unchecked_isa_dma set in the device template,
20
 * even if this might be changed during the detect routine.  This is
21
 * because the shpnt structure will be allocated in a special way so that
22
 * it will be below the appropriate DMA limit - thus if your driver uses
23
 * the hostdata field of shpnt, and the board must be able to access this
24
 * via DMA, the shpnt structure must be in a DMA accessible region of
25
 * memory.  This comment would be relevant for something like the buslogic
26
 * driver where there are many boards, only some of which do DMA onto the
27
 * ISA bus.  There is no convenient way of specifying whether the host
28
 * needs to be in a ISA DMA accessible region of memory when you call
29
 * scsi_register.
30
 */
31
 
32
#include <linux/module.h>
33
 
34
int init_module(void) {
35
    driver_template.usage_count = &mod_use_count_;
36
    scsi_register_module(MODULE_SCSI_HA, &driver_template);
37
    if (driver_template.present)
38
        return 0;
39
 
40
    scsi_unregister_module(MODULE_SCSI_HA, &driver_template);
41
    return -1;
42
}
43
 
44
void cleanup_module( void) {
45
    scsi_unregister_module(MODULE_SCSI_HA, &driver_template);
46
}
47
 
48
/*
49
 * Overrides for Emacs so that we almost follow Linus's tabbing style.
50
 * Emacs will notice this stuff at the end of the file and automatically
51
 * adjust the settings for this buffer only.  This must remain at the end
52
 * of the file.
53
 * ---------------------------------------------------------------------------
54
 * Local variables:
55
 * c-indent-level: 4
56
 * c-brace-imaginary-offset: 0
57
 * c-brace-offset: -4
58
 * c-argdecl-indent: 4
59
 * c-label-offset: -4
60
 * c-continued-statement-offset: 4
61
 * c-continued-brace-offset: 0
62
 * indent-tabs-mode: nil
63
 * tab-width: 8
64
 * End:
65
 */

powered by: WebSVN 2.1.0

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