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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [tc.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
/*
2
 *      Interface to the TURBOchannel related routines.
3
 *
4
 *      Copyright (c) 1998  Harald Koerfgen
5
 *      Copyright (c) 2005  James Simmons
6
 *      Copyright (c) 2006  Maciej W. Rozycki
7
 *
8
 *      Based on:
9
 *
10
 *      "TURBOchannel Firmware Specification", EK-TCAAD-FS-004
11
 *
12
 *      from Digital Equipment Corporation.
13
 *
14
 *      This file is subject to the terms and conditions of the GNU
15
 *      General Public License.  See the file "COPYING" in the main
16
 *      directory of this archive for more details.
17
 */
18
#ifndef _LINUX_TC_H
19
#define _LINUX_TC_H
20
 
21
#include <linux/compiler.h>
22
#include <linux/device.h>
23
#include <linux/ioport.h>
24
#include <linux/types.h>
25
 
26
/*
27
 * Offsets for the ROM header locations for TURBOchannel cards.
28
 */
29
#define TC_OLDCARD      0x3c0000
30
#define TC_NEWCARD      0x000000
31
 
32
#define TC_ROM_WIDTH    0x3e0
33
#define TC_ROM_STRIDE   0x3e4
34
#define TC_ROM_SIZE     0x3e8
35
#define TC_SLOT_SIZE    0x3ec
36
#define TC_PATTERN0     0x3f0
37
#define TC_PATTERN1     0x3f4
38
#define TC_PATTERN2     0x3f8
39
#define TC_PATTERN3     0x3fc
40
#define TC_FIRM_VER     0x400
41
#define TC_VENDOR       0x420
42
#define TC_MODULE       0x440
43
#define TC_FIRM_TYPE    0x460
44
#define TC_FLAGS        0x470
45
#define TC_ROM_OBJECTS  0x480
46
 
47
/*
48
 * Information obtained through the get_tcinfo() PROM call.
49
 */
50
struct tcinfo {
51
        s32             revision;       /* Hardware revision level. */
52
        s32             clk_period;     /* Clock period in nanoseconds. */
53
        s32             slot_size;      /* Slot size in megabytes. */
54
        s32             io_timeout;     /* I/O timeout in cycles. */
55
        s32             dma_range;      /* DMA address range in megabytes. */
56
        s32             max_dma_burst;  /* Maximum DMA burst length. */
57
        s32             parity;         /* System module supports TC parity. */
58
        s32             reserved[4];
59
};
60
 
61
/*
62
 * TURBOchannel bus.
63
 */
64
struct tc_bus {
65
        struct list_head devices;       /* List of devices on this bus. */
66
        struct resource resource[2];    /* Address space routed to this bus. */
67
 
68
        struct device   dev;
69
        char            name[13];
70
        resource_size_t slot_base;
71
        resource_size_t ext_slot_base;
72
        resource_size_t ext_slot_size;
73
        int             num_tcslots;
74
        struct tcinfo   info;
75
};
76
 
77
/*
78
 * TURBOchannel device.
79
 */
80
struct tc_dev {
81
        struct list_head node;          /* Node in list of all TC devices. */
82
        struct tc_bus   *bus;           /* Bus this device is on. */
83
        struct tc_driver *driver;       /* Which driver has allocated this
84
                                           device. */
85
        struct device   dev;            /* Generic device interface. */
86
        struct resource resource;       /* Address space of this device. */
87
        char            vendor[9];
88
        char            name[9];
89
        char            firmware[9];
90
        int             interrupt;
91
        int             slot;
92
};
93
 
94
#define to_tc_dev(n) container_of(n, struct tc_dev, dev)
95
 
96
struct tc_device_id {
97
        char            vendor[9];
98
        char            name[9];
99
};
100
 
101
/*
102
 * TURBOchannel driver.
103
 */
104
struct tc_driver {
105
        struct list_head node;
106
        const struct tc_device_id *id_table;
107
        struct device_driver driver;
108
};
109
 
110
#define to_tc_driver(drv) container_of(drv, struct tc_driver, driver)
111
 
112
/*
113
 * Return TURBOchannel clock frequency in Hz.
114
 */
115
static inline unsigned long tc_get_speed(struct tc_bus *tbus)
116
{
117
        return 100000 * (10000 / (unsigned long)tbus->info.clk_period);
118
}
119
 
120
#ifdef CONFIG_TC
121
 
122
extern struct bus_type tc_bus_type;
123
 
124
extern int tc_register_driver(struct tc_driver *tdrv);
125
extern void tc_unregister_driver(struct tc_driver *tdrv);
126
 
127
#else /* !CONFIG_TC */
128
 
129
static inline int tc_register_driver(struct tc_driver *tdrv) { return 0; }
130
static inline void tc_unregister_driver(struct tc_driver *tdrv) { }
131
 
132
#endif /* CONFIG_TC */
133
 
134
/*
135
 * These have to be provided by the architecture.
136
 */
137
extern int tc_preadb(u8 *valp, void __iomem *addr);
138
extern int tc_bus_get_info(struct tc_bus *tbus);
139
extern void tc_device_get_irq(struct tc_dev *tdev);
140
 
141
#endif /* _LINUX_TC_H */

powered by: WebSVN 2.1.0

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