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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [eisa.h] - Blame information for rev 81

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
#ifndef _LINUX_EISA_H
2
#define _LINUX_EISA_H
3
 
4
#include <linux/ioport.h>
5
#include <linux/device.h>
6
#include <linux/mod_devicetable.h>
7
 
8
#define EISA_MAX_SLOTS 8
9
 
10
#define EISA_MAX_RESOURCES 4
11
 
12
/* A few EISA constants/offsets... */
13
 
14
#define EISA_DMA1_STATUS            8
15
#define EISA_INT1_CTRL           0x20
16
#define EISA_INT1_MASK           0x21
17
#define EISA_INT2_CTRL           0xA0
18
#define EISA_INT2_MASK           0xA1
19
#define EISA_DMA2_STATUS         0xD0
20
#define EISA_DMA2_WRITE_SINGLE   0xD4
21
#define EISA_EXT_NMI_RESET_CTRL 0x461
22
#define EISA_INT1_EDGE_LEVEL    0x4D0
23
#define EISA_INT2_EDGE_LEVEL    0x4D1
24
#define EISA_VENDOR_ID_OFFSET   0xC80
25
#define EISA_CONFIG_OFFSET      0xC84
26
 
27
#define EISA_CONFIG_ENABLED         1
28
#define EISA_CONFIG_FORCED          2
29
 
30
/* There is not much we can say about an EISA device, apart from
31
 * signature, slot number, and base address. dma_mask is set by
32
 * default to parent device mask..*/
33
 
34
struct eisa_device {
35
        struct eisa_device_id id;
36
        int                   slot;
37
        int                   state;
38
        unsigned long         base_addr;
39
        struct resource       res[EISA_MAX_RESOURCES];
40
        u64                   dma_mask;
41
        struct device         dev; /* generic device */
42
#ifdef CONFIG_EISA_NAMES
43
        char                  pretty_name[DEVICE_NAME_SIZE];
44
#endif
45
};
46
 
47
#define to_eisa_device(n) container_of(n, struct eisa_device, dev)
48
 
49
static inline int eisa_get_region_index (void *addr)
50
{
51
        unsigned long x = (unsigned long) addr;
52
 
53
        x &= 0xc00;
54
        return (x >> 12);
55
}
56
 
57
struct eisa_driver {
58
        const struct eisa_device_id *id_table;
59
        struct device_driver         driver;
60
};
61
 
62
#define to_eisa_driver(drv) container_of(drv,struct eisa_driver, driver)
63
 
64
/* These external functions are only available when EISA support is enabled. */
65
#ifdef CONFIG_EISA
66
 
67
extern struct bus_type eisa_bus_type;
68
int eisa_driver_register (struct eisa_driver *edrv);
69
void eisa_driver_unregister (struct eisa_driver *edrv);
70
 
71
#else /* !CONFIG_EISA */
72
 
73
static inline int eisa_driver_register (struct eisa_driver *edrv) { return 0; }
74
static inline void eisa_driver_unregister (struct eisa_driver *edrv) { }
75
 
76
#endif /* !CONFIG_EISA */
77
 
78
/* Mimics pci.h... */
79
static inline void *eisa_get_drvdata (struct eisa_device *edev)
80
{
81
        return edev->dev.driver_data;
82
}
83
 
84
static inline void eisa_set_drvdata (struct eisa_device *edev, void *data)
85
{
86
        edev->dev.driver_data = data;
87
}
88
 
89
/* The EISA root device. There's rumours about machines with multiple
90
 * busses (PA-RISC ?), so we try to handle that. */
91
 
92
struct eisa_root_device {
93
        struct device   *dev;    /* Pointer to bridge device */
94
        struct resource *res;
95
        unsigned long    bus_base_addr;
96
        int              slots;  /* Max slot number */
97
        int              force_probe; /* Probe even when no slot 0 */
98
        u64              dma_mask; /* from bridge device */
99
        int              bus_nr; /* Set by eisa_root_register */
100
        struct resource  eisa_root_res; /* ditto */
101
};
102
 
103
int eisa_root_register (struct eisa_root_device *root);
104
 
105
#ifdef CONFIG_EISA
106
extern int EISA_bus;
107
#else
108
# define EISA_bus 0
109
#endif
110
 
111
#endif

powered by: WebSVN 2.1.0

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