Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_tlsv12/sys/src/cmd/usb/usbd/usbd.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Hub Hub;
2
typedef struct Port Port;
3
typedef struct DHub DHub;
4
typedef struct Devtab Devtab;
5
typedef struct Usbfs Usbfs;
6
 
7
enum
8
{
9
	Stack	= 32*1024,
10
 
11
	Dhub	= 0x29,		/* hub descriptor type */
12
	Dhublen = 9,		/* hub descriptor length */
13
 
14
	/* hub class feature selectors */
15
	Fhublocalpower	= 0,
16
	Fhubovercurrent	= 1,
17
 
18
	Fportconnection	= 0,
19
	Fportenable	= 1,
20
	Fportsuspend	= 2,
21
	Fportovercurrent = 3,
22
	Fportreset	= 4,
23
	Fportpower	= 8,
24
	Fportlowspeed	= 9,
25
	Fcportconnection	= 16,
26
	Fcportenable	= 17,
27
	Fcportsuspend	= 18,
28
	Fcportovercurrent= 19,
29
	Fcportreset	= 20,
30
	Fportindicator	= 22,
31
 
32
	/* Port status and status change bits
33
	 * Constants at /sys/src/9/pc/usb.h starting with HP-
34
	 * must have the same values or root hubs won't work.
35
	 */
36
	PSpresent	= 0x0001,
37
	PSenable	= 0x0002,
38
	PSsuspend	= 0x0004,
39
	PSovercurrent	= 0x0008,
40
	PSreset		= 0x0010,
41
	PSpower		= 0x0100,
42
	PSslow		= 0x0200,
43
	PShigh		= 0x0400,
44
 
45
	PSstatuschg	= 0x10000,	/* PSpresent changed */
46
	PSchange	= 0x20000,	/* PSenable changed */
47
 
48
 
49
	/* port/device state */
50
	Pdisabled = 0,		/* must be 0 */
51
	Pattached,
52
	Pconfiged,
53
 
54
	/* Delays, timeouts (ms) */
55
	Spawndelay	= 100,		/* how often may we re-spawn a driver */
56
	Connectdelay	= 500,		/* how much to wait after a connect */
57
	Resetdelay	= 20,		/* how much to wait after a reset */
58
	Enabledelay	= 20,		/* how much to wait after an enable */
59
	Powerdelay	= 100,		/* after powering up ports */
60
	Pollms		= 250, 		/* port poll interval */
61
	Chgdelay	= 100,		/* waiting for port become stable */
62
	Chgtmout	= 1000,		/* ...but at most this much */
63
 
64
	/*
65
	 * device tab for embedded usb drivers.
66
	 */
67
	DCL = 0x01000000,		/* csp identifies just class */
68
	DSC = 0x02000000,		/* csp identifies just subclass */
69
	DPT = 0x04000000,		/* csp identifies just proto */
70
 
71
};
72
 
73
struct Hub
74
{
75
	uchar	pwrmode;
76
	uchar	compound;
77
	uchar	pwrms;		/* time to wait in ms */
78
	uchar	maxcurrent;	/*    after powering port*/
79
	int	leds;		/* has port indicators? */
80
	int	maxpkt;
81
	uchar	nport;
82
	Port	*port;
83
	int	failed;		/* I/O error while enumerating */
84
	int	isroot;		/* set if root hub */
85
	Dev	*dev;		/* for this hub */
86
	Hub	*next;		/* in list of hubs */
87
};
88
 
89
struct Port
90
{
91
	int	state;		/* state of the device */
92
	int	sts;		/* old port status */
93
	uchar	removable;
94
	uchar	pwrctl;
95
	Dev	*dev;		/* attached device (if non-nil) */
96
	Hub	*hub;		/* non-nil if hub attached */
97
	int	devnb;		/* device number */
98
	uvlong	*devmaskp;	/* ptr to dev mask */
99
};
100
 
101
 
102
/* USB HUB descriptor */
103
struct DHub
104
{
105
	uchar	bLength;
106
	uchar	bDescriptorType;
107
	uchar	bNbrPorts;
108
	uchar	wHubCharacteristics[2];
109
	uchar	bPwrOn2PwrGood;
110
	uchar	bHubContrCurrent;
111
	uchar	DeviceRemovable[1];	/* variable length */
112
};
113
 
114
struct Devtab
115
{
116
	char	*name;
117
	int	(*init)(Dev*, int, char**);	/* nil if external */
118
	int	csps[4];
119
	int	vid;
120
	int	did;
121
	char	*args;
122
	uvlong	devmask;
123
	int	noauto;
124
};
125
 
126
 
127
Hub*	newhub(char *fn, Dev *d);
128
int	startdev(Port *pp);
129
int	getdevnb(uvlong *maskp);
130
void	putdevnb(uvlong *maskp, int nb);
131
void	threadmain(int argc, char **argv);
132
 
133
extern Usbfs usbdfsops;