Changeset 1ba95ba in mainline for uspace/drv/audio/sb16/dsp.c
- Timestamp:
- 2012-08-19T16:10:48Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 86fe9d1
- Parents:
- fa91c0f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/audio/sb16/dsp.c
rfa91c0f r1ba95ba 250 250 unsigned sb_dsp_query_cap(sb_dsp_t *dsp, audio_cap_t cap) 251 251 { 252 ddf_log_verbose("Querying cap %u", cap); 252 253 switch(cap) { 253 254 case AUDIO_CAP_CAPTURE: 254 255 case AUDIO_CAP_PLAYBACK: 255 256 case AUDIO_CAP_INTERRUPT: 257 case AUDIO_CAP_BUFFER_POS: 256 258 return 1; 257 259 case AUDIO_CAP_MAX_BUFFER: … … 261 263 case AUDIO_CAP_INTERRUPT_MAX_FRAMES: 262 264 return 16535; 263 case AUDIO_CAP_BUFFER_POS:264 265 default: 265 266 return 0; 266 267 } 268 } 269 270 int sb_dsp_get_buffer_position(sb_dsp_t *dsp, size_t *pos) 271 { 272 if (!dsp->buffer.data) 273 return ENOENT; 274 275 async_sess_t *sess = devman_parent_device_connect(EXCHANGE_ATOMIC, 276 dsp->sb_dev->handle, IPC_FLAG_BLOCKING); 277 278 // TODO: Assumes DMA 16 279 const int remain = hw_res_dma_channel_remain(sess, dsp->dma16_channel); 280 async_hangup(sess); 281 if (remain >= 0) { 282 *pos = dsp->buffer.size - remain; 283 return EOK; 284 } 285 return remain; 267 286 } 268 287
Note:
See TracChangeset
for help on using the changeset viewer.