Changeset 00006e0 in mainline for uspace/drv/audio/sb16/dsp.c
- Timestamp:
- 2012-07-02T12:31:08Z (11 years ago)
- Branches:
- lfn, master, serial
- Children:
- 2f7042e
- Parents:
- bd250b0f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/audio/sb16/dsp.c
rbd250b0f r00006e0 113 113 } 114 114 /*----------------------------------------------------------------------------*/ 115 static inline int sb_setup_buffer(sb_dsp_t *dsp) 116 { 117 assert(dsp); 118 uint8_t *buffer = dma_create_buffer24(BUFFER_SIZE); 115 static inline int sb_setup_buffer(sb_dsp_t *dsp, size_t size) 116 { 117 assert(dsp); 118 if (size > BUFFER_SIZE || size == 0 || (size % 2) == 1) 119 size = BUFFER_SIZE; 120 uint8_t *buffer = dma_create_buffer24(size); 119 121 if (buffer == NULL) { 120 122 ddf_log_error("Failed to allocate buffer.\n"); … … 125 127 assert(pa < (1 << 25)); 126 128 /* Set 16 bit channel */ 127 const int ret = sb_setup_dma(dsp, pa, BUFFER_SIZE);129 const int ret = sb_setup_dma(dsp, pa, size); 128 130 if (ret == EOK) { 129 131 dsp->buffer.data = buffer; 130 dsp->buffer.size = BUFFER_SIZE;131 bzero( buffer, BUFFER_SIZE);132 dsp->buffer.size = size; 133 bzero(dsp->buffer.data, dsp->buffer.size); 132 134 } else { 133 135 ddf_log_error("Failed to setup DMA16 channel %s.\n", … … 197 199 { 198 200 assert(dsp); 199 const int ret = sb_setup_buffer(dsp); 200 ddf_log_debug("Providing buffer(%u): %p, %zu.\n", 201 assert(size); 202 203 const int ret = sb_setup_buffer(dsp, *size); 204 ddf_log_debug("Providing buffer(%u): %p, %zu B.\n", 201 205 BUFFER_ID, dsp->buffer.data, dsp->buffer.size); 206 202 207 if (ret == EOK && buffer) 203 208 *buffer = dsp->buffer.data;
Note: See TracChangeset
for help on using the changeset viewer.