ice1712: Add settings file features and fix coding rules
This commit is contained in:
parent
5e9105aa28
commit
fc581f23c9
@ -18,6 +18,7 @@
|
||||
#include <image.h>
|
||||
#include <midi_driver.h>
|
||||
#include <string.h>
|
||||
#include <drivers/driver_settings.h>
|
||||
|
||||
#include "ice1712.h"
|
||||
#include "ice1712_reg.h"
|
||||
@ -26,21 +27,15 @@
|
||||
#include "util.h"
|
||||
|
||||
#include "debug.h"
|
||||
//------------------------------------------------------
|
||||
//------------------------------------------------------
|
||||
|
||||
status_t init_hardware(void);
|
||||
status_t init_driver(void);
|
||||
void uninit_driver(void);
|
||||
const char **publish_devices(void);
|
||||
device_hooks *find_device(const char *);
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
status_t load_settings(ice1712 *card);
|
||||
int32 ice_1712_int(void *arg);
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
pci_module_info *pci;
|
||||
generic_mpu401_module *mpu401;
|
||||
|
||||
@ -48,25 +43,10 @@ int32 num_cards = 0;
|
||||
ice1712 cards[NUM_CARDS];
|
||||
int32 num_names = 0;
|
||||
char *names[NUM_CARDS*20+1];
|
||||
|
||||
//------------------------------------------------------
|
||||
//------------------------------------------------------
|
||||
|
||||
int32 api_version = B_CUR_DRIVER_API_VERSION;
|
||||
|
||||
#define HMULTI_AUDIO_DEV_PATH "audio/hmulti/ice1712"
|
||||
//#define HMULTI_AUDIO_DEV_PATH "audio/multi/ice1712"
|
||||
|
||||
//------------------------------------------------------
|
||||
//------------------------------------------------------
|
||||
|
||||
//void republish_devices(void);
|
||||
|
||||
//extern image_id load_kernel_addon(const char *path);
|
||||
//extern status_t unload_kernel_addon(image_id imid);
|
||||
|
||||
//------------------------------------------------------
|
||||
//------------------------------------------------------
|
||||
|
||||
status_t
|
||||
init_hardware(void)
|
||||
@ -348,7 +328,7 @@ ice1712_setup(ice1712 *ice)
|
||||
ice->sampling_rate = 0x08;
|
||||
ice->buffer = 0;
|
||||
ice->frames_count = 0;
|
||||
ice->buffer_size = MAX_BUFFER_FRAMES;
|
||||
ice->buffer_size = ice->settings.bufferSize;
|
||||
|
||||
ice->total_output_channels = ice->config.nb_DAC;
|
||||
if (ice->config.spdif & SPDIF_OUT_PRESENT)
|
||||
@ -440,6 +420,9 @@ init_driver(void)
|
||||
cards[num_cards].info.function, strerror(err));
|
||||
continue;
|
||||
}
|
||||
|
||||
load_settings(&cards[num_cards]);
|
||||
|
||||
if (ice1712_setup(&cards[num_cards]) != B_OK) {
|
||||
//Vendor_ID and Device_ID has been modified
|
||||
TRACE("Setup of ice1712 %d failed\n", (int)(num_cards + 1));
|
||||
@ -502,7 +485,6 @@ uninit_driver(void)
|
||||
put_module(B_PCI_MODULE_NAME);
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
const char **
|
||||
publish_devices(void)
|
||||
@ -732,10 +714,39 @@ find_device(const char * name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
status_t
|
||||
load_settings(ice1712 *card)
|
||||
{
|
||||
// get driver settings
|
||||
void *settings_handle = load_driver_settings("ice1712.settings");
|
||||
|
||||
//Use a large enough value for modern computer
|
||||
card->settings.bufferSize = 512;
|
||||
|
||||
if (settings_handle != NULL) {
|
||||
const char *item;
|
||||
char *end;
|
||||
|
||||
item = get_driver_parameter(settings_handle, "buffer_size",
|
||||
"512", "512");
|
||||
if (item) {
|
||||
uint32 value = strtoul(item, &end, 0);
|
||||
if ((*end == '\0')
|
||||
&& (value >= MIN_BUFFER_FRAMES)
|
||||
&& (value <= MAX_BUFFER_FRAMES)) {
|
||||
card->settings.bufferSize = value;
|
||||
}
|
||||
}
|
||||
|
||||
unload_driver_settings(settings_handle);
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
applySettings(ice1712 *card)
|
||||
apply_settings(ice1712 *card)
|
||||
{
|
||||
int i;
|
||||
uint16 val, mt30 = 0;
|
||||
@ -810,7 +821,7 @@ applySettings(ice1712 *card)
|
||||
}
|
||||
write_mt_uint16(card, MT_ROUTING_CONTROL_PSDOUT, mt30);
|
||||
write_mt_uint32(card, MT_CAPTURED_DATA, mt34);
|
||||
|
||||
|
||||
//Digital output
|
||||
if ((card->config.spdif & SPDIF_OUT_PRESENT) != 0) {
|
||||
uint16 mt32 = 0;
|
||||
@ -836,6 +847,6 @@ applySettings(ice1712 *card)
|
||||
write_mt_uint16(card, MT_ROUTING_CONTROL_SPDOUT, mt32);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return B_OK;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "hmulti_audio.h"
|
||||
|
||||
#define DRIVER_NAME "ice1712"
|
||||
#define VERSION "0.4"
|
||||
#define VERSION "0.5"
|
||||
|
||||
#define ICE1712_VENDOR_ID 0x1412
|
||||
#define ICE1712_DEVICE_ID 0x1712
|
||||
@ -104,10 +104,10 @@ typedef struct ice1712_settings
|
||||
channel_volume playback[ICE1712_HARDWARE_VOLUME];
|
||||
channel_volume record[ICE1712_HARDWARE_VOLUME];
|
||||
|
||||
uint32 bufferSize;
|
||||
|
||||
//General Settings
|
||||
uint8 clock; //an index
|
||||
uint8 bufferSize; //an index
|
||||
uint8 debugMode; //an index for debugging
|
||||
|
||||
//S/PDif Settings
|
||||
uint8 outFormat; //an index
|
||||
@ -173,7 +173,7 @@ typedef struct ice1712
|
||||
ice1712_settings settings;
|
||||
} ice1712;
|
||||
|
||||
status_t applySettings(ice1712 *card);
|
||||
status_t apply_settings(ice1712 *card);
|
||||
|
||||
//For midi.c
|
||||
extern int32 num_cards;
|
||||
|
@ -0,0 +1,2 @@
|
||||
#Ice1712 settings file
|
||||
buffer_size 128
|
@ -21,7 +21,7 @@
|
||||
|
||||
#define AUTHORIZED_RATE (B_SR_SAME_AS_INPUT | B_SR_96000 \
|
||||
| B_SR_88200 | B_SR_48000 | B_SR_44100)
|
||||
#define AUTHORIZED_SAMPLE_SIZE (B_FMT_32BIT)
|
||||
#define AUTHORIZED_SAMPLE_SIZE (B_FMT_24BIT)
|
||||
|
||||
#define MAX_CONTROL 32
|
||||
|
||||
@ -381,18 +381,14 @@ get_combo_cb(ice1712 *card, uint32 index)
|
||||
break;
|
||||
|
||||
case 1:
|
||||
value = card->settings.bufferSize;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
value = card->settings.outFormat;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 2:
|
||||
value = card->settings.emphasis;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case 3:
|
||||
value = card->settings.copyMode;
|
||||
break;
|
||||
}
|
||||
@ -413,25 +409,16 @@ set_combo_cb(ice1712 *card, uint32 index, uint32 value)
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (value < 6) {
|
||||
card->settings.bufferSize = value;
|
||||
// card->buffer_size = 64 * (1 << value);
|
||||
// ice1712_buffer_force_stop(card);
|
||||
// start_DMA(card);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (value < 2)
|
||||
card->settings.outFormat = value;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 2:
|
||||
if (value < 3)
|
||||
card->settings.emphasis = value;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case 3:
|
||||
if (value < 3)
|
||||
card->settings.copyMode = value;
|
||||
break;
|
||||
@ -601,7 +588,7 @@ ice1712_set_mix(ice1712 *card, multi_mix_value_info *data)
|
||||
}
|
||||
}
|
||||
|
||||
return applySettings(card);
|
||||
return apply_settings(card);
|
||||
}
|
||||
|
||||
|
||||
@ -618,16 +605,6 @@ static const char *Clock[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const char *BufferSize[] = {
|
||||
"64",
|
||||
"128",
|
||||
"256",
|
||||
"512",
|
||||
"1024",
|
||||
"2048",
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const char *DigitalFormat[] = {
|
||||
"Consumer",
|
||||
"Professional",
|
||||
@ -650,7 +627,6 @@ static const char *DigitalCopyMode[] = {
|
||||
|
||||
static const char **SettingsGeneral[] = {
|
||||
Clock,
|
||||
BufferSize,
|
||||
NULL,
|
||||
};
|
||||
|
||||
@ -671,8 +647,8 @@ static const char *string_list[] = {
|
||||
|
||||
//General settings
|
||||
"Master clock",
|
||||
"Buffer size",
|
||||
"Debug",
|
||||
"reserved_0",
|
||||
"reserved_1",
|
||||
|
||||
//Digital settings
|
||||
"Output format",
|
||||
|
Loading…
Reference in New Issue
Block a user