diff options
author | mdodd <mdodd@FreeBSD.org> | 2002-11-05 09:37:32 +0000 |
---|---|---|
committer | mdodd <mdodd@FreeBSD.org> | 2002-11-05 09:37:32 +0000 |
commit | a7a511811501bf4ea163053b4fa97a83173a6d91 (patch) | |
tree | bcffe3131f9b6eec894a5aef875b5c2270b5f82c /sys/dev/scd/scdvar.h | |
parent | 762ce3134537efee15aa7b8d19a43f565535c4ff (diff) | |
download | FreeBSD-src-a7a511811501bf4ea163053b4fa97a83173a6d91.zip FreeBSD-src-a7a511811501bf4ea163053b4fa97a83173a6d91.tar.gz |
- Convert to newbus, bus_space etc.
- Move to MI space.
Tested on: i386
Diffstat (limited to 'sys/dev/scd/scdvar.h')
-rw-r--r-- | sys/dev/scd/scdvar.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/sys/dev/scd/scdvar.h b/sys/dev/scd/scdvar.h new file mode 100644 index 0000000..d7faa88 --- /dev/null +++ b/sys/dev/scd/scdvar.h @@ -0,0 +1,68 @@ +/* + * $FreeBSD$ + */ + +struct scd_mbx { + short retry; + short nblk; + int sz; + u_long skip; + struct bio * bp; + int p_offset; + short count; +}; + +struct scd_data { + char double_speed; + char * name; + short flags; + int blksize; + u_long disksize; + struct disklabel dlabel; + int openflag; + struct { + unsigned int adr :4; + unsigned int ctl :4; /* xcdplayer needs this */ + unsigned char start_msf[3]; + } toc[MAX_TRACKS]; + short first_track; + short last_track; + struct ioc_play_msf last_play; + + short audio_status; + struct bio_queue_head head; /* head of bio queue */ + struct scd_mbx mbx; +}; + +struct scd_softc { + device_t dev; + dev_t scd_dev_t; + int debug; + + struct resource * port; + int port_rid; + int port_type; + bus_space_tag_t port_bst; + bus_space_handle_t port_bsh; + + struct mtx mtx; + + struct callout_handle ch; + int ch_state; + struct scd_mbx * ch_mbxsave; + + struct scd_data data; +}; + +#define SCD_LOCK(_sc) splx(&(_sc)->mtx +#define SCD_UNLOCK(_sc) splx(&(_sc)->mtx + +#define SCD_READ(_sc, _reg) \ + bus_space_read_1(_sc->port_bst, _sc->port_bsh, _reg) +#define SCD_READ_MULTI(_sc, _reg, _addr, _count) \ + bus_space_read_multi_1(_sc->port_bst, _sc->port_bsh, _reg, _addr, _count) +#define SCD_WRITE(_sc, _reg, _val) \ + bus_space_write_1(_sc->port_bst, _sc->port_bsh, _reg, _val) + +int scd_probe (struct scd_softc *); +int scd_attach (struct scd_softc *); |