mcdvar.h revision 130585
1/*
2 * $FreeBSD: head/sys/dev/mcd/mcdvar.h 130585 2004-06-16 09:47:26Z phk $
3 */
4
5struct mcd_mbx {
6	short		retry;
7	short		nblk;
8	int		sz;
9	u_long		skip;
10	struct bio *	bp;
11	short		count;
12	short		mode;
13};
14
15struct mcd_data {
16	short			type;
17	char *			name;
18	short			config;
19	short			flags;
20	u_char			read_command;
21	short			status;
22	int			blksize;
23	u_long			disksize;
24	int			partflags;
25	int			openflags;
26	struct mcd_volinfo	volinfo;
27	struct mcd_qchninfo	toc[MCD_MAXTOCS];
28	short			audio_status;
29	short			curr_mode;
30	struct mcd_read2	lastpb;
31	short			debug;
32	struct bio_queue_head	head;	     /* head of bio queue */
33	struct mcd_mbx		mbx;
34};
35
36struct mcd_softc {
37	device_t		dev;
38	struct cdev *mcd_dev_t;
39	int			debug;
40
41	struct resource *	port;
42	int			port_rid;
43	int			port_type;
44	bus_space_tag_t		port_bst;
45	bus_space_handle_t	port_bsh;
46
47	struct resource *	irq;
48	int			irq_rid;
49	int			irq_type;
50	void *			irq_ih;
51
52	struct resource *	drq;
53	int			drq_rid;
54	int			drq_type;
55
56	struct mtx		mtx;
57
58	struct callout_handle	ch;
59	int			ch_state;
60	struct mcd_mbx *	ch_mbxsave;
61
62	struct mcd_data		data;
63};
64
65#define	MCD_LOCK(_sc)		splx(&(_sc)->mtx
66#define	MCD_UNLOCK(_sc)		splx(&(_sc)->mtx
67
68#define	MCD_READ(_sc, _reg) \
69	bus_space_read_1(_sc->port_bst, _sc->port_bsh, _reg)
70#define	MCD_WRITE(_sc, _reg, _val) \
71	bus_space_write_1(_sc->port_bst, _sc->port_bsh, _reg, _val)
72
73int	mcd_probe	(struct mcd_softc *);
74int	mcd_attach	(struct mcd_softc *);
75