mcdvar.h revision 104445
1104445Smdodd/*
2104445Smdodd * $FreeBSD: head/sys/dev/mcd/mcdvar.h 104445 2002-10-04 07:14:19Z mdodd $
3104445Smdodd */
4104445Smdodd
5104445Smdoddstruct mcd_mbx {
6104445Smdodd	short		unit;
7104445Smdodd	short		port;
8104445Smdodd	short		retry;
9104445Smdodd	short		nblk;
10104445Smdodd	int		sz;
11104445Smdodd	u_long		skip;
12104445Smdodd	struct bio *	bp;
13104445Smdodd	int		p_offset;
14104445Smdodd	short		count;
15104445Smdodd	short		mode;
16104445Smdodd};
17104445Smdodd
18104445Smdoddstruct mcd_data {
19104445Smdodd	short			type;
20104445Smdodd	char *			name;
21104445Smdodd	short			config;
22104445Smdodd	short			flags;
23104445Smdodd	u_char			read_command;
24104445Smdodd	short			status;
25104445Smdodd	int			blksize;
26104445Smdodd	u_long			disksize;
27104445Smdodd	int			iobase;
28104445Smdodd	struct disklabel	dlabel;
29104445Smdodd	int			partflags[MAXPARTITIONS];
30104445Smdodd	int			openflags;
31104445Smdodd	struct mcd_volinfo	volinfo;
32104445Smdodd	struct mcd_qchninfo	toc[MCD_MAXTOCS];
33104445Smdodd	short			audio_status;
34104445Smdodd	short			curr_mode;
35104445Smdodd	struct mcd_read2	lastpb;
36104445Smdodd	short			debug;
37104445Smdodd	struct bio_queue_head	head;	     /* head of bio queue */
38104445Smdodd	struct mcd_mbx		mbx;
39104445Smdodd};
40104445Smdodd
41104445Smdoddstruct mcd_softc {
42104445Smdodd	device_t		dev;
43104445Smdodd	dev_t			mcd_dev_t[3];
44104445Smdodd	int			debug;
45104445Smdodd
46104445Smdodd	struct resource *	port;
47104445Smdodd	int			port_rid;
48104445Smdodd	int			port_type;
49104445Smdodd	bus_space_tag_t		port_bst;
50104445Smdodd	bus_space_handle_t	port_bsh;
51104445Smdodd
52104445Smdodd	struct resource *	irq;
53104445Smdodd	int			irq_rid;
54104445Smdodd	int			irq_type;
55104445Smdodd	void *			irq_ih;
56104445Smdodd
57104445Smdodd	struct resource *	drq;
58104445Smdodd	int			drq_rid;
59104445Smdodd	int			drq_type;
60104445Smdodd
61104445Smdodd	struct mtx		mtx;
62104445Smdodd
63104445Smdodd	struct callout_handle	ch;
64104445Smdodd	int			ch_state;
65104445Smdodd	struct mcd_mbx *	ch_mbxsave;
66104445Smdodd
67104445Smdodd	struct mcd_data		data;
68104445Smdodd};
69104445Smdodd
70104445Smdodd#define	MCD_LOCK(_sc)		splx(&(_sc)->mtx
71104445Smdodd#define	MCD_UNLOCK(_sc)		splx(&(_sc)->mtx
72104445Smdodd
73104445Smdodd#define	MCD_READ(_sc, _reg) \
74104445Smdodd	bus_space_read_1(_sc->port_bst, _sc->port_bsh, _reg)
75104445Smdodd#define	MCD_WRITE(_sc, _reg, _val) \
76104445Smdodd	bus_space_write_1(_sc->port_bst, _sc->port_bsh, _reg, _val)
77104445Smdodd
78104445Smdoddint	mcd_probe	(struct mcd_softc *);
79104445Smdoddint	mcd_attach	(struct mcd_softc *);
80