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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-mips/] [au1000_usbdev.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1276 phoenix
/*
2
 * BRIEF MODULE DESCRIPTION
3
 *      Au1000 USB Device-Side Driver
4
 *
5
 * Copyright 2001 MontaVista Software Inc.
6
 * Author: MontaVista Software, Inc.
7
 *              stevel@mvista.com or source@mvista.com
8
 *
9
 *  This program is free software; you can redistribute  it and/or modify it
10
 *  under  the terms of  the GNU General  Public License as published by the
11
 *  Free Software Foundation;  either version 2 of the  License, or (at your
12
 *  option) any later version.
13
 *
14
 *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
15
 *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
16
 *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
17
 *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
18
 *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19
 *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
20
 *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
21
 *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
22
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23
 *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
 *
25
 *  You should have received a copy of the  GNU General Public License along
26
 *  with this program; if not, write  to the Free Software Foundation, Inc.,
27
 *  675 Mass Ave, Cambridge, MA 02139, USA.
28
 */
29
 
30
#define USBDEV_REV 0x0110 // BCD
31
#define USBDEV_EP0_MAX_PACKET_SIZE 64
32
 
33
typedef enum {
34
        ATTACHED = 0,
35
        POWERED,
36
        DEFAULT,
37
        ADDRESS,
38
        CONFIGURED
39
} usbdev_state_t;
40
 
41
typedef enum {
42
        CB_NEW_STATE = 0,
43
        CB_PKT_COMPLETE
44
} usbdev_cb_type_t;
45
 
46
 
47
typedef struct usbdev_pkt {
48
        int                ep_addr;    // ep addr this packet routed to
49
        int                size;       // size of payload in bytes
50
        unsigned           status;     // packet status
51
        struct usbdev_pkt* next;       // function layer can't touch this
52
        u8                 payload[0]; // the payload
53
} usbdev_pkt_t;
54
 
55
#define PKT_STATUS_ACK  (1<<0)
56
#define PKT_STATUS_NAK  (1<<1)
57
#define PKT_STATUS_SU   (1<<2)
58
 
59
extern int usbdev_init(struct usb_device_descriptor* dev_desc,
60
                       struct usb_config_descriptor* config_desc,
61
                       struct usb_interface_descriptor* if_desc,
62
                       struct usb_endpoint_descriptor* ep_desc,
63
                       struct usb_string_descriptor* str_desc[],
64
                       void (*cb)(usbdev_cb_type_t, unsigned long, void *),
65
                       void* cb_data);
66
 
67
extern void usbdev_exit(void);
68
 
69
extern int usbdev_alloc_packet  (int ep_addr, int data_size,
70
                                 usbdev_pkt_t** pkt);
71
extern int usbdev_send_packet   (int ep_addr, usbdev_pkt_t* pkt);
72
extern int usbdev_receive_packet(int ep_addr, usbdev_pkt_t** pkt);
73
extern int usbdev_get_byte_count(int ep_addr);

powered by: WebSVN 2.1.0

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