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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [tc/] [tc-driver.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 *      TURBOchannel driver services.
3
 *
4
 *      Copyright (c) 2005  James Simmons
5
 *      Copyright (c) 2006  Maciej W. Rozycki
6
 *
7
 *      Loosely based on drivers/dio/dio-driver.c and
8
 *      drivers/pci/pci-driver.c.
9
 *
10
 *      This file is subject to the terms and conditions of the GNU
11
 *      General Public License.  See the file "COPYING" in the main
12
 *      directory of this archive for more details.
13
 */
14
 
15
#include <linux/init.h>
16
#include <linux/module.h>
17
#include <linux/tc.h>
18
 
19
/**
20
 * tc_register_driver - register a new TC driver
21
 * @drv: the driver structure to register
22
 *
23
 * Adds the driver structure to the list of registered drivers
24
 * Returns a negative value on error, otherwise 0.
25
 * If no error occurred, the driver remains registered even if
26
 * no device was claimed during registration.
27
 */
28
int tc_register_driver(struct tc_driver *tdrv)
29
{
30
        return driver_register(&tdrv->driver);
31
}
32
EXPORT_SYMBOL(tc_register_driver);
33
 
34
/**
35
 * tc_unregister_driver - unregister a TC driver
36
 * @drv: the driver structure to unregister
37
 *
38
 * Deletes the driver structure from the list of registered TC drivers,
39
 * gives it a chance to clean up by calling its remove() function for
40
 * each device it was responsible for, and marks those devices as
41
 * driverless.
42
 */
43
void tc_unregister_driver(struct tc_driver *tdrv)
44
{
45
        driver_unregister(&tdrv->driver);
46
}
47
EXPORT_SYMBOL(tc_unregister_driver);
48
 
49
/**
50
 * tc_match_device - tell if a TC device structure has a matching
51
 *                   TC device ID structure
52
 * @tdrv: the TC driver to earch for matching TC device ID strings
53
 * @tdev: the TC device structure to match against
54
 *
55
 * Used by a driver to check whether a TC device present in the
56
 * system is in its list of supported devices.  Returns the matching
57
 * tc_device_id structure or %NULL if there is no match.
58
 */
59
const struct tc_device_id *tc_match_device(struct tc_driver *tdrv,
60
                                           struct tc_dev *tdev)
61
{
62
        const struct tc_device_id *id = tdrv->id_table;
63
 
64
        if (id) {
65
                while (id->name[0] || id->vendor[0]) {
66
                        if (strcmp(tdev->name, id->name) == 0 &&
67
                            strcmp(tdev->vendor, id->vendor) == 0)
68
                                return id;
69
                        id++;
70
                }
71
        }
72
        return NULL;
73
}
74
EXPORT_SYMBOL(tc_match_device);
75
 
76
/**
77
 * tc_bus_match - Tell if a device structure has a matching
78
 *                TC device ID structure
79
 * @dev: the device structure to match against
80
 * @drv: the device driver to search for matching TC device ID strings
81
 *
82
 * Used by a driver to check whether a TC device present in the
83
 * system is in its list of supported devices.  Returns 1 if there
84
 * is a match or 0 otherwise.
85
 */
86
static int tc_bus_match(struct device *dev, struct device_driver *drv)
87
{
88
        struct tc_dev *tdev = to_tc_dev(dev);
89
        struct tc_driver *tdrv = to_tc_driver(drv);
90
        const struct tc_device_id *id;
91
 
92
        id = tc_match_device(tdrv, tdev);
93
        if (id)
94
                return 1;
95
 
96
        return 0;
97
}
98
 
99
struct bus_type tc_bus_type = {
100
        .name   = "tc",
101
        .match  = tc_bus_match,
102
};
103
EXPORT_SYMBOL(tc_bus_type);
104
 
105
static int __init tc_driver_init(void)
106
{
107
        return bus_register(&tc_bus_type);
108
}
109
 
110
postcore_initcall(tc_driver_init);

powered by: WebSVN 2.1.0

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