]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/dev/scd/scdvar.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / dev / scd / scdvar.h
1 /*
2  * $FreeBSD$
3  */
4
5 struct scd_mbx {
6         short           retry;
7         short           nblk;
8         int             sz;
9         u_long          skip;
10         struct bio *    bp;
11         short           count;
12 };
13
14 struct scd_data {
15         char                    double_speed;
16         char *                  name;
17         short                   flags;
18         int                     blksize;
19         u_long                  disksize;
20         int                     openflag;
21         struct {
22                 unsigned int    adr :4;
23                 unsigned int    ctl :4; /* xcdplayer needs this */
24                 unsigned char   start_msf[3];
25         } toc[MAX_TRACKS];
26         short                   first_track;
27         short                   last_track;
28         struct  ioc_play_msf    last_play;
29
30         short                   audio_status;
31         struct bio_queue_head   head;        /* head of bio queue */
32         struct scd_mbx          mbx;
33 };
34
35 struct scd_softc {
36         device_t                dev;
37         struct cdev *scd_dev_t;
38         int                     debug;
39
40         struct resource *       port;
41         int                     port_rid;
42         int                     port_type;
43         bus_space_tag_t         port_bst;
44         bus_space_handle_t      port_bsh;
45
46         struct mtx              mtx;
47
48         struct callout_handle   ch;
49         int                     ch_state;
50         struct scd_mbx *        ch_mbxsave;
51
52         struct scd_data         data;
53 };
54
55 #define SCD_LOCK(_sc)           splx(&(_sc)->mtx
56 #define SCD_UNLOCK(_sc)         splx(&(_sc)->mtx
57
58 #define SCD_READ(_sc, _reg) \
59         bus_space_read_1(_sc->port_bst, _sc->port_bsh, _reg)
60 #define SCD_READ_MULTI(_sc, _reg, _addr, _count) \
61         bus_space_read_multi_1(_sc->port_bst, _sc->port_bsh, _reg, _addr, _count)
62 #define SCD_WRITE(_sc, _reg, _val) \
63         bus_space_write_1(_sc->port_bst, _sc->port_bsh, _reg, _val)
64
65 int     scd_probe       (struct scd_softc *);
66 int     scd_attach      (struct scd_softc *);