1/* 2 * $FreeBSD: releng/10.3/sys/dev/scd/scdvar.h 130585 2004-06-16 09:47:26Z phk $ 3 */ 4 5struct scd_mbx { 6 short retry; 7 short nblk; 8 int sz; 9 u_long skip; 10 struct bio * bp; 11 short count; 12}; 13 14struct 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 35struct 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 65int scd_probe (struct scd_softc *); 66int scd_attach (struct scd_softc *); 67