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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [transport_class.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * transport_class.h - a generic container for all transport classes
3
 *
4
 * Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
5
 *
6
 * This file is licensed under GPLv2
7
 */
8
 
9
#ifndef _TRANSPORT_CLASS_H_
10
#define _TRANSPORT_CLASS_H_
11
 
12
#include <linux/device.h>
13
#include <linux/attribute_container.h>
14
 
15
struct transport_container;
16
 
17
struct transport_class {
18
        struct class class;
19
        int (*setup)(struct transport_container *, struct device *,
20
                     struct class_device *);
21
        int (*configure)(struct transport_container *, struct device *,
22
                         struct class_device *);
23
        int (*remove)(struct transport_container *, struct device *,
24
                      struct class_device *);
25
};
26
 
27
#define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg)                   \
28
struct transport_class cls = {                                          \
29
        .class = {                                                      \
30
                .name = nm,                                             \
31
        },                                                              \
32
        .setup = su,                                                    \
33
        .remove = rm,                                                   \
34
        .configure = cfg,                                               \
35
}
36
 
37
 
38
struct anon_transport_class {
39
        struct transport_class tclass;
40
        struct attribute_container container;
41
};
42
 
43
#define DECLARE_ANON_TRANSPORT_CLASS(cls, mtch, cfg)            \
44
struct anon_transport_class cls = {                             \
45
        .tclass = {                                             \
46
                .configure = cfg,                               \
47
        },                                                      \
48
        . container = {                                         \
49
                .match = mtch,                                  \
50
        },                                                      \
51
}
52
 
53
#define class_to_transport_class(x) \
54
        container_of(x, struct transport_class, class)
55
 
56
struct transport_container {
57
        struct attribute_container ac;
58
        struct attribute_group *statistics;
59
};
60
 
61
#define attribute_container_to_transport_container(x) \
62
        container_of(x, struct transport_container, ac)
63
 
64
void transport_remove_device(struct device *);
65
void transport_add_device(struct device *);
66
void transport_setup_device(struct device *);
67
void transport_configure_device(struct device *);
68
void transport_destroy_device(struct device *);
69
 
70
static inline void
71
transport_register_device(struct device *dev)
72
{
73
        transport_setup_device(dev);
74
        transport_add_device(dev);
75
}
76
 
77
static inline void
78
transport_unregister_device(struct device *dev)
79
{
80
        transport_remove_device(dev);
81
        transport_destroy_device(dev);
82
}
83
 
84
static inline int transport_container_register(struct transport_container *tc)
85
{
86
        return attribute_container_register(&tc->ac);
87
}
88
 
89
static inline int transport_container_unregister(struct transport_container *tc)
90
{
91
        return attribute_container_unregister(&tc->ac);
92
}
93
 
94
int transport_class_register(struct transport_class *);
95
int anon_transport_class_register(struct anon_transport_class *);
96
void transport_class_unregister(struct transport_class *);
97
void anon_transport_class_unregister(struct anon_transport_class *);
98
 
99
 
100
#endif

powered by: WebSVN 2.1.0

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