* style fixes

* use user_memcpy in buffer exchange for Haiku


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28861 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2009-01-08 23:45:16 +00:00
parent b8ea3ce774
commit 6c16c42586
3 changed files with 138 additions and 84 deletions
@@ -28,6 +28,7 @@
*/ */
#include <OS.h> #include <OS.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <MediaDefs.h> #include <MediaDefs.h>
#include "ac97.h" #include "ac97.h"
#include "debug.h" #include "debug.h"
@@ -111,6 +111,7 @@ auich_mem_new(auich_dev *card, size_t size)
return mem; return mem;
} }
static void static void
auich_mem_delete(auich_mem *mem) auich_mem_delete(auich_mem *mem)
{ {
@@ -119,6 +120,7 @@ auich_mem_delete(auich_mem *mem)
free(mem); free(mem);
} }
static void * static void *
auich_mem_alloc(auich_dev *card, size_t size) auich_mem_alloc(auich_dev *card, size_t size)
{ {
@@ -133,6 +135,7 @@ auich_mem_alloc(auich_dev *card, size_t size)
return mem; return mem;
} }
static void static void
auich_mem_free(auich_dev *card, void *ptr) auich_mem_free(auich_dev *card, void *ptr)
{ {
@@ -181,6 +184,7 @@ auich_stream_set_audioparms(auich_stream *stream, uint8 channels,
return B_OK; return B_OK;
} }
status_t status_t
auich_stream_commit_parms(auich_stream *stream) auich_stream_commit_parms(auich_stream *stream)
{ {
@@ -229,6 +233,7 @@ auich_stream_commit_parms(auich_stream *stream)
return B_OK; return B_OK;
} }
status_t status_t
auich_stream_get_nth_buffer(auich_stream *stream, uint8 chan, uint8 buf, auich_stream_get_nth_buffer(auich_stream *stream, uint8 chan, uint8 buf,
char** buffer, size_t *stride) char** buffer, size_t *stride)
@@ -246,6 +251,7 @@ auich_stream_get_nth_buffer(auich_stream *stream, uint8 chan, uint8 buf,
return B_OK; return B_OK;
} }
static uint8 static uint8
auich_stream_curaddr(auich_stream *stream) auich_stream_curaddr(auich_stream *stream)
{ {
@@ -254,6 +260,7 @@ auich_stream_curaddr(auich_stream *stream)
return index; return index;
} }
void void
auich_stream_start(auich_stream *stream, void (*inth) (void *), void *inthparam) auich_stream_start(auich_stream *stream, void (*inth) (void *), void *inthparam)
{ {
@@ -284,6 +291,7 @@ auich_stream_start(auich_stream *stream, void (*inth) (void *), void *inthparam)
#endif #endif
} }
void void
auich_stream_halt(auich_stream *stream) auich_stream_halt(auich_stream *stream)
{ {
@@ -295,6 +303,7 @@ auich_stream_halt(auich_stream *stream)
auich_reg_read_8(&stream->card->config, stream->base + AUICH_REG_X_CR) & ~CR_RPBM); auich_reg_read_8(&stream->card->config, stream->base + AUICH_REG_X_CR) & ~CR_RPBM);
} }
auich_stream * auich_stream *
auich_stream_new(auich_dev *card, uint8 use, uint32 bufframes, uint8 bufcount) auich_stream_new(auich_dev *card, uint8 use, uint32 bufframes, uint8 bufcount)
{ {
@@ -350,6 +359,7 @@ auich_stream_new(auich_dev *card, uint8 use, uint32 bufframes, uint8 bufcount)
return stream; return stream;
} }
void void
auich_stream_delete(auich_stream *stream) auich_stream_delete(auich_stream *stream)
{ {
@@ -504,6 +514,7 @@ map_io_memory(device_config *config)
return B_OK; return B_OK;
} }
static status_t static status_t
unmap_io_memory(device_config *config) unmap_io_memory(device_config *config)
{ {
@@ -572,6 +583,7 @@ init_hardware(void)
return err; return err;
} }
static void static void
make_device_names( make_device_names(
auich_dev * card) auich_dev * card)
@@ -597,6 +609,7 @@ auich_init(auich_dev * card)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_setup(auich_dev * card) auich_setup(auich_dev * card)
{ {
@@ -103,6 +103,7 @@ auich_ac97_get_mix(void *card, const void *cookie, int32 type, float *values) {
} }
} }
static void static void
auich_ac97_set_mix(void *card, const void *cookie, int32 type, float *values) { auich_ac97_set_mix(void *card, const void *cookie, int32 type, float *values) {
auich_dev *dev = (auich_dev*)card; auich_dev *dev = (auich_dev*)card;
@@ -175,6 +176,7 @@ auich_ac97_set_mix(void *card, const void *cookie, int32 type, float *values) {
} }
static int32 static int32
auich_create_group_control(multi_dev *multi, int32 *index, int32 parent, auich_create_group_control(multi_dev *multi, int32 *index, int32 parent,
int32 string, const char* name) { int32 string, const char* name) {
@@ -191,6 +193,7 @@ auich_create_group_control(multi_dev *multi, int32 *index, int32 parent,
return multi->controls[i].mix_control.id; return multi->controls[i].mix_control.id;
} }
static status_t static status_t
auich_create_controls_list(multi_dev *multi) auich_create_controls_list(multi_dev *multi)
{ {
@@ -382,6 +385,7 @@ auich_create_controls_list(multi_dev *multi)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_get_mix(auich_dev *card, multi_mix_value_info * MMVI) auich_get_mix(auich_dev *card, multi_mix_value_info * MMVI)
{ {
@@ -421,6 +425,7 @@ auich_get_mix(auich_dev *card, multi_mix_value_info * MMVI)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_set_mix(auich_dev *card, multi_mix_value_info * MMVI) auich_set_mix(auich_dev *card, multi_mix_value_info * MMVI)
{ {
@@ -484,6 +489,7 @@ auich_set_mix(auich_dev *card, multi_mix_value_info * MMVI)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_list_mix_controls(auich_dev *card, multi_mix_control_info * MMCI) auich_list_mix_controls(auich_dev *card, multi_mix_control_info * MMCI)
{ {
@@ -504,12 +510,14 @@ auich_list_mix_controls(auich_dev *card, multi_mix_control_info * MMCI)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_list_mix_connections(auich_dev *card, multi_mix_connection_info * data) auich_list_mix_connections(auich_dev *card, multi_mix_connection_info * data)
{ {
return B_ERROR; return B_ERROR;
} }
static status_t static status_t
auich_list_mix_channels(auich_dev *card, multi_mix_channel_info *data) auich_list_mix_channels(auich_dev *card, multi_mix_channel_info *data)
{ {
@@ -699,6 +707,7 @@ auich_get_description(auich_dev *card, multi_description *data)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_get_enabled_channels(auich_dev *card, multi_channel_enable *data) auich_get_enabled_channels(auich_dev *card, multi_channel_enable *data)
{ {
@@ -716,6 +725,7 @@ auich_get_enabled_channels(auich_dev *card, multi_channel_enable *data)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_set_enabled_channels(auich_dev *card, multi_channel_enable *data) auich_set_enabled_channels(auich_dev *card, multi_channel_enable *data)
{ {
@@ -726,6 +736,7 @@ auich_set_enabled_channels(auich_dev *card, multi_channel_enable *data)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_get_global_format(auich_dev *card, multi_format_info *data) auich_get_global_format(auich_dev *card, multi_format_info *data)
{ {
@@ -746,6 +757,7 @@ auich_get_global_format(auich_dev *card, multi_format_info *data)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_get_buffers(auich_dev *card, multi_buffer_list *data) auich_get_buffers(auich_dev *card, multi_buffer_list *data)
{ {
@@ -827,6 +839,7 @@ auich_play_inth(void* inthparams)
release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE); release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE);
} }
static void static void
auich_record_inth(void* inthparams) auich_record_inth(void* inthparams)
{ {
@@ -848,11 +861,15 @@ auich_record_inth(void* inthparams)
release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE); release_sem_etc(stream->card->buffer_ready_sem, 1, B_DO_NOT_RESCHEDULE);
} }
static status_t static status_t
auich_buffer_exchange(auich_dev *card, multi_buffer_info *data) auich_buffer_exchange(auich_dev *card, multi_buffer_info *data)
{ {
cpu_status status; cpu_status status;
auich_stream *pstream, *rstream; auich_stream *pstream, *rstream;
bigtime_t played_real_time, recorded_real_time;
uint64 played_frames_count, recorded_frames_count;
int32 playback_buffer_cycle, record_buffer_cycle, _reserved_0, _reserved_1;
data->flags = B_MULTI_BUFFER_PLAYBACK | B_MULTI_BUFFER_RECORD; data->flags = B_MULTI_BUFFER_PLAYBACK | B_MULTI_BUFFER_RECORD;
@@ -891,24 +908,41 @@ auich_buffer_exchange(auich_dev *card, multi_buffer_info *data)
rstream = card->rstream; rstream = card->rstream;
/* do playback */ /* do playback */
data->playback_buffer_cycle = pstream->buffer_cycle; playback_buffer_cycle = pstream->buffer_cycle;
data->played_real_time = pstream->real_time; played_real_time = pstream->real_time;
data->played_frames_count = pstream->frames_count; played_frames_count = pstream->frames_count;
data->_reserved_0 = pstream->first_channel; _reserved_0 = pstream->first_channel;
pstream->update_needed = false; pstream->update_needed = false;
/* do record */ /* do record */
data->record_buffer_cycle = rstream->buffer_cycle; record_buffer_cycle = rstream->buffer_cycle;
data->recorded_frames_count = rstream->frames_count; recorded_frames_count = rstream->frames_count;
data->recorded_real_time = rstream->real_time; recorded_real_time = rstream->real_time;
data->_reserved_1 = rstream->first_channel; _reserved_1 = rstream->first_channel;
rstream->update_needed = false; rstream->update_needed = false;
unlock(status); unlock(status);
#ifdef __HAIKU__
#define copy_to_user(x, y) if (user_memcpy(&x, &y, sizeof(x)) < B_OK) \
return B_BAD_ADDRESS
#else
#define copy_to_user(x, y) x = y
#endif
copy_to_user(data->playback_buffer_cycle, playback_buffer_cycle);
copy_to_user(data->played_real_time, played_real_time);
copy_to_user(data->played_frames_count, played_frames_count);
copy_to_user(data->_reserved_0, _reserved_0);
copy_to_user(data->record_buffer_cycle, record_buffer_cycle);
copy_to_user(data->recorded_real_time, recorded_real_time);
copy_to_user(data->recorded_frames_count, recorded_frames_count);
copy_to_user(data->_reserved_1, _reserved_1);
//TRACE(("buffer_exchange ended\n")); //TRACE(("buffer_exchange ended\n"));
return B_OK; return B_OK;
} }
static status_t static status_t
auich_buffer_force_stop(auich_dev *card) auich_buffer_force_stop(auich_dev *card)
{ {
@@ -916,6 +950,7 @@ auich_buffer_force_stop(auich_dev *card)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_multi_control(void *cookie, uint32 op, void *data, size_t length) auich_multi_control(void *cookie, uint32 op, void *data, size_t length)
{ {
@@ -1009,6 +1044,7 @@ device_hooks multi_hooks = {
NULL /* scatter-gather write to the device */ NULL /* scatter-gather write to the device */
}; };
static status_t static status_t
auich_open(const char *name, uint32 flags, void** cookie) auich_open(const char *name, uint32 flags, void** cookie)
{ {
@@ -1090,6 +1126,7 @@ auich_open(const char *name, uint32 flags, void** cookie)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_close(void* cookie) auich_close(void* cookie)
{ {
@@ -1099,6 +1136,7 @@ auich_close(void* cookie)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_free(void* cookie) auich_free(void* cookie)
{ {
@@ -1123,12 +1161,14 @@ auich_free(void* cookie)
return B_OK; return B_OK;
} }
static status_t static status_t
auich_control(void* cookie, uint32 op, void* arg, size_t len) auich_control(void* cookie, uint32 op, void* arg, size_t len)
{ {
return auich_multi_control(cookie, op, arg, len); return auich_multi_control(cookie, op, arg, len);
} }
static status_t static status_t
auich_read(void* cookie, off_t position, void *buf, size_t* num_bytes) auich_read(void* cookie, off_t position, void *buf, size_t* num_bytes)
{ {
@@ -1136,10 +1176,10 @@ auich_read(void* cookie, off_t position, void *buf, size_t* num_bytes)
return B_IO_ERROR; return B_IO_ERROR;
} }
static status_t static status_t
auich_write(void* cookie, off_t position, const void* buffer, size_t* num_bytes) auich_write(void* cookie, off_t position, const void* buffer, size_t* num_bytes)
{ {
*num_bytes = 0; /* tell caller nothing was written */ *num_bytes = 0; /* tell caller nothing was written */
return B_IO_ERROR; return B_IO_ERROR;
} }