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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [usb/] [auerchain.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*****************************************************************************/
2
/*
3
 *      auerchain.h  --  Auerswald PBX/System Telephone chained urb support.
4
 *
5
 *      Copyright (C) 2002  Wolfgang Mües (wolfgang@iksw-muees.de)
6
 *
7
 *      This program is free software; you can redistribute it and/or modify
8
 *      it under the terms of the GNU General Public License as published by
9
 *      the Free Software Foundation; either version 2 of the License, or
10
 *      (at your option) any later version.
11
 *
12
 *      This program is distributed in the hope that it will be useful,
13
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 *      GNU General Public License for more details.
16
 *
17
 *      You should have received a copy of the GNU General Public License
18
 *      along with this program; if not, write to the Free Software
19
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
 */
21
 /*****************************************************************************/
22
 
23
/* This module is used to make a FIFO of URBs, to serialize the submit.
24
 * This may be used to serialize control messages, which is not supported
25
 * by the Linux USB subsystem.
26
 */
27
 
28
#ifndef AUERCHAIN_H
29
#define AUERCHAIN_H
30
 
31
#include <linux/usb.h>
32
 
33
/* urb chain element */
34
struct auerchain;                       /* forward for circular reference */
35
struct auerchainelement {
36
        struct auerchain *chain;        /* pointer to the chain to which this element belongs */
37
        struct urb *urbp;               /* pointer to attached urb */
38
        void *context;                  /* saved URB context */
39
        usb_complete_t complete;        /* saved URB completion function */
40
        struct list_head list;          /* to include element into a list */
41
};
42
 
43
/* urb chain */
44
struct auerchain {
45
        struct auerchainelement *active;/* element which is submitted to urb */
46
        spinlock_t lock;                /* protection agains interrupts */
47
        struct list_head waiting_list;  /* list of waiting elements */
48
        struct list_head free_list;     /* list of available elements */
49
};
50
 
51
/* urb blocking completion helper struct */
52
struct auerchain_chs {
53
        wait_queue_head_t wqh;          /* wait for completion */
54
        unsigned int done;              /* completion flag */
55
};
56
 
57
 
58
/* Function prototypes */
59
int auerchain_submit_urb_list(struct auerchain *acp, struct urb *urb,
60
                              int early);
61
 
62
int auerchain_submit_urb(struct auerchain *acp, struct urb *urb);
63
 
64
int auerchain_unlink_urb(struct auerchain *acp, struct urb *urb);
65
 
66
void auerchain_unlink_all(struct auerchain *acp);
67
 
68
void auerchain_free(struct auerchain *acp);
69
 
70
void auerchain_init(struct auerchain *acp);
71
 
72
int auerchain_setup(struct auerchain *acp, unsigned int numElements);
73
 
74
int auerchain_control_msg(struct auerchain *acp, struct usb_device *dev,
75
                          unsigned int pipe, __u8 request,
76
                          __u8 requesttype, __u16 value, __u16 index,
77
                          void *data, __u16 size, int timeout);
78
 
79
#endif  /* AUERCHAIN_H */

powered by: WebSVN 2.1.0

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