Changeset 1ba95ba in mainline
- 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
- Location:
- uspace/drv/audio/sb16
- Files:
-
- 3 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 -
uspace/drv/audio/sb16/dsp.h
rfa91c0f r1ba95ba 75 75 void sb_dsp_interrupt(sb_dsp_t *dsp); 76 76 unsigned sb_dsp_query_cap(sb_dsp_t *dsp, audio_cap_t cap); 77 int sb_dsp_get_buffer_position(sb_dsp_t *dsp, size_t *size); 77 78 int sb_dsp_test_format(sb_dsp_t *dsp, unsigned *channels, unsigned *rate, 78 79 pcm_sample_format_t *format); -
uspace/drv/audio/sb16/pcm_iface.c
rfa91c0f r1ba95ba 70 70 return sb_dsp_get_buffer(dsp, buffer, size); 71 71 } 72 73 static int sb_get_buffer_position(ddf_fun_t *fun, size_t *size) 74 { 75 assert(fun); 76 assert(fun->driver_data); 77 sb_dsp_t *dsp = fun->driver_data; 78 return sb_dsp_get_buffer_position(dsp, size); 79 } 80 72 81 static int sb_set_event_session(ddf_fun_t *fun, async_sess_t *sess) 73 82 { … … 130 139 .release_buffer = sb_release_buffer, 131 140 .set_event_session = sb_set_event_session, 141 .get_buffer_pos = sb_get_buffer_position, 132 142 133 143 .start_playback = sb_start_playback,
Note:
See TracChangeset
for help on using the changeset viewer.