Changeset 01aef43 in mainline for uspace/drv/audio/sb16/dsp.c
- Timestamp:
- 2011-10-21T16:48:27Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 9f351c8
- Parents:
- 1a11a16
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/audio/sb16/dsp.c
r1a11a16 r01aef43 34 34 35 35 #include <libarch/ddi.h> 36 #include <str_error.h> 36 37 37 38 #include "dma.h" … … 47 48 48 49 #define DSP_RESET_RESPONSE 0xaa 50 #define SB_DMA_CHAN_16 5 51 #define SB_DMA_CHAN_8 1 49 52 50 53 static inline int sb_dsp_read(sb_dsp_t *dsp, uint8_t *data) … … 90 93 } 91 94 /*----------------------------------------------------------------------------*/ 95 static inline int sb_setup_buffer(sb_dsp_t *dsp) 96 { 97 assert(dsp); 98 uint8_t *buffer = malloc24(PAGE_SIZE); 99 100 const uintptr_t pa = addr_to_phys(buffer); 101 const int ret = dma_setup_channel(SB_DMA_CHAN_16, pa, PAGE_SIZE); 102 if (ret == EOK) { 103 dsp->buffer.buffer_data = buffer; 104 dsp->buffer.buffer_position = buffer; 105 dsp->buffer.buffer_size = PAGE_SIZE; 106 } else { 107 ddf_log_error("Failed to setup DMA buffer %s.\n", 108 str_error(ret)); 109 free24(buffer); 110 } 111 return ret; 112 } 113 /*----------------------------------------------------------------------------*/ 92 114 int sb_dsp_init(sb_dsp_t *dsp, sb16_regs_t *regs) 93 115 { … … 112 134 sb_dsp_read(dsp, &dsp->version.major); 113 135 sb_dsp_read(dsp, &dsp->version.minor); 114 return EOK; 136 137 return ret; 115 138 } 116 139 /*----------------------------------------------------------------------------*/ … … 130 153 return EOK; 131 154 } 155 /*----------------------------------------------------------------------------*/ 156 int sb_dsp_play(sb_dsp_t *dsp, const uint8_t *data, size_t size, 157 unsigned sampling_rate, unsigned channels, unsigned bit_depth) 158 { 159 assert(dsp); 160 if (!data) 161 return EOK; 162 163 /* Check supported parameters */ 164 if (bit_depth != 8 && bit_depth != 16) 165 return ENOTSUP; 166 if (channels != 1 && channels != 2) 167 return ENOTSUP; 168 169 const int ret = sb_setup_buffer(dsp); 170 171 return ret; 172 } 132 173 /** 133 174 * @}
Note:
See TracChangeset
for help on using the changeset viewer.