From 99351a72d3638705c3323c36fd551f1d3cd2111c Mon Sep 17 00:00:00 2001 From: PulkoMandy Date: Fri, 12 Apr 2024 19:54:15 +0200 Subject: [PATCH] sb16: enable -Werror Change-Id: I990362cd764e3a219e5022a62264b76be4cdf80c Reviewed-on: https://review.haiku-os.org/c/haiku/+/7620 Tested-by: Commit checker robot Reviewed-by: Alexander von Gluck --- build/jam/ArchitectureRules | 2 +- .../kernel/drivers/audio/sb16/sb16_hw.c | 33 ++++++++++++++++--- .../drivers/audio/sb16/sb16_multi_audio.c | 25 +++++++++----- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index c17f887b9a..7717d3c37d 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -682,7 +682,7 @@ rule ArchitectureSetupWarnings architecture EnableWerror src add-ons kernel drivers audio hda ; EnableWerror src add-ons kernel drivers audio ice1712 ; EnableWerror src add-ons kernel drivers audio null ; -# EnableWerror src add-ons kernel drivers audio sb16 ; + EnableWerror src add-ons kernel drivers audio sb16 ; EnableWerror src add-ons kernel drivers audio usb ; EnableWerror src add-ons kernel drivers audio virtio ; EnableWerror src add-ons kernel drivers bluetooth ; diff --git a/src/add-ons/kernel/drivers/audio/sb16/sb16_hw.c b/src/add-ons/kernel/drivers/audio/sb16/sb16_hw.c index 7642840ca5..19ef6c2dad 100644 --- a/src/add-ons/kernel/drivers/audio/sb16/sb16_hw.c +++ b/src/add-ons/kernel/drivers/audio/sb16/sb16_hw.c @@ -13,8 +13,10 @@ #include + static isa_module_info* gISA; + static void hw_codec_write_byte(sb16_dev_t* dev, uint8 value) { @@ -30,6 +32,7 @@ hw_codec_write_byte(sb16_dev_t* dev, uint8 value) gISA->write_io_8(dev->port + SB16_CODEC_WRITE_DATA, value); } + static int hw_codec_read_byte(sb16_dev_t* dev) { @@ -44,6 +47,7 @@ hw_codec_read_byte(sb16_dev_t* dev) return gISA->read_io_8(dev->port + SB16_CODEC_READ_DATA); } + static void hw_codec_reg_write(sb16_dev_t* dev, uint8 index, uint8 value) { @@ -52,6 +56,7 @@ hw_codec_reg_write(sb16_dev_t* dev, uint8 index, uint8 value) gISA->write_io_8(dev->port + SB16_MIXER_DATA, value); } + static int hw_codec_reg_read(sb16_dev_t* dev, uint8 index) { @@ -76,6 +81,10 @@ hw_codec_read_version(sb16_dev_t* dev) return (major << 8) + minor; } + +#if 0 +// TODO for recording support + static void hw_codec_read_irq_setup(sb16_dev_t* dev) { @@ -94,6 +103,7 @@ hw_codec_read_irq_setup(sb16_dev_t* dev) dev->irq = 10; } + static void hw_codec_read_dma_setup(sb16_dev_t* dev) { @@ -116,11 +126,13 @@ hw_codec_read_dma_setup(sb16_dev_t* dev) dev->dma16 = 6; if (mask & 0x80) dev->dma16 = 7; -} - -static void +} +#endif + + +static void hw_codec_write_irq_setup(sb16_dev_t* dev) -{ +{ /* change programmable IRQ line resource */ int mask = 0x02; @@ -136,6 +148,7 @@ hw_codec_write_irq_setup(sb16_dev_t* dev) hw_codec_reg_write(dev, SB16_IRQ_SETUP, mask); } + static void hw_codec_write_dma_setup(sb16_dev_t* dev) { @@ -143,6 +156,7 @@ hw_codec_write_dma_setup(sb16_dev_t* dev) hw_codec_reg_write(dev, SB16_DMA_SETUP, (1 << dev->dma8) | (1 << dev->dma16)); } + static int32 hw_codec_inth(void* cookie) { @@ -188,7 +202,6 @@ hw_codec_inth(void* cookie) } - static status_t hw_codec_reset(sb16_dev_t* dev) { @@ -210,6 +223,7 @@ hw_codec_reset(sb16_dev_t* dev) return B_IO_ERROR; } + static status_t hw_codec_detect(sb16_dev_t* dev) { @@ -228,33 +242,40 @@ hw_codec_detect(sb16_dev_t* dev) return rc; } + //#pragma mark - + status_t sb16_stream_setup_buffers(sb16_dev_t* dev, sb16_stream_t* s, const char* desc) { return B_OK; } + status_t sb16_stream_start(sb16_dev_t* dev, sb16_stream_t* s) { return B_OK; } + status_t sb16_stream_stop(sb16_dev_t* dev, sb16_stream_t* s) { return B_OK; } + void sb16_stream_buffer_done(sb16_stream_t* stream) { } + //#pragma mark - + status_t sb16_hw_init(sb16_dev_t* dev) { @@ -275,11 +296,13 @@ sb16_hw_init(sb16_dev_t* dev) return rc; } + void sb16_hw_stop(sb16_dev_t* dev) { } + void sb16_hw_uninit(sb16_dev_t* dev) { diff --git a/src/add-ons/kernel/drivers/audio/sb16/sb16_multi_audio.c b/src/add-ons/kernel/drivers/audio/sb16/sb16_multi_audio.c index c7de295519..d622faa3a4 100644 --- a/src/add-ons/kernel/drivers/audio/sb16/sb16_multi_audio.c +++ b/src/add-ons/kernel/drivers/audio/sb16/sb16_multi_audio.c @@ -148,13 +148,16 @@ get_buffers(sb16_dev_t* dev, multi_buffer_list* data) { uint32 playback_sample_size = dev->playback_stream.sample_size; uint32 record_sample_size = dev->record_stream.sample_size; - uint32 cidx, bidx; + int32 bidx; + int32 cidx; status_t rc; - dprintf("%s: playback: %ld buffers, %ld channels, %ld samples\n", __func__, - data->request_playback_buffers, data->request_playback_channels, data->request_playback_buffer_size); - dprintf("%s: record: %ld buffers, %ld channels, %ld samples\n", __func__, - data->request_record_buffers, data->request_record_channels, data->request_record_buffer_size); + dprintf("%s: playback: %" B_PRId32 " buffers, %" B_PRIu32 " channels, %" B_PRIu32 " samples\n", + __func__, data->request_playback_buffers, data->request_playback_channels, + data->request_playback_buffer_size); + dprintf("%s: record: %" B_PRId32 " buffers, %" B_PRIu32 " channels, %" B_PRIu32 " samples\n", + __func__, data->request_record_buffers, data->request_record_channels, + data->request_record_buffer_size); /* Workaround for Haiku multi_audio API, since it prefers to let the driver pick values, while the BeOS multi_audio actually gives the user's defaults. */ @@ -202,8 +205,10 @@ get_buffers(sb16_dev_t* dev, multi_buffer_list* data) for (bidx=0; bidx < data->return_playback_buffers; bidx++) { for (cidx=0; cidx < data->return_playback_channels; cidx++) { - data->playback_buffers[bidx][cidx].base = dev->playback_stream.buffers[bidx] + (playback_sample_size * cidx); - data->playback_buffers[bidx][cidx].stride = playback_sample_size * data->return_playback_channels; + data->playback_buffers[bidx][cidx].base + = (char*)dev->playback_stream.buffers[bidx] + (playback_sample_size * cidx); + data->playback_buffers[bidx][cidx].stride + = playback_sample_size * data->return_playback_channels; } } @@ -213,8 +218,10 @@ get_buffers(sb16_dev_t* dev, multi_buffer_list* data) for (bidx=0; bidx < data->return_record_buffers; bidx++) { for (cidx=0; cidx < data->return_record_channels; cidx++) { - data->record_buffers[bidx][cidx].base = dev->record_stream.buffers[bidx] + (record_sample_size * cidx); - data->record_buffers[bidx][cidx].stride = record_sample_size * data->return_record_channels; + data->record_buffers[bidx][cidx].base + = (char*)dev->record_stream.buffers[bidx] + (record_sample_size * cidx); + data->record_buffers[bidx][cidx].stride + = record_sample_size * data->return_record_channels; } }