Lines Matching refs:dev

21 hw_codec_write_byte(sb16_dev_t* dev, uint8 value)
27 if (!(gISA->read_io_8(dev->port + SB16_CODEC_WRITE_STATUS) & 0x80))
32 gISA->write_io_8(dev->port + SB16_CODEC_WRITE_DATA, value);
37 hw_codec_read_byte(sb16_dev_t* dev)
42 if (gISA->read_io_8(dev->port + SB16_CODEC_READ_STATUS) & 0x80)
47 return gISA->read_io_8(dev->port + SB16_CODEC_READ_DATA);
52 hw_codec_reg_write(sb16_dev_t* dev, uint8 index, uint8 value)
55 gISA->write_io_8(dev->port + SB16_MIXER_ADDRESS, index);
56 gISA->write_io_8(dev->port + SB16_MIXER_DATA, value);
61 hw_codec_reg_read(sb16_dev_t* dev, uint8 index)
64 gISA->write_io_8(dev->port + SB16_MIXER_ADDRESS, index);
65 return gISA->read_io_8(dev->port + SB16_MIXER_DATA);
70 hw_codec_read_version(sb16_dev_t* dev)
75 hw_codec_write_byte(dev, SB16_CODEC_VERSION);
76 major = hw_codec_read_byte(dev);
77 minor = hw_codec_read_byte(dev);
89 hw_codec_read_irq_setup(sb16_dev_t* dev)
92 int mask = hw_codec_reg_read(dev, SB16_IRQ_SETUP);
94 dev->irq = 5;
97 dev->irq = 2;
99 dev->irq = 5;
101 dev->irq = 7;
103 dev->irq = 10;
108 hw_codec_read_dma_setup(sb16_dev_t* dev)
111 int mask = hw_codec_reg_read(dev, SB16_DMA_SETUP);
113 dev->dma8 = 1;
116 dev->dma8 = 0;
118 dev->dma8 = 1;
120 dev->dma8 = 3;
122 dev->dma16 = dev->dma8;
124 dev->dma16 = 5;
126 dev->dma16 = 6;
128 dev->dma16 = 7;
134 hw_codec_write_irq_setup(sb16_dev_t* dev)
139 if (dev->irq == 2)
141 if (dev->irq == 5)
143 if (dev->irq == 7)
145 if (dev->irq == 10)
148 hw_codec_reg_write(dev, SB16_IRQ_SETUP, mask);
153 hw_codec_write_dma_setup(sb16_dev_t* dev)
156 hw_codec_reg_write(dev, SB16_DMA_SETUP, (1 << dev->dma8) | (1 << dev->dma16));
163 sb16_dev_t* dev = (sb16_dev_t*)cookie;
167 int status = hw_codec_reg_read(dev, SB16_IRQ_STATUS);
175 gISA->read_io_8(dev->port + SB16_CODEC_ACK_8_BIT);
177 gISA->read_io_8(dev->port + SB16_CODEC_ACK_16_BIT);
180 if (dev->irq >= 8)
186 if (((dev->playback_stream.bits >> 3) & status) != 0) {
187 sb16_stream_buffer_done(&dev->playback_stream);
190 if (((dev->record_stream.bits >> 3) & status) != 0) {
191 sb16_stream_buffer_done(&dev->record_stream);
206 hw_codec_reset(sb16_dev_t* dev)
212 gISA->write_io_8(dev->port + SB16_CODEC_RESET, 1);
215 gISA->read_io_8(dev->port + SB16_CODEC_RESET);
217 gISA->write_io_8(dev->port + SB16_CODEC_RESET, 0);
219 if (hw_codec_read_byte(dev) == 0xaa)
228 hw_codec_detect(sb16_dev_t* dev)
232 if ((rc=hw_codec_reset(dev)) == B_OK) {
233 if (hw_codec_read_version(dev) >= 0x400) {
234 hw_codec_write_irq_setup(dev);
235 hw_codec_write_dma_setup(dev);
250 sb16_stream_setup_buffers(sb16_dev_t* dev, sb16_stream_t* s, const char* desc)
257 sb16_stream_start(sb16_dev_t* dev, sb16_stream_t* s)
264 sb16_stream_stop(sb16_dev_t* dev, sb16_stream_t* s)
280 sb16_hw_init(sb16_dev_t* dev)
289 if ((rc=hw_codec_detect(dev)) == B_OK) {
290 if ((rc=gISA->lock_isa_dma_channel(dev->dma8)) == B_OK &&
291 (rc=gISA->lock_isa_dma_channel(dev->dma16)) == B_OK) {
292 rc = install_io_interrupt_handler(dev->irq, hw_codec_inth, dev, 0);
301 sb16_hw_stop(sb16_dev_t* dev)
307 sb16_hw_uninit(sb16_dev_t* dev)
309 remove_io_interrupt_handler(dev->irq, hw_codec_inth, dev);
312 gISA->unlock_isa_dma_channel(dev->dma8);
314 if (dev->dma8 != dev->dma16)
315 gISA->unlock_isa_dma_channel(dev->dma16);