From 8ac55351459055f2faee585d9ba2f84707741815 Mon Sep 17 00:00:00 2001 From: Zihan Yang Date: Wed, 26 Apr 2017 20:53:07 +0800 Subject: hw/audio: replace exit with unrealize in hda_codec_device_class_init The exit callback of DeviceClass will be removed in the future, so convert to unrealize in the init functioin Signed-off-by: Zihan Yang Message-id: 1493211188-24086-4-git-send-email-tgnyang@gmail.com Signed-off-by: Gerd Hoffmann --- hw/audio/intel-hda.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 537face..2c497eb 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -70,7 +70,7 @@ static void hda_codec_dev_realize(DeviceState *qdev, Error **errp) } } -static int hda_codec_dev_exit(DeviceState *qdev) +static void hda_codec_dev_unrealize(DeviceState *qdev, Error **errp) { HDACodecDevice *dev = HDA_CODEC_DEVICE(qdev); HDACodecDeviceClass *cdc = HDA_CODEC_DEVICE_GET_CLASS(dev); @@ -78,7 +78,6 @@ static int hda_codec_dev_exit(DeviceState *qdev) if (cdc->exit) { cdc->exit(dev); } - return 0; } HDACodecDevice *hda_codec_find(HDACodecBus *bus, uint32_t cad) @@ -1318,7 +1317,7 @@ static void hda_codec_device_class_init(ObjectClass *klass, void *data) { DeviceClass *k = DEVICE_CLASS(klass); k->realize = hda_codec_dev_realize; - k->exit = hda_codec_dev_exit; + k->unrealize = hda_codec_dev_unrealize; set_bit(DEVICE_CATEGORY_SOUND, k->categories); k->bus_type = TYPE_HDA_BUS; k->props = hda_props; -- cgit v1.1 From 5eaa8e1e0f09ff08c9c683676eabb82ad1179647 Mon Sep 17 00:00:00 2001 From: Zihan Yang Date: Wed, 26 Apr 2017 20:53:08 +0800 Subject: hw/audio: convert exit callback in HDACodecDeviceClass to void The exit callback always return 0, convert it to void Signed-off-by: Zihan Yang Message-id: 1493211188-24086-5-git-send-email-tgnyang@gmail.com Signed-off-by: Gerd Hoffmann --- hw/audio/hda-codec.c | 3 +-- hw/audio/intel-hda.h | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/audio/hda-codec.c b/hw/audio/hda-codec.c index 52d4640..5402cd1 100644 --- a/hw/audio/hda-codec.c +++ b/hw/audio/hda-codec.c @@ -520,7 +520,7 @@ static int hda_audio_init(HDACodecDevice *hda, const struct desc_codec *desc) return 0; } -static int hda_audio_exit(HDACodecDevice *hda) +static void hda_audio_exit(HDACodecDevice *hda) { HDAAudioState *a = HDA_AUDIO(hda); HDAAudioStream *st; @@ -539,7 +539,6 @@ static int hda_audio_exit(HDACodecDevice *hda) } } AUD_remove_card(&a->card); - return 0; } static int hda_audio_post_load(void *opaque, int version) diff --git a/hw/audio/intel-hda.h b/hw/audio/intel-hda.h index d784bcf..53b78da 100644 --- a/hw/audio/intel-hda.h +++ b/hw/audio/intel-hda.h @@ -38,7 +38,7 @@ typedef struct HDACodecDeviceClass DeviceClass parent_class; int (*init)(HDACodecDevice *dev); - int (*exit)(HDACodecDevice *dev); + void (*exit)(HDACodecDevice *dev); void (*command)(HDACodecDevice *dev, uint32_t nid, uint32_t data); void (*stream)(HDACodecDevice *dev, uint32_t stnr, bool running, bool output); } HDACodecDeviceClass; -- cgit v1.1 From 3268a845f41253fb55852a8429c32b50f36f349a Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 28 Apr 2017 09:56:12 +0200 Subject: audio: release capture buffers AUD_add_capture() allocates two buffers which are never released. Add the missing calls to AUD_del_capture(). Impact: Allows vnc clients to exhaust host memory by repeatedly starting and stopping audio capture. Fixes: CVE-2017-8309 Cc: P J P Cc: Huawei PSIRT Reported-by: "Jiangxin (hunter, SCC)" Signed-off-by: Gerd Hoffmann Reviewed-by: Prasad J Pandit Message-id: 20170428075612.9997-1-kraxel@redhat.com --- audio/audio.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/audio/audio.c b/audio/audio.c index c8898d8..beafed2 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -2028,6 +2028,8 @@ void AUD_del_capture (CaptureVoiceOut *cap, void *cb_opaque) sw = sw1; } QLIST_REMOVE (cap, entries); + g_free (cap->hw.mix_buf); + g_free (cap->buf); g_free (cap); } return; -- cgit v1.1 From 7bdfd907e7072e380f325e735d99677df53f00ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 4 May 2017 02:38:44 +0400 Subject: audio: fix WAVState leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spotted by ASAN. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé Message-id: 20170503223846.6559-4-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann --- audio/wavcapture.c | 1 + 1 file changed, 1 insertion(+) diff --git a/audio/wavcapture.c b/audio/wavcapture.c index 8bfb9e7..5863803 100644 --- a/audio/wavcapture.c +++ b/audio/wavcapture.c @@ -88,6 +88,7 @@ static void wav_capture_destroy (void *opaque) WAVState *wav = opaque; AUD_del_capture (wav->cap, wav); + g_free (wav); } static void wav_capture_info (void *opaque) -- cgit v1.1 From 68883a40789da236646a1a4bc43bb32d34ff0083 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:14 +0200 Subject: adlib: Remove support for YMF262 Notice that the code was supposed to be in the file ymf262.h, that has never been on qemu source tree. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-2-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/adlib.c | 45 +-------------------------------------------- 1 file changed, 1 insertion(+), 44 deletions(-) diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c index 7836446..f9adcd7 100644 --- a/hw/audio/adlib.c +++ b/hw/audio/adlib.c @@ -33,11 +33,7 @@ #define ADLIB_KILL_TIMERS 1 -#ifdef HAS_YMF262 -#define ADLIB_DESC "Yamaha YMF262 (OPL3)" -#else #define ADLIB_DESC "Yamaha YM3812 (OPL2)" -#endif #ifdef DEBUG #include "qemu/timer.h" @@ -50,14 +46,8 @@ #define ldebug(...) #endif -#ifdef HAS_YMF262 -#include "ymf262.h" -void YMF262UpdateOneQEMU (int which, INT16 *dst, int length); -#define SHIFT 2 -#else #include "fmopl.h" #define SHIFT 1 -#endif #define TYPE_ADLIB "adlib" #define ADLIB(obj) OBJECT_CHECK(AdlibState, (obj), TYPE_ADLIB) @@ -80,9 +70,7 @@ typedef struct { SWVoiceOut *voice; int left, pos, samples; QEMUAudioTimeStamp ats; -#ifndef HAS_YMF262 FM_OPL *opl; -#endif PortioList port_list; } AdlibState; @@ -90,11 +78,7 @@ static AdlibState *glob_adlib; static void adlib_stop_opl_timer (AdlibState *s, size_t n) { -#ifdef HAS_YMF262 - YMF262TimerOver (0, n); -#else OPLTimerOver (s->opl, n); -#endif s->ticking[n] = 0; } @@ -131,11 +115,7 @@ static void adlib_write(void *opaque, uint32_t nport, uint32_t val) adlib_kill_timers (s); -#ifdef HAS_YMF262 - YMF262Write (0, a, val); -#else OPLWrite (s->opl, a, val); -#endif } static uint32_t adlib_read(void *opaque, uint32_t nport) @@ -145,12 +125,8 @@ static uint32_t adlib_read(void *opaque, uint32_t nport) int a = nport & 3; adlib_kill_timers (s); - -#ifdef HAS_YMF262 - data = YMF262Read (0, a); -#else data = OPLRead (s->opl, a); -#endif + return data; } @@ -240,11 +216,7 @@ static void adlib_callback (void *opaque, int free) return; } -#ifdef HAS_YMF262 - YMF262UpdateOneQEMU (0, s->mixbuf + s->pos * 2, samples); -#else YM3812UpdateOne (s->opl, s->mixbuf + s->pos, samples); -#endif while (samples) { written = write_audio (s, samples); @@ -263,14 +235,10 @@ static void adlib_callback (void *opaque, int free) static void Adlib_fini (AdlibState *s) { -#ifdef HAS_YMF262 - YMF262Shutdown (); -#else if (s->opl) { OPLDestroy (s->opl); s->opl = NULL; } -#endif g_free(s->mixbuf); @@ -297,16 +265,6 @@ static void adlib_realizefn (DeviceState *dev, Error **errp) } glob_adlib = s; -#ifdef HAS_YMF262 - if (YMF262Init (1, 14318180, s->freq)) { - error_setg (errp, "YMF262Init %d failed", s->freq); - return; - } - else { - YMF262SetTimerHandler (0, timer_handler, 0); - s->enabled = 1; - } -#else s->opl = OPLCreate (OPL_TYPE_YM3812, 3579545, s->freq); if (!s->opl) { error_setg (errp, "OPLCreate %d failed", s->freq); @@ -316,7 +274,6 @@ static void adlib_realizefn (DeviceState *dev, Error **errp) OPLSetTimerHandler (s->opl, timer_handler, 0); s->enabled = 1; } -#endif as.freq = s->freq; as.nchannels = SHIFT; -- cgit v1.1 From b6c6919e21ec856bc8f28836ab372644d44f884e Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:15 +0200 Subject: audio: remove Y8950 configuration Include file has never been on qemu and it has been undefined from the very beginning. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-3-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/Makefile.objs | 2 - hw/audio/fmopl.c | 146 ------------------------------------------------- hw/audio/fmopl.h | 20 ------- 3 files changed, 168 deletions(-) diff --git a/hw/audio/Makefile.objs b/hw/audio/Makefile.objs index 7ce85a2..bb6f07a 100644 --- a/hw/audio/Makefile.objs +++ b/hw/audio/Makefile.objs @@ -14,5 +14,3 @@ common-obj-$(CONFIG_PL041) += pl041.o lm4549.o common-obj-$(CONFIG_CS4231) += cs4231.o common-obj-$(CONFIG_MARVELL_88W8618) += marvell_88w8618.o common-obj-$(CONFIG_MILKYMIST) += milkymist-ac97.o - -$(obj)/adlib.o $(obj)/fmopl.o: QEMU_CFLAGS += -DBUILD_Y8950=0 diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 731110f..29f6d3c 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -812,57 +812,6 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v) } } return; -#if BUILD_Y8950 - case 0x06: /* Key Board OUT */ - if(OPL->type&OPL_TYPE_KEYBOARD) - { - if(OPL->keyboardhandler_w) - OPL->keyboardhandler_w(OPL->keyboard_param,v); - else - LOG(LOG_WAR,("OPL:write unmapped KEYBOARD port\n")); - } - return; - case 0x07: /* DELTA-T control : START,REC,MEMDATA,REPT,SPOFF,x,x,RST */ - if(OPL->type&OPL_TYPE_ADPCM) - YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v); - return; - case 0x08: /* MODE,DELTA-T : CSM,NOTESEL,x,x,smpl,da/ad,64k,rom */ - OPL->mode = v; - v&=0x1f; /* for DELTA-T unit */ - case 0x09: /* START ADD */ - case 0x0a: - case 0x0b: /* STOP ADD */ - case 0x0c: - case 0x0d: /* PRESCALE */ - case 0x0e: - case 0x0f: /* ADPCM data */ - case 0x10: /* DELTA-N */ - case 0x11: /* DELTA-N */ - case 0x12: /* EG-CTRL */ - if(OPL->type&OPL_TYPE_ADPCM) - YM_DELTAT_ADPCM_Write(OPL->deltat,r-0x07,v); - return; -#if 0 - case 0x15: /* DAC data */ - case 0x16: - case 0x17: /* SHIFT */ - return; - case 0x18: /* I/O CTRL (Direction) */ - if(OPL->type&OPL_TYPE_IO) - OPL->portDirection = v&0x0f; - return; - case 0x19: /* I/O DATA */ - if(OPL->type&OPL_TYPE_IO) - { - OPL->portLatch = v; - if(OPL->porthandler_w) - OPL->porthandler_w(OPL->port_param,v&OPL->portDirection); - } - return; - case 0x1a: /* PCM data */ - return; -#endif -#endif } break; case 0x20: /* am,vib,ksr,eg type,mul */ @@ -1097,68 +1046,6 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) } #endif /* (BUILD_YM3812 || BUILD_YM3526) */ -#if BUILD_Y8950 - -void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) -{ - int i; - int data; - OPLSAMPLE *buf = buffer; - UINT32 amsCnt = OPL->amsCnt; - UINT32 vibCnt = OPL->vibCnt; - UINT8 rhythm = OPL->rhythm&0x20; - OPL_CH *CH,*R_CH; - YM_DELTAT *DELTAT = OPL->deltat; - - /* setup DELTA-T unit */ - YM_DELTAT_DECODE_PRESET(DELTAT); - - if( (void *)OPL != cur_chip ){ - cur_chip = (void *)OPL; - /* channel pointers */ - S_CH = OPL->P_CH; - E_CH = &S_CH[9]; - /* rhythm slot */ - SLOT7_1 = &S_CH[7].SLOT[SLOT1]; - SLOT7_2 = &S_CH[7].SLOT[SLOT2]; - SLOT8_1 = &S_CH[8].SLOT[SLOT1]; - SLOT8_2 = &S_CH[8].SLOT[SLOT2]; - /* LFO state */ - amsIncr = OPL->amsIncr; - vibIncr = OPL->vibIncr; - ams_table = OPL->ams_table; - vib_table = OPL->vib_table; - } - R_CH = rhythm ? &S_CH[6] : E_CH; - for( i=0; i < length ; i++ ) - { - /* channel A channel B channel C */ - /* LFO */ - ams = ams_table[(amsCnt+=amsIncr)>>AMS_SHIFT]; - vib = vib_table[(vibCnt+=vibIncr)>>VIB_SHIFT]; - outd[0] = 0; - /* deltaT ADPCM */ - if( DELTAT->portstate ) - YM_DELTAT_ADPCM_CALC(DELTAT); - /* FM part */ - for(CH=S_CH ; CH < R_CH ; CH++) - OPL_CALC_CH(CH); - /* Rythn part */ - if(rhythm) - OPL_CALC_RH(S_CH); - /* limit check */ - data = Limit( outd[0] , OPL_MAXOUT, OPL_MINOUT ); - /* store to sound buffer */ - buf[i] = data >> OPL_OUTSB; - } - OPL->amsCnt = amsCnt; - OPL->vibCnt = vibCnt; - /* deltaT START flag */ - if( !DELTAT->portstate ) - OPL->status &= 0xfe; -} -#endif - /* ---------- reset one of chip ---------- */ void OPLResetChip(FM_OPL *OPL) { @@ -1189,18 +1076,6 @@ void OPLResetChip(FM_OPL *OPL) CH->SLOT[s].evs = 0; } } -#if BUILD_Y8950 - if(OPL->type&OPL_TYPE_ADPCM) - { - YM_DELTAT *DELTAT = OPL->deltat; - - DELTAT->freqbase = OPL->freqbase; - DELTAT->output_pointer = outd; - DELTAT->portshift = 5; - DELTAT->output_range = DELTAT_MIXING_LEVEL<P_CH = (OPL_CH *)ptr; ptr+=sizeof(OPL_CH)*max_ch; -#if BUILD_Y8950 - if(type&OPL_TYPE_ADPCM) OPL->deltat = (YM_DELTAT *)ptr; ptr+=sizeof(YM_DELTAT); -#endif /* set channel state pointer */ OPL->type = type; OPL->clock = clock; @@ -1290,21 +1159,6 @@ void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param) OPL->UpdateHandler = UpdateHandler; OPL->UpdateParam = param; } -#if BUILD_Y8950 -void OPLSetPortHandler(FM_OPL *OPL,OPL_PORTHANDLER_W PortHandler_w,OPL_PORTHANDLER_R PortHandler_r,int param) -{ - OPL->porthandler_w = PortHandler_w; - OPL->porthandler_r = PortHandler_r; - OPL->port_param = param; -} - -void OPLSetKeyboardHandler(FM_OPL *OPL,OPL_PORTHANDLER_W KeyboardHandler_w,OPL_PORTHANDLER_R KeyboardHandler_r,int param) -{ - OPL->keyboardhandler_w = KeyboardHandler_w; - OPL->keyboardhandler_r = KeyboardHandler_r; - OPL->keyboard_param = param; -} -#endif /* ---------- YM3812 I/O interface ---------- */ int OPLWrite(FM_OPL *OPL,int a,int v) { diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index fdda7f9..96d958a 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -4,7 +4,6 @@ /* --- select emulation chips --- */ #define BUILD_YM3812 (HAS_YM3812) //#define BUILD_YM3526 (HAS_YM3526) -//#define BUILD_Y8950 (HAS_Y8950) /* --- system optimize --- */ /* select bit size of output : 8 or 16 */ @@ -28,11 +27,6 @@ typedef INT16 OPLSAMPLE; typedef unsigned char OPLSAMPLE; #endif - -#if BUILD_Y8950 -#include "ymdeltat.h" -#endif - typedef void (*OPL_TIMERHANDLER)(int channel,double interval_Sec); typedef void (*OPL_IRQHANDLER)(int param,int irq); typedef void (*OPL_UPDATEHANDLER)(int param,int min_interval_us); @@ -112,13 +106,6 @@ typedef struct fm_opl_f { int max_ch; /* maximum channel */ /* Rhythm sention */ UINT8 rhythm; /* Rhythm mode , key flag */ -#if BUILD_Y8950 - /* Delta-T ADPCM unit (Y8950) */ - YM_DELTAT *deltat; /* DELTA-T ADPCM */ -#endif - /* Keyboard / I/O interface unit (Y8950) */ - UINT8 portDirection; - UINT8 portLatch; OPL_PORTHANDLER_R porthandler_r; OPL_PORTHANDLER_W porthandler_w; int port_param; @@ -150,16 +137,12 @@ typedef struct fm_opl_f { /* ---------- Generic interface section ---------- */ #define OPL_TYPE_YM3526 (0) #define OPL_TYPE_YM3812 (OPL_TYPE_WAVESEL) -#define OPL_TYPE_Y8950 (OPL_TYPE_ADPCM|OPL_TYPE_KEYBOARD|OPL_TYPE_IO) FM_OPL *OPLCreate(int type, int clock, int rate); void OPLDestroy(FM_OPL *OPL); void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset); void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,int param); void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param); -/* Y8950 port handlers */ -void OPLSetPortHandler(FM_OPL *OPL,OPL_PORTHANDLER_W PortHandler_w,OPL_PORTHANDLER_R PortHandler_r,int param); -void OPLSetKeyboardHandler(FM_OPL *OPL,OPL_PORTHANDLER_W KeyboardHandler_w,OPL_PORTHANDLER_R KeyboardHandler_r,int param); void OPLResetChip(FM_OPL *OPL); int OPLWrite(FM_OPL *OPL,int a,int v); @@ -168,7 +151,4 @@ int OPLTimerOver(FM_OPL *OPL,int c); /* YM3626/YM3812 local section */ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length); - -void Y8950UpdateOne(FM_OPL *OPL, INT16 *buffer, int length); - #endif -- cgit v1.1 From 2004429e9bf458b6415df497c19847cb4d27844c Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:16 +0200 Subject: audio: Remove YM3526 support It was never compiled in. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-4-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 4 ++-- hw/audio/fmopl.h | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 29f6d3c..1e05efc 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -981,7 +981,7 @@ static void OPL_UnLockTable(void) OPLCloseTable(); } -#if (BUILD_YM3812 || BUILD_YM3526) +#if BUILD_YM3812 /*******************************************************************************/ /* YM3812 local section */ /*******************************************************************************/ @@ -1044,7 +1044,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) } #endif } -#endif /* (BUILD_YM3812 || BUILD_YM3526) */ +#endif /* BUILD_YM3812 */ /* ---------- reset one of chip ---------- */ void OPLResetChip(FM_OPL *OPL) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 96d958a..b254968 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -3,7 +3,6 @@ /* --- select emulation chips --- */ #define BUILD_YM3812 (HAS_YM3812) -//#define BUILD_YM3526 (HAS_YM3526) /* --- system optimize --- */ /* select bit size of output : 8 or 16 */ @@ -135,7 +134,6 @@ typedef struct fm_opl_f { } FM_OPL; /* ---------- Generic interface section ---------- */ -#define OPL_TYPE_YM3526 (0) #define OPL_TYPE_YM3812 (OPL_TYPE_WAVESEL) FM_OPL *OPLCreate(int type, int clock, int rate); -- cgit v1.1 From 882ab9d615e438b1298cda90193f81624dbbd632 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:17 +0200 Subject: audio: YM3812 was always defined So, remove the ifdefs. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-5-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 4 ---- hw/audio/fmopl.h | 4 ---- 2 files changed, 8 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 1e05efc..282662a 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -30,8 +30,6 @@ * License along with this library; if not, see . */ -#define HAS_YM3812 1 - #include "qemu/osdep.h" #include //#include "driver.h" /* use M.A.M.E. */ @@ -981,7 +979,6 @@ static void OPL_UnLockTable(void) OPLCloseTable(); } -#if BUILD_YM3812 /*******************************************************************************/ /* YM3812 local section */ /*******************************************************************************/ @@ -1044,7 +1041,6 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) } #endif } -#endif /* BUILD_YM3812 */ /* ---------- reset one of chip ---------- */ void OPLResetChip(FM_OPL *OPL) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index b254968..e476497 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -1,9 +1,6 @@ #ifndef FMOPL_H #define FMOPL_H -/* --- select emulation chips --- */ -#define BUILD_YM3812 (HAS_YM3812) - /* --- system optimize --- */ /* select bit size of output : 8 or 16 */ #define OPL_OUTPUT_BIT 16 @@ -147,6 +144,5 @@ int OPLWrite(FM_OPL *OPL,int a,int v); unsigned char OPLRead(FM_OPL *OPL,int a); int OPLTimerOver(FM_OPL *OPL,int c); -/* YM3626/YM3812 local section */ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length); #endif -- cgit v1.1 From 4a796e979e14ced4124c7cb4a22792b3db204554 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:18 +0200 Subject: audio: Remove UINT8 uint8_t has existed since ..... all this century? Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-6-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 8 ++++---- hw/audio/fmopl.h | 39 ++++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 282662a..3d14b45 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -789,8 +789,8 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v) } else { /* set IRQ mask ,timer enable*/ - UINT8 st1 = v&1; - UINT8 st2 = (v>>1)&1; + uint8_t st1 = v&1; + uint8_t st2 = (v>>1)&1; /* IRQRST,T1MSK,t2MSK,EOSMSK,BRMSK,x,ST2,ST1 */ OPL_STATUS_RESET(OPL,v&0x78); OPL_STATUSMASK_SET(OPL,((~v)&0x78)|0x01); @@ -838,7 +838,7 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v) case 0xbd: /* amsep,vibdep,r,bd,sd,tom,tc,hh */ { - UINT8 rkey = OPL->rhythm^v; + uint8_t rkey = OPL->rhythm^v; OPL->ams_table = &AMS_TABLE[v&0x80 ? AMS_ENT : 0]; OPL->vib_table = &VIB_TABLE[v&0x40 ? VIB_ENT : 0]; OPL->rhythm = v&0x3f; @@ -991,7 +991,7 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) OPLSAMPLE *buf = buffer; UINT32 amsCnt = OPL->amsCnt; UINT32 vibCnt = OPL->vibCnt; - UINT8 rhythm = OPL->rhythm&0x20; + uint8_t rhythm = OPL->rhythm&0x20; OPL_CH *CH,*R_CH; if( (void *)OPL != cur_chip ){ diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index e476497..3df8942 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -1,6 +1,8 @@ #ifndef FMOPL_H #define FMOPL_H +#include + /* --- system optimize --- */ /* select bit size of output : 8 or 16 */ #define OPL_OUTPUT_BIT 16 @@ -8,7 +10,6 @@ /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H -typedef unsigned char UINT8; /* unsigned 8bit */ typedef unsigned short UINT16; /* unsigned 16bit */ typedef unsigned int UINT32; /* unsigned 32bit */ typedef signed char INT8; /* signed 8bit */ @@ -41,19 +42,19 @@ typedef unsigned char (*OPL_PORTHANDLER_R)(int param); typedef struct fm_opl_slot { INT32 TL; /* total level :TL << 8 */ INT32 TLL; /* adjusted now TL */ - UINT8 KSR; /* key scale rate :(shift down bit) */ + uint8_t KSR; /* key scale rate :(shift down bit) */ INT32 *AR; /* attack rate :&AR_TABLE[AR<<2] */ INT32 *DR; /* decay rate :&DR_TALBE[DR<<2] */ INT32 SL; /* sustin level :SL_TALBE[SL] */ INT32 *RR; /* release rate :&DR_TABLE[RR<<2] */ - UINT8 ksl; /* keyscale level :(shift down bits) */ - UINT8 ksr; /* key scale rate :kcode>>KSR */ + uint8_t ksl; /* keyscale level :(shift down bits) */ + uint8_t ksr; /* key scale rate :kcode>>KSR */ UINT32 mul; /* multiple :ML_TABLE[ML] */ UINT32 Cnt; /* frequency count : */ UINT32 Incr; /* frequency step : */ /* envelope generator state */ - UINT8 eg_typ; /* envelope type flag */ - UINT8 evm; /* envelope phase */ + uint8_t eg_typ; /* envelope type flag */ + uint8_t evm; /* envelope phase */ INT32 evc; /* envelope counter */ INT32 eve; /* envelope counter end point */ INT32 evs; /* envelope counter step */ @@ -61,8 +62,8 @@ typedef struct fm_opl_slot { INT32 evsd; /* envelope step for DR :DR[ksr] */ INT32 evsr; /* envelope step for RR :RR[ksr] */ /* LFO */ - UINT8 ams; /* ams flag */ - UINT8 vib; /* vibrate flag */ + uint8_t ams; /* ams flag */ + uint8_t vib; /* vibrate flag */ /* wave selector */ INT32 **wavetable; }OPL_SLOT; @@ -70,38 +71,38 @@ typedef struct fm_opl_slot { /* ---------- OPL one of channel ---------- */ typedef struct fm_opl_channel { OPL_SLOT SLOT[2]; - UINT8 CON; /* connection type */ - UINT8 FB; /* feed back :(shift down bit) */ + uint8_t CON; /* connection type */ + uint8_t FB; /* feed back :(shift down bit) */ INT32 *connect1; /* slot1 output pointer */ INT32 *connect2; /* slot2 output pointer */ INT32 op1_out[2]; /* slot1 output for selfeedback */ /* phase generator state */ UINT32 block_fnum; /* block+fnum : */ - UINT8 kcode; /* key code : KeyScaleCode */ + uint8_t kcode; /* key code : KeyScaleCode */ UINT32 fc; /* Freq. Increment base */ UINT32 ksl_base; /* KeyScaleLevel Base step */ - UINT8 keyon; /* key on/off flag */ + uint8_t keyon; /* key on/off flag */ } OPL_CH; /* OPL state */ typedef struct fm_opl_f { - UINT8 type; /* chip type */ + uint8_t type; /* chip type */ int clock; /* master clock (Hz) */ int rate; /* sampling rate (Hz) */ double freqbase; /* frequency base */ double TimerBase; /* Timer base time (==sampling time) */ - UINT8 address; /* address register */ - UINT8 status; /* status flag */ - UINT8 statusmask; /* status mask */ + uint8_t address; /* address register */ + uint8_t status; /* status flag */ + uint8_t statusmask; /* status mask */ UINT32 mode; /* Reg.08 : CSM , notesel,etc. */ /* Timer */ int T[2]; /* timer counter */ - UINT8 st[2]; /* timer enable */ + uint8_t st[2]; /* timer enable */ /* FM channel slots */ OPL_CH *P_CH; /* pointer of CH */ int max_ch; /* maximum channel */ /* Rhythm sention */ - UINT8 rhythm; /* Rhythm mode , key flag */ + uint8_t rhythm; /* Rhythm mode , key flag */ OPL_PORTHANDLER_R porthandler_r; OPL_PORTHANDLER_W porthandler_w; int port_param; @@ -120,7 +121,7 @@ typedef struct fm_opl_f { INT32 vibCnt; INT32 vibIncr; /* wave selector enable flag */ - UINT8 wavesel; + uint8_t wavesel; /* external event callback handler */ OPL_TIMERHANDLER TimerHandler; /* TIMER handler */ int TimerParam; /* TIMER parameter */ -- cgit v1.1 From d8586afd8bbda11130a1536d61820fe809af22c5 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:19 +0200 Subject: audio: remove UINT16 More modernitation. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-7-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.h | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 3df8942..1891a22 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -10,7 +10,6 @@ /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H -typedef unsigned short UINT16; /* unsigned 16bit */ typedef unsigned int UINT32; /* unsigned 32bit */ typedef signed char INT8; /* signed 8bit */ typedef signed short INT16; /* signed 16bit */ -- cgit v1.1 From 3795f18095986cd41334e91d151609c7740c98a7 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:20 +0200 Subject: audio: remove UINT32 Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-8-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 14 +++++++------- hw/audio/fmopl.h | 17 ++++++++--------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 3d14b45..47754e8 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -122,7 +122,7 @@ static const int slot_array[32]= /* key scale level */ /* table is 3dB/OCT , DV converts this in TL step at 6dB/OCT */ #define DV (EG_STEP/2) -static const UINT32 KSL_TABLE[8*16]= +static const uint32_t KSL_TABLE[8*16]= { /* OCT 0 */ 0.000/DV, 0.000/DV, 0.000/DV, 0.000/DV, @@ -195,7 +195,7 @@ static INT32 ENV_CURVE[2*EG_ENT+1]; /* multiple table */ #define ML 2 -static const UINT32 MUL_TABLE[16]= { +static const uint32_t MUL_TABLE[16]= { /* 1/2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15 */ 0.50*ML, 1.00*ML, 2.00*ML, 3.00*ML, 4.00*ML, 5.00*ML, 6.00*ML, 7.00*ML, 8.00*ML, 9.00*ML,10.00*ML,10.00*ML,12.00*ML,12.00*ML,15.00*ML,15.00*ML @@ -319,7 +319,7 @@ static inline void OPL_KEYOFF(OPL_SLOT *SLOT) /* ---------- calcrate Envelope Generator & Phase Generator ---------- */ /* return : envelope output */ -static inline UINT32 OPL_CALC_SLOT( OPL_SLOT *SLOT ) +static inline uint32_t OPL_CALC_SLOT( OPL_SLOT *SLOT ) { /* calcrate envelope generator */ if( (SLOT->evc+=SLOT->evs) >= SLOT->eve ) @@ -451,7 +451,7 @@ static inline void set_sl_rr(FM_OPL *OPL,int slot,int v) /* ---------- calcrate one of channel ---------- */ static inline void OPL_CALC_CH( OPL_CH *CH ) { - UINT32 env_out; + uint32_t env_out; OPL_SLOT *SLOT; feedback2 = 0; @@ -496,7 +496,7 @@ static inline void OPL_CALC_CH( OPL_CH *CH ) #define WHITE_NOISE_db 6.0 static inline void OPL_CALC_RH( OPL_CH *CH ) { - UINT32 env_tam,env_sd,env_top,env_hh; + uint32_t env_tam,env_sd,env_top,env_hh; int whitenoise = (rand()&1)*(WHITE_NOISE_db/EG_STEP); INT32 tone8; @@ -989,8 +989,8 @@ void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) int i; int data; OPLSAMPLE *buf = buffer; - UINT32 amsCnt = OPL->amsCnt; - UINT32 vibCnt = OPL->vibCnt; + uint32_t amsCnt = OPL->amsCnt; + uint32_t vibCnt = OPL->vibCnt; uint8_t rhythm = OPL->rhythm&0x20; OPL_CH *CH,*R_CH; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 1891a22..b52f039 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -10,7 +10,6 @@ /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H -typedef unsigned int UINT32; /* unsigned 32bit */ typedef signed char INT8; /* signed 8bit */ typedef signed short INT16; /* signed 16bit */ typedef signed int INT32; /* signed 32bit */ @@ -48,9 +47,9 @@ typedef struct fm_opl_slot { INT32 *RR; /* release rate :&DR_TABLE[RR<<2] */ uint8_t ksl; /* keyscale level :(shift down bits) */ uint8_t ksr; /* key scale rate :kcode>>KSR */ - UINT32 mul; /* multiple :ML_TABLE[ML] */ - UINT32 Cnt; /* frequency count : */ - UINT32 Incr; /* frequency step : */ + uint32_t mul; /* multiple :ML_TABLE[ML] */ + uint32_t Cnt; /* frequency count : */ + uint32_t Incr; /* frequency step : */ /* envelope generator state */ uint8_t eg_typ; /* envelope type flag */ uint8_t evm; /* envelope phase */ @@ -76,10 +75,10 @@ typedef struct fm_opl_channel { INT32 *connect2; /* slot2 output pointer */ INT32 op1_out[2]; /* slot1 output for selfeedback */ /* phase generator state */ - UINT32 block_fnum; /* block+fnum : */ + uint32_t block_fnum; /* block+fnum : */ uint8_t kcode; /* key code : KeyScaleCode */ - UINT32 fc; /* Freq. Increment base */ - UINT32 ksl_base; /* KeyScaleLevel Base step */ + uint32_t fc; /* Freq. Increment base */ + uint32_t ksl_base; /* KeyScaleLevel Base step */ uint8_t keyon; /* key on/off flag */ } OPL_CH; @@ -93,7 +92,7 @@ typedef struct fm_opl_f { uint8_t address; /* address register */ uint8_t status; /* status flag */ uint8_t statusmask; /* status mask */ - UINT32 mode; /* Reg.08 : CSM , notesel,etc. */ + uint32_t mode; /* Reg.08 : CSM , notesel,etc. */ /* Timer */ int T[2]; /* timer counter */ uint8_t st[2]; /* timer enable */ @@ -111,7 +110,7 @@ typedef struct fm_opl_f { /* time tables */ INT32 AR_TABLE[75]; /* atttack rate tables */ INT32 DR_TABLE[75]; /* decay rate tables */ - UINT32 FN_TABLE[1024]; /* fnumber -> increment counter */ + uint32_t FN_TABLE[1024]; /* fnumber -> increment counter */ /* LFO */ INT32 *ams_table; INT32 *vib_table; -- cgit v1.1 From d2a4a01fa45ab357513a94ab90dbc57205206cac Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:21 +0200 Subject: audio: Remove INT8 Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-9-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.h | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index b52f039..bede671 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -10,7 +10,6 @@ /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H -typedef signed char INT8; /* signed 8bit */ typedef signed short INT16; /* signed 16bit */ typedef signed int INT32; /* signed 32bit */ #endif -- cgit v1.1 From 7bf10b1de25c64cbec2acf2b4e0b2ce645a13b53 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:22 +0200 Subject: audio: remove INT16 Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-10-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 2 +- hw/audio/fmopl.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 47754e8..ebd3dbb 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -984,7 +984,7 @@ static void OPL_UnLockTable(void) /*******************************************************************************/ /* ---------- update one of chip ----------- */ -void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length) +void YM3812UpdateOne(FM_OPL *OPL, int16_t *buffer, int length) { int i; int data; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index bede671..0bc3415 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -10,12 +10,11 @@ /* compiler dependence */ #ifndef OSD_CPU_H #define OSD_CPU_H -typedef signed short INT16; /* signed 16bit */ typedef signed int INT32; /* signed 32bit */ #endif #if (OPL_OUTPUT_BIT==16) -typedef INT16 OPLSAMPLE; +typedef int16_t OPLSAMPLE; #endif #if (OPL_OUTPUT_BIT==8) typedef unsigned char OPLSAMPLE; @@ -142,5 +141,5 @@ int OPLWrite(FM_OPL *OPL,int a,int v); unsigned char OPLRead(FM_OPL *OPL,int a); int OPLTimerOver(FM_OPL *OPL,int c); -void YM3812UpdateOne(FM_OPL *OPL, INT16 *buffer, int length); +void YM3812UpdateOne(FM_OPL *OPL, int16_t *buffer, int length); #endif -- cgit v1.1 From 7f643fb53a1b09f644f1fc552e1c8faf98986e53 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:23 +0200 Subject: audio: Remove INT32 Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-11-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 42 +++++++++++++++++++++--------------------- hw/audio/fmopl.h | 54 ++++++++++++++++++++++++------------------------------ 2 files changed, 45 insertions(+), 51 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index ebd3dbb..8f935f6 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -170,7 +170,7 @@ static const uint32_t KSL_TABLE[8*16]= /* sustain lebel table (3db per step) */ /* 0 - 15: 0, 3, 6, 9,12,15,18,21,24,27,30,33,36,39,42,93 (dB)*/ #define SC(db) (db*((3/EG_STEP)*(1<connect1 = CH->CON ? carrier : &feedback2; CH->connect2 = carrier; } @@ -498,7 +498,7 @@ static inline void OPL_CALC_RH( OPL_CH *CH ) { uint32_t env_tam,env_sd,env_top,env_hh; int whitenoise = (rand()&1)*(WHITE_NOISE_db/EG_STEP); - INT32 tone8; + int32_t tone8; OPL_SLOT *SLOT; int env_out; @@ -616,20 +616,20 @@ static int OPLOpenTable( void ) double pom; /* allocate dynamic tables */ - if( (TL_TABLE = malloc(TL_MAX*2*sizeof(INT32))) == NULL) + if( (TL_TABLE = malloc(TL_MAX*2*sizeof(int32_t))) == NULL) return 0; - if( (SIN_TABLE = malloc(SIN_ENT*4 *sizeof(INT32 *))) == NULL) + if( (SIN_TABLE = malloc(SIN_ENT*4 *sizeof(int32_t *))) == NULL) { free(TL_TABLE); return 0; } - if( (AMS_TABLE = malloc(AMS_ENT*2 *sizeof(INT32))) == NULL) + if( (AMS_TABLE = malloc(AMS_ENT*2 *sizeof(int32_t))) == NULL) { free(TL_TABLE); free(SIN_TABLE); return 0; } - if( (VIB_TABLE = malloc(VIB_ENT*2 *sizeof(INT32))) == NULL) + if( (VIB_TABLE = malloc(VIB_ENT*2 *sizeof(int32_t))) == NULL) { free(TL_TABLE); free(SIN_TABLE); diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 0bc3415..1e74019 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -7,12 +7,6 @@ /* select bit size of output : 8 or 16 */ #define OPL_OUTPUT_BIT 16 -/* compiler dependence */ -#ifndef OSD_CPU_H -#define OSD_CPU_H -typedef signed int INT32; /* signed 32bit */ -#endif - #if (OPL_OUTPUT_BIT==16) typedef int16_t OPLSAMPLE; #endif @@ -36,13 +30,13 @@ typedef unsigned char (*OPL_PORTHANDLER_R)(int param); /* Saving is necessary for member of the 'R' mark for suspend/resume */ /* ---------- OPL one of slot ---------- */ typedef struct fm_opl_slot { - INT32 TL; /* total level :TL << 8 */ - INT32 TLL; /* adjusted now TL */ + int32_t TL; /* total level :TL << 8 */ + int32_t TLL; /* adjusted now TL */ uint8_t KSR; /* key scale rate :(shift down bit) */ - INT32 *AR; /* attack rate :&AR_TABLE[AR<<2] */ - INT32 *DR; /* decay rate :&DR_TALBE[DR<<2] */ - INT32 SL; /* sustin level :SL_TALBE[SL] */ - INT32 *RR; /* release rate :&DR_TABLE[RR<<2] */ + int32_t *AR; /* attack rate :&AR_TABLE[AR<<2] */ + int32_t *DR; /* decay rate :&DR_TALBE[DR<<2] */ + int32_t SL; /* sustin level :SL_TALBE[SL] */ + int32_t *RR; /* release rate :&DR_TABLE[RR<<2] */ uint8_t ksl; /* keyscale level :(shift down bits) */ uint8_t ksr; /* key scale rate :kcode>>KSR */ uint32_t mul; /* multiple :ML_TABLE[ML] */ @@ -51,17 +45,17 @@ typedef struct fm_opl_slot { /* envelope generator state */ uint8_t eg_typ; /* envelope type flag */ uint8_t evm; /* envelope phase */ - INT32 evc; /* envelope counter */ - INT32 eve; /* envelope counter end point */ - INT32 evs; /* envelope counter step */ - INT32 evsa; /* envelope step for AR :AR[ksr] */ - INT32 evsd; /* envelope step for DR :DR[ksr] */ - INT32 evsr; /* envelope step for RR :RR[ksr] */ + int32_t evc; /* envelope counter */ + int32_t eve; /* envelope counter end point */ + int32_t evs; /* envelope counter step */ + int32_t evsa; /* envelope step for AR :AR[ksr] */ + int32_t evsd; /* envelope step for DR :DR[ksr] */ + int32_t evsr; /* envelope step for RR :RR[ksr] */ /* LFO */ uint8_t ams; /* ams flag */ uint8_t vib; /* vibrate flag */ /* wave selector */ - INT32 **wavetable; + int32_t **wavetable; }OPL_SLOT; /* ---------- OPL one of channel ---------- */ @@ -69,9 +63,9 @@ typedef struct fm_opl_channel { OPL_SLOT SLOT[2]; uint8_t CON; /* connection type */ uint8_t FB; /* feed back :(shift down bit) */ - INT32 *connect1; /* slot1 output pointer */ - INT32 *connect2; /* slot2 output pointer */ - INT32 op1_out[2]; /* slot1 output for selfeedback */ + int32_t *connect1; /* slot1 output pointer */ + int32_t *connect2; /* slot2 output pointer */ + int32_t op1_out[2]; /* slot1 output for selfeedback */ /* phase generator state */ uint32_t block_fnum; /* block+fnum : */ uint8_t kcode; /* key code : KeyScaleCode */ @@ -106,16 +100,16 @@ typedef struct fm_opl_f { OPL_PORTHANDLER_W keyboardhandler_w; int keyboard_param; /* time tables */ - INT32 AR_TABLE[75]; /* atttack rate tables */ - INT32 DR_TABLE[75]; /* decay rate tables */ + int32_t AR_TABLE[75]; /* atttack rate tables */ + int32_t DR_TABLE[75]; /* decay rate tables */ uint32_t FN_TABLE[1024]; /* fnumber -> increment counter */ /* LFO */ - INT32 *ams_table; - INT32 *vib_table; - INT32 amsCnt; - INT32 amsIncr; - INT32 vibCnt; - INT32 vibIncr; + int32_t *ams_table; + int32_t *vib_table; + int32_t amsCnt; + int32_t amsIncr; + int32_t vibCnt; + int32_t vibIncr; /* wave selector enable flag */ uint8_t wavesel; /* external event callback handler */ -- cgit v1.1 From 8ec734d027955d8a708a2782df6113e2372564cd Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:24 +0200 Subject: audio: Unfold OPLSAMPLE It was used only once, and now it was always int16_t. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-12-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 2 +- hw/audio/fmopl.h | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 8f935f6..b1cb4b4 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -988,7 +988,7 @@ void YM3812UpdateOne(FM_OPL *OPL, int16_t *buffer, int length) { int i; int data; - OPLSAMPLE *buf = buffer; + int16_t *buf = buffer; uint32_t amsCnt = OPL->amsCnt; uint32_t vibCnt = OPL->vibCnt; uint8_t rhythm = OPL->rhythm&0x20; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 1e74019..c236287 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -3,17 +3,6 @@ #include -/* --- system optimize --- */ -/* select bit size of output : 8 or 16 */ -#define OPL_OUTPUT_BIT 16 - -#if (OPL_OUTPUT_BIT==16) -typedef int16_t OPLSAMPLE; -#endif -#if (OPL_OUTPUT_BIT==8) -typedef unsigned char OPLSAMPLE; -#endif - typedef void (*OPL_TIMERHANDLER)(int channel,double interval_Sec); typedef void (*OPL_IRQHANDLER)(int param,int irq); typedef void (*OPL_UPDATEHANDLER)(int param,int min_interval_us); -- cgit v1.1 From 7852b53acc951cc311cacd87d15198ef18d519e8 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:25 +0200 Subject: audio: Remove Unused OPL_TYPE_* Since we removed the previous unused devices, they are not used anymore. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-13-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 16 ---------------- hw/audio/fmopl.h | 3 --- 2 files changed, 19 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index b1cb4b4..9171001 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -1188,28 +1188,12 @@ unsigned char OPLRead(FM_OPL *OPL,int a) switch(OPL->address) { case 0x05: /* KeyBoard IN */ - if(OPL->type&OPL_TYPE_KEYBOARD) - { - if(OPL->keyboardhandler_r) - return OPL->keyboardhandler_r(OPL->keyboard_param); - else { - LOG(LOG_WAR,("OPL:read unmapped KEYBOARD port\n")); - } - } return 0; #if 0 case 0x0f: /* ADPCM-DATA */ return 0; #endif case 0x19: /* I/O DATA */ - if(OPL->type&OPL_TYPE_IO) - { - if(OPL->porthandler_r) - return OPL->porthandler_r(OPL->port_param); - else { - LOG(LOG_WAR,("OPL:read unmapped I/O port\n")); - } - } return 0; case 0x1a: /* PCM-DATA */ return 0; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index c236287..8ef0b3e 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -12,9 +12,6 @@ typedef unsigned char (*OPL_PORTHANDLER_R)(int param); /* !!!!! here is private section , do not access there member direct !!!!! */ #define OPL_TYPE_WAVESEL 0x01 /* waveform select */ -#define OPL_TYPE_ADPCM 0x02 /* DELTA-T ADPCM unit */ -#define OPL_TYPE_KEYBOARD 0x04 /* keyboard interface */ -#define OPL_TYPE_IO 0x08 /* I/O port */ /* Saving is necessary for member of the 'R' mark for suspend/resume */ /* ---------- OPL one of slot ---------- */ -- cgit v1.1 From 8f7e2c2cb731765cde6521ae252d55f4d8a9a85f Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:26 +0200 Subject: audio: Remove type field It was not used anymore as now there is only one type of devices. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-14-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/adlib.c | 2 +- hw/audio/fmopl.c | 20 ++++++++------------ hw/audio/fmopl.h | 7 +------ 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/hw/audio/adlib.c b/hw/audio/adlib.c index f9adcd7..09b8248 100644 --- a/hw/audio/adlib.c +++ b/hw/audio/adlib.c @@ -265,7 +265,7 @@ static void adlib_realizefn (DeviceState *dev, Error **errp) } glob_adlib = s; - s->opl = OPLCreate (OPL_TYPE_YM3812, 3579545, s->freq); + s->opl = OPLCreate (3579545, s->freq); if (!s->opl) { error_setg (errp, "OPLCreate %d failed", s->freq); return; diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 9171001..48db828 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -761,18 +761,15 @@ static void OPLWriteReg(FM_OPL *OPL, int r, int v) { case 0x01: /* wave selector enable */ - if(OPL->type&OPL_TYPE_WAVESEL) + OPL->wavesel = v&0x20; + if(!OPL->wavesel) { - OPL->wavesel = v&0x20; - if(!OPL->wavesel) + /* preset compatible mode */ + int c; + for(c=0;cmax_ch;c++) { - /* preset compatible mode */ - int c; - for(c=0;cmax_ch;c++) - { - OPL->P_CH[c].SLOT[SLOT1].wavetable = &SIN_TABLE[0]; - OPL->P_CH[c].SLOT[SLOT2].wavetable = &SIN_TABLE[0]; - } + OPL->P_CH[c].SLOT[SLOT1].wavetable = &SIN_TABLE[0]; + OPL->P_CH[c].SLOT[SLOT2].wavetable = &SIN_TABLE[0]; } } return; @@ -1076,7 +1073,7 @@ void OPLResetChip(FM_OPL *OPL) /* ---------- Create one of vietual YM3812 ---------- */ /* 'rate' is sampling rate and 'bufsiz' is the size of the */ -FM_OPL *OPLCreate(int type, int clock, int rate) +FM_OPL *OPLCreate(int clock, int rate) { char *ptr; FM_OPL *OPL; @@ -1095,7 +1092,6 @@ FM_OPL *OPLCreate(int type, int clock, int rate) OPL = (FM_OPL *)ptr; ptr+=sizeof(FM_OPL); OPL->P_CH = (OPL_CH *)ptr; ptr+=sizeof(OPL_CH)*max_ch; /* set channel state pointer */ - OPL->type = type; OPL->clock = clock; OPL->rate = rate; OPL->max_ch = max_ch; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 8ef0b3e..df790a0 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -11,8 +11,6 @@ typedef unsigned char (*OPL_PORTHANDLER_R)(int param); /* !!!!! here is private section , do not access there member direct !!!!! */ -#define OPL_TYPE_WAVESEL 0x01 /* waveform select */ - /* Saving is necessary for member of the 'R' mark for suspend/resume */ /* ---------- OPL one of slot ---------- */ typedef struct fm_opl_slot { @@ -62,7 +60,6 @@ typedef struct fm_opl_channel { /* OPL state */ typedef struct fm_opl_f { - uint8_t type; /* chip type */ int clock; /* master clock (Hz) */ int rate; /* sampling rate (Hz) */ double freqbase; /* frequency base */ @@ -108,9 +105,7 @@ typedef struct fm_opl_f { } FM_OPL; /* ---------- Generic interface section ---------- */ -#define OPL_TYPE_YM3812 (OPL_TYPE_WAVESEL) - -FM_OPL *OPLCreate(int type, int clock, int rate); +FM_OPL *OPLCreate(int clock, int rate); void OPLDestroy(FM_OPL *OPL); void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset); void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,int param); -- cgit v1.1 From 9887e22155094c624599dea8023b73eb98e97b02 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:27 +0200 Subject: audio: Remove unused fields These were used for the remove stuff. Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-15-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index df790a0..8730ead 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -76,12 +76,6 @@ typedef struct fm_opl_f { int max_ch; /* maximum channel */ /* Rhythm sention */ uint8_t rhythm; /* Rhythm mode , key flag */ - OPL_PORTHANDLER_R porthandler_r; - OPL_PORTHANDLER_W porthandler_w; - int port_param; - OPL_PORTHANDLER_R keyboardhandler_r; - OPL_PORTHANDLER_W keyboardhandler_w; - int keyboard_param; /* time tables */ int32_t AR_TABLE[75]; /* atttack rate tables */ int32_t DR_TABLE[75]; /* decay rate tables */ -- cgit v1.1 From 0af81c56bf687b419ecf2f8e73cd6079a9323e4c Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:28 +0200 Subject: audio: GUSbyte is uint8_t Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-16-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/gusemu.h | 6 ++--- hw/audio/gusemu_hal.c | 58 ++++++++++++++++++++++++------------------------- hw/audio/gusemu_mixer.c | 4 ++-- 3 files changed, 33 insertions(+), 35 deletions(-) diff --git a/hw/audio/gusemu.h b/hw/audio/gusemu.h index 9aec7bf..3a69222 100644 --- a/hw/audio/gusemu.h +++ b/hw/audio/gusemu.h @@ -28,14 +28,12 @@ /* data types (need to be adjusted if neither a VC6 nor a C99 compatible compiler is used) */ #if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */ - typedef unsigned char GUSbyte; typedef unsigned short GUSword; typedef unsigned int GUSdword; typedef signed char GUSchar; typedef signed short GUSsample; #else typedef int8_t GUSchar; - typedef uint8_t GUSbyte; typedef uint16_t GUSword; typedef uint32_t GUSdword; typedef int16_t GUSsample; @@ -43,8 +41,8 @@ typedef struct _GUSEmuState { - GUSbyte *himemaddr; /* 1024*1024 bytes used for storing uploaded samples (+32 additional bytes for read padding) */ - GUSbyte *gusdatapos; /* (gusdataend-gusdata) bytes used for storing emulated GF1/mixer register states (32*32+4 bytes in initial GUSemu32 version) */ + uint8_t *himemaddr; /* 1024*1024 bytes used for storing uploaded samples (+32 additional bytes for read padding) */ + uint8_t *gusdatapos; /* (gusdataend-gusdata) bytes used for storing emulated GF1/mixer register states (32*32+4 bytes in initial GUSemu32 version) */ uint32_t gusirq; uint32_t gusdma; unsigned int timer1fraction; diff --git a/hw/audio/gusemu_hal.c b/hw/audio/gusemu_hal.c index 973d6b9..444a2bb 100644 --- a/hw/audio/gusemu_hal.c +++ b/hw/audio/gusemu_hal.c @@ -39,7 +39,7 @@ unsigned int gus_read(GUSEmuState * state, int port, int size) { int value_read = 0; - GUSbyte *gusptr; + uint8_t *gusptr; gusptr = state->gusdatapos; GUSregd(portaccesses)++; @@ -125,7 +125,7 @@ unsigned int gus_read(GUSEmuState * state, int port, int size) if (!GUSregb(IRQStatReg2x6)) GUS_irqclear(state, state->gusirq); } - return (GUSbyte) value_read; + return (uint8_t) value_read; /* DramDMAmemPosReg */ /* case 0x42: value_read=GUSregw(GUS42DMAStart); break;*/ /* 43h+44h write only */ @@ -178,7 +178,7 @@ unsigned int gus_read(GUSEmuState * state, int port, int size) /* return 0xff; */ /* Pre 3.6 boards, ICS mixer NOT present */ case 0x307: /* DRAMaccess */ { - GUSbyte *adr; + uint8_t *adr; adr = state->himemaddr + (GUSregd(GUSDRAMPOS24bit) & 0xfffff); return *adr; } @@ -189,14 +189,14 @@ unsigned int gus_read(GUSEmuState * state, int port, int size) void gus_write(GUSEmuState * state, int port, int size, unsigned int data) { - GUSbyte *gusptr; + uint8_t *gusptr; gusptr = state->gusdatapos; GUSregd(portaccesses)++; switch (port & 0xff0f) { case 0x200: /* MixerCtrlReg */ - GUSregb(MixerCtrlReg2x0) = (GUSbyte) data; + GUSregb(MixerCtrlReg2x0) = (uint8_t) data; break; case 0x206: /* IRQstatReg / SB2x6IRQ */ if (GUSregb(GUS45TimerCtrl) & 0x20) /* SB IRQ enabled? -> set 2x6IRQ bit */ @@ -208,7 +208,7 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) break; case 0x308: /* AdLib 388h */ case 0x208: /* AdLibCommandReg */ - GUSregb(AdLibCommand2xA) = (GUSbyte) data; + GUSregb(AdLibCommand2xA) = (uint8_t) data; break; case 0x309: /* AdLib 389h */ case 0x209: /* AdLibDataReg */ @@ -217,11 +217,11 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) if (data & 0x80) GUSregb(TimerStatus2x8) &= 0x1f; /* AdLib IRQ reset? -> clear maskable adl. timer int regs */ else - GUSregb(TimerDataReg2x9) = (GUSbyte) data; + GUSregb(TimerDataReg2x9) = (uint8_t) data; } else { - GUSregb(AdLibData2x9) = (GUSbyte) data; + GUSregb(AdLibData2x9) = (uint8_t) data; if (GUSregb(GUS45TimerCtrl) & 0x02) { GUSregb(TimerStatus2x8) |= 0x01; @@ -231,16 +231,16 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) } break; case 0x20A: - GUSregb(AdLibStatus2x8) = (GUSbyte) data; + GUSregb(AdLibStatus2x8) = (uint8_t) data; break; /* AdLibStatus2x8 */ case 0x20B: /* GUS hidden registers */ switch (GUSregb(RegCtrl_2xF) & 0x7) { case 0: if (GUSregb(MixerCtrlReg2x0) & 0x40) - GUSregb(IRQ_2xB) = (GUSbyte) data; /* control register select bit */ + GUSregb(IRQ_2xB) = (uint8_t) data; /* control register select bit */ else - GUSregb(DMA_2xB) = (GUSbyte) data; + GUSregb(DMA_2xB) = (uint8_t) data; break; /* case 1-4: general purpose emulation regs */ case 5: /* clear stat reg 2xF */ @@ -249,7 +249,7 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) GUS_irqclear(state, state->gusirq); break; case 6: /* Jumper reg (Joystick/MIDI enable) */ - GUSregb(Jumper_2xB) = (GUSbyte) data; + GUSregb(Jumper_2xB) = (uint8_t) data; break; default:; } @@ -262,20 +262,20 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) GUS_irqrequest(state, state->gusirq, 1); } case 0x20D: /* SB2xCd no IRQ */ - GUSregb(SB2xCd) = (GUSbyte) data; + GUSregb(SB2xCd) = (uint8_t) data; break; case 0x20E: /* SB2xE */ - GUSregb(SB2xE) = (GUSbyte) data; + GUSregb(SB2xE) = (uint8_t) data; break; case 0x20F: - GUSregb(RegCtrl_2xF) = (GUSbyte) data; + GUSregb(RegCtrl_2xF) = (uint8_t) data; break; /* CtrlReg2xF */ case 0x302: /* VoiceSelReg */ - GUSregb(VoiceSelReg3x2) = (GUSbyte) data; + GUSregb(VoiceSelReg3x2) = (uint8_t) data; break; case 0x303: /* FunkSelReg */ - GUSregb(FunkSelReg3x3) = (GUSbyte) data; - if ((GUSbyte) data == 0x8f) /* set irqstatreg, get voicereg and clear IRQ */ + GUSregb(FunkSelReg3x3) = (uint8_t) data; + if ((uint8_t) data == 0x8f) /* set irqstatreg, get voicereg and clear IRQ */ { int voice; if (GUSregd(voicewavetableirq)) /* WavetableIRQ */ @@ -358,12 +358,12 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) break; /* voice unspecific functions */ case 0x0e: /* NumVoices */ - GUSregb(NumVoices) = (GUSbyte) data; + GUSregb(NumVoices) = (uint8_t) data; break; /* case 0x0f: */ /* read only */ /* common functions */ case 0x41: /* DramDMAContrReg */ - GUSregb(GUS41DMACtrl) = (GUSbyte) data; + GUSregb(GUS41DMACtrl) = (uint8_t) data; if (data & 0x01) GUS_dmarequest(state); break; @@ -380,7 +380,7 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) (GUSregd(GUSDRAMPOS24bit) & 0xffff) | ((data & 0x0f) << 16); break; case 0x45: /* TCtrlReg */ - GUSregb(GUS45TimerCtrl) = (GUSbyte) data; + GUSregb(GUS45TimerCtrl) = (uint8_t) data; if (!(data & 0x20)) GUSregb(TimerStatus2x8) &= 0xe7; /* sb IRQ dis? -> clear 2x8/2xC sb IRQ flags */ if (!(data & 0x02)) @@ -434,18 +434,18 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) GUS_irqclear(state, state->gusirq); break; case 0x46: /* Counter1 */ - GUSregb(GUS46Counter1) = (GUSbyte) data; + GUSregb(GUS46Counter1) = (uint8_t) data; break; case 0x47: /* Counter2 */ - GUSregb(GUS47Counter2) = (GUSbyte) data; + GUSregb(GUS47Counter2) = (uint8_t) data; break; /* case 0x48: */ /* sampling freq reg not emulated (same as interwave) */ case 0x49: /* SampCtrlReg */ - GUSregb(GUS49SampCtrl) = (GUSbyte) data; + GUSregb(GUS49SampCtrl) = (uint8_t) data; break; /* case 0x4b: */ /* joystick trim not emulated */ case 0x4c: /* GUSreset */ - GUSregb(GUS4cReset) = (GUSbyte) data; + GUSregb(GUS4cReset) = (uint8_t) data; if (!(GUSregb(GUS4cReset) & 1)) /* reset... */ { GUSregd(voicewavetableirq) = 0; @@ -471,9 +471,9 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) break; case 0x307: /* DRAMaccess */ { - GUSbyte *adr; + uint8_t *adr; adr = state->himemaddr + (GUSregd(GUSDRAMPOS24bit) & 0xfffff); - *adr = (GUSbyte) data; + *adr = (uint8_t) data; } break; } @@ -510,7 +510,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun char *srcaddr; char *destaddr; char msbmask = 0; - GUSbyte *gusptr; + uint8_t *gusptr; gusptr = state->gusdatapos; srcaddr = dma_addr; /* system memory address */ @@ -522,7 +522,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun } GUSregw(GUS42DMAStart) += (GUSword) (count >> 4); /* ToDo: add 16bit GUS page limit? */ - GUSregb(GUS50DMAHigh) = (GUSbyte) ((count + GUSregb(GUS50DMAHigh)) & 0xf); /* ToDo: add 16bit GUS page limit? */ + GUSregb(GUS50DMAHigh) = (uint8_t) ((count + GUSregb(GUS50DMAHigh)) & 0xf); /* ToDo: add 16bit GUS page limit? */ if (GUSregb(GUS41DMACtrl) & 0x02) /* direction, 0 := sysram->gusram */ { diff --git a/hw/audio/gusemu_mixer.c b/hw/audio/gusemu_mixer.c index 701e8fb..d255ac8 100644 --- a/hw/audio/gusemu_mixer.c +++ b/hw/audio/gusemu_mixer.c @@ -37,7 +37,7 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int GUSsample *bufferpos) { /* note that byte registers are stored in the upper half of each voice register! */ - GUSbyte *gusptr; + uint8_t *gusptr; int Voice; GUSword *voiceptr; @@ -187,7 +187,7 @@ void gus_irqgen(GUSEmuState * state, unsigned int elapsed_time) /* time given in microseconds */ { int requestedIRQs = 0; - GUSbyte *gusptr; + uint8_t *gusptr; gusptr = state->gusdatapos; if (GUSregb(TimerDataReg2x9) & 1) /* start timer 1 (80us decrement rate) */ { -- cgit v1.1 From 222e0356fa383175ca3c60f7b76cc9dcbb15113f Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:29 +0200 Subject: audio: remove GUSchar Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-17-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/gusemu.h | 2 -- hw/audio/gusemu_mixer.c | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/hw/audio/gusemu.h b/hw/audio/gusemu.h index 3a69222..1c1a63c 100644 --- a/hw/audio/gusemu.h +++ b/hw/audio/gusemu.h @@ -30,10 +30,8 @@ #if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */ typedef unsigned short GUSword; typedef unsigned int GUSdword; - typedef signed char GUSchar; typedef signed short GUSsample; #else - typedef int8_t GUSchar; typedef uint16_t GUSword; typedef uint32_t GUSdword; typedef int16_t GUSsample; diff --git a/hw/audio/gusemu_mixer.c b/hw/audio/gusemu_mixer.c index d255ac8..b189db9 100644 --- a/hw/audio/gusemu_mixer.c +++ b/hw/audio/gusemu_mixer.c @@ -85,16 +85,16 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int if (GUSvoice(wVSRControl) & 0x400) /* 16bit */ { int offset = ((CurrPos >> 9) & 0xc0000) + (((CurrPos >> 9) & 0x1ffff) << 1); - GUSchar *adr; - adr = (GUSchar *) state->himemaddr + offset; + int8_t *adr; + adr = (int8_t *) state->himemaddr + offset; sample1 = (*adr & 0xff) + (*(adr + 1) * 256); sample2 = (*(adr + 2) & 0xff) + (*(adr + 2 + 1) * 256); } else /* 8bit */ { int offset = (CurrPos >> 9) & 0xfffff; - GUSchar *adr; - adr = (GUSchar *) state->himemaddr + offset; + int8_t *adr; + adr = (int8_t *) state->himemaddr + offset; sample1 = (*adr) * 256; sample2 = (*(adr + 1)) * 256; } -- cgit v1.1 From 1c742f2b8e9bb86b33f70efb28c5badcad4ef104 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:30 +0200 Subject: audio: GUSword is uint16_t Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-18-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/gusemu.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/audio/gusemu.h b/hw/audio/gusemu.h index 1c1a63c..69dadef 100644 --- a/hw/audio/gusemu.h +++ b/hw/audio/gusemu.h @@ -28,11 +28,9 @@ /* data types (need to be adjusted if neither a VC6 nor a C99 compatible compiler is used) */ #if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */ - typedef unsigned short GUSword; typedef unsigned int GUSdword; typedef signed short GUSsample; #else - typedef uint16_t GUSword; typedef uint32_t GUSdword; typedef int16_t GUSsample; #endif -- cgit v1.1 From 4bf7792aaedc1f66f94e21c1bae91bb4d208a08d Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:31 +0200 Subject: audio: GUSword is uint16_t Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-19-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/gusemu_hal.c | 14 +++++++------- hw/audio/gusemu_mixer.c | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/hw/audio/gusemu_hal.c b/hw/audio/gusemu_hal.c index 444a2bb..3dd7239 100644 --- a/hw/audio/gusemu_hal.c +++ b/hw/audio/gusemu_hal.c @@ -31,7 +31,7 @@ #include "gusemu.h" #define GUSregb(position) (* (gusptr+(position))) -#define GUSregw(position) (*(GUSword *) (gusptr+(position))) +#define GUSregw(position) (*(uint16_t *) (gusptr+(position))) #define GUSregd(position) (*(GUSdword *)(gusptr+(position))) /* size given in bytes */ @@ -173,7 +173,7 @@ unsigned int gus_read(GUSEmuState * state, int port, int size) value_read = value_read >> 8; value_read &= 0xff; } - return (GUSword) value_read; + return (uint16_t) value_read; /* case 0x306: */ /* Mixer/Version info */ /* return 0xff; */ /* Pre 3.6 boards, ICS mixer NOT present */ case 0x307: /* DRAMaccess */ @@ -318,15 +318,15 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) case 0x304: case 0x305: { - GUSword writedata = (GUSword) data; - GUSword readmask = 0x0000; + uint16_t writedata = (uint16_t) data; + uint16_t readmask = 0x0000; if (size == 1) { readmask = 0xff00; writedata &= 0xff; if ((port & 0xff0f) == 0x305) { - writedata = (GUSword) (writedata << 8); + writedata = (uint16_t) (writedata << 8); readmask = 0x00ff; } } @@ -353,7 +353,7 @@ void gus_write(GUSEmuState * state, int port, int size, unsigned int data) break; /* reset flag active? */ offset = 2 * (GUSregb(FunkSelReg3x3) & 0x0f); offset += (GUSregb(VoiceSelReg3x2) & 0x1f) << 5; /* = Voice*32 + Funktion*2 */ - GUSregw(offset) = (GUSword) ((GUSregw(offset) & readmask) | writedata); + GUSregw(offset) = (uint16_t) ((GUSregw(offset) & readmask) | writedata); } break; /* voice unspecific functions */ @@ -521,7 +521,7 @@ void gus_dma_transferdata(GUSEmuState * state, char *dma_addr, unsigned int coun destaddr = (char *) state->himemaddr + offset; /* wavetable RAM address */ } - GUSregw(GUS42DMAStart) += (GUSword) (count >> 4); /* ToDo: add 16bit GUS page limit? */ + GUSregw(GUS42DMAStart) += (uint16_t) (count >> 4); /* ToDo: add 16bit GUS page limit? */ GUSregb(GUS50DMAHigh) = (uint8_t) ((count + GUSregb(GUS50DMAHigh)) & 0xf); /* ToDo: add 16bit GUS page limit? */ if (GUSregb(GUS41DMACtrl) & 0x02) /* direction, 0 := sysram->gusram */ diff --git a/hw/audio/gusemu_mixer.c b/hw/audio/gusemu_mixer.c index b189db9..981a9ae 100644 --- a/hw/audio/gusemu_mixer.c +++ b/hw/audio/gusemu_mixer.c @@ -27,10 +27,10 @@ #include "gustate.h" #define GUSregb(position) (* (gusptr+(position))) -#define GUSregw(position) (*(GUSword *) (gusptr+(position))) +#define GUSregw(position) (*(uint16_t *) (gusptr+(position))) #define GUSregd(position) (*(GUSdword *)(gusptr+(position))) -#define GUSvoice(position) (*(GUSword *)(voiceptr+(position))) +#define GUSvoice(position) (*(uint16_t *)(voiceptr+(position))) /* samples are always 16bit stereo (4 bytes each, first right then left interleaved) */ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int numsamples, @@ -39,14 +39,14 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int /* note that byte registers are stored in the upper half of each voice register! */ uint8_t *gusptr; int Voice; - GUSword *voiceptr; + uint16_t *voiceptr; unsigned int count; for (count = 0; count < numsamples * 2; count++) *(bufferpos + count) = 0; /* clear */ gusptr = state->gusdatapos; - voiceptr = (GUSword *) gusptr; + voiceptr = (uint16_t *) gusptr; if (!(GUSregb(GUS4cReset) & 0x01)) /* reset flag active? */ return; -- cgit v1.1 From 135f5ae1974ccd8e77f004924a5fe7168be1b9eb Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:32 +0200 Subject: audio: GUSsample is int16_t Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-20-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/gus.c | 2 +- hw/audio/gusemu.h | 12 +----------- hw/audio/gusemu_hal.c | 2 +- hw/audio/gusemu_mixer.c | 8 ++++---- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/hw/audio/gus.c b/hw/audio/gus.c index 3d08a65..ec103a4 100644 --- a/hw/audio/gus.c +++ b/hw/audio/gus.c @@ -53,7 +53,7 @@ typedef struct GUSState { uint32_t freq; uint32_t port; int pos, left, shift, irqs; - GUSsample *mixbuf; + int16_t *mixbuf; uint8_t himem[1024 * 1024 + 32 + 4096]; int samples; SWVoiceOut *voice; diff --git a/hw/audio/gusemu.h b/hw/audio/gusemu.h index 69dadef..ab591ee 100644 --- a/hw/audio/gusemu.h +++ b/hw/audio/gusemu.h @@ -25,16 +25,6 @@ #ifndef GUSEMU_H #define GUSEMU_H -/* data types (need to be adjusted if neither a VC6 nor a C99 compatible compiler is used) */ - -#if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */ - typedef unsigned int GUSdword; - typedef signed short GUSsample; -#else - typedef uint32_t GUSdword; - typedef int16_t GUSsample; -#endif - typedef struct _GUSEmuState { uint8_t *himemaddr; /* 1024*1024 bytes used for storing uploaded samples (+32 additional bytes for read padding) */ @@ -86,7 +76,7 @@ void gus_dma_transferdata(GUSEmuState *state, char *dma_addr, unsigned int count /* If the interrupts are asynchronous, it may be needed to use a separate thread mixing into a temporary */ /* audio buffer in order to avoid quality loss caused by large numsamples and elapsed_time values. */ -void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, GUSsample *bufferpos); +void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, int16_t *bufferpos); /* recommended range: 10 < numsamples < 100 */ /* lower values may result in increased rounding error, higher values often cause audible timing delays */ diff --git a/hw/audio/gusemu_hal.c b/hw/audio/gusemu_hal.c index 3dd7239..1150fc4 100644 --- a/hw/audio/gusemu_hal.c +++ b/hw/audio/gusemu_hal.c @@ -32,7 +32,7 @@ #define GUSregb(position) (* (gusptr+(position))) #define GUSregw(position) (*(uint16_t *) (gusptr+(position))) -#define GUSregd(position) (*(GUSdword *)(gusptr+(position))) +#define GUSregd(position) (*(uint16_t *)(gusptr+(position))) /* size given in bytes */ unsigned int gus_read(GUSEmuState * state, int port, int size) diff --git a/hw/audio/gusemu_mixer.c b/hw/audio/gusemu_mixer.c index 981a9ae..00b9861 100644 --- a/hw/audio/gusemu_mixer.c +++ b/hw/audio/gusemu_mixer.c @@ -28,13 +28,13 @@ #define GUSregb(position) (* (gusptr+(position))) #define GUSregw(position) (*(uint16_t *) (gusptr+(position))) -#define GUSregd(position) (*(GUSdword *)(gusptr+(position))) +#define GUSregd(position) (*(uint16_t *)(gusptr+(position))) #define GUSvoice(position) (*(uint16_t *)(voiceptr+(position))) /* samples are always 16bit stereo (4 bytes each, first right then left interleaved) */ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int numsamples, - GUSsample *bufferpos) + int16_t *bufferpos) { /* note that byte registers are stored in the upper half of each voice register! */ uint8_t *gusptr; @@ -171,8 +171,8 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int } /* mix samples into buffer */ - *(bufferpos + 2 * sample) += (GUSsample) ((sample1 * PanningPos) >> 4); /* right */ - *(bufferpos + 2 * sample + 1) += (GUSsample) ((sample1 * (15 - PanningPos)) >> 4); /* left */ + *(bufferpos + 2 * sample) += (int16_t) ((sample1 * PanningPos) >> 4); /* right */ + *(bufferpos + 2 * sample + 1) += (int16_t) ((sample1 * (15 - PanningPos)) >> 4); /* left */ } /* write back voice and volume */ GUSvoice(wVSRCurrVol) = Volume32 / 32; -- cgit v1.1 From 17a1694a56298df9902ecdaf91a5dc930ed915a9 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:33 +0200 Subject: audio: OPLSetIRQHandler is not used anywhere Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-21-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 5 ----- hw/audio/fmopl.h | 1 - 2 files changed, 6 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 48db828..f91e700 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -1141,11 +1141,6 @@ void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOff OPL->TimerHandler = TimerHandler; OPL->TimerParam = channelOffset; } -void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,int param) -{ - OPL->IRQHandler = IRQHandler; - OPL->IRQParam = param; -} void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param) { OPL->UpdateHandler = UpdateHandler; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 8730ead..375f971 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -102,7 +102,6 @@ typedef struct fm_opl_f { FM_OPL *OPLCreate(int clock, int rate); void OPLDestroy(FM_OPL *OPL); void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset); -void OPLSetIRQHandler(FM_OPL *OPL,OPL_IRQHANDLER IRQHandler,int param); void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param); void OPLResetChip(FM_OPL *OPL); -- cgit v1.1 From ade339896b7b6f660a7765e398b373b9b80a6258 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:34 +0200 Subject: audio: OPLSetUpdateHandler is not used anywhere Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-22-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 6 +----- hw/audio/fmopl.h | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index f91e700..694a77b 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -1141,11 +1141,7 @@ void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOff OPL->TimerHandler = TimerHandler; OPL->TimerParam = channelOffset; } -void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param) -{ - OPL->UpdateHandler = UpdateHandler; - OPL->UpdateParam = param; -} + /* ---------- YM3812 I/O interface ---------- */ int OPLWrite(FM_OPL *OPL,int a,int v) { diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 375f971..446de08 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -102,7 +102,6 @@ typedef struct fm_opl_f { FM_OPL *OPLCreate(int clock, int rate); void OPLDestroy(FM_OPL *OPL); void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset); -void OPLSetUpdateHandler(FM_OPL *OPL,OPL_UPDATEHANDLER UpdateHandler,int param); void OPLResetChip(FM_OPL *OPL); int OPLWrite(FM_OPL *OPL,int a,int v); -- cgit v1.1 From e14e09c945fbca5dd0a01f689c70538d827734fb Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:35 +0200 Subject: audio: IRQHandler is not used anymore Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-23-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 4 ---- hw/audio/fmopl.h | 2 -- 2 files changed, 6 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 694a77b..5b8a884 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -260,8 +260,6 @@ static inline void OPL_STATUS_SET(FM_OPL *OPL,int flag) if(OPL->status & OPL->statusmask) { /* IRQ on */ OPL->status |= 0x80; - /* callback user interrupt handler (IRQ is OFF to ON) */ - if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,1); } } } @@ -276,8 +274,6 @@ static inline void OPL_STATUS_RESET(FM_OPL *OPL,int flag) if (!(OPL->status & OPL->statusmask) ) { OPL->status &= 0x7f; - /* callback user interrupt handler (IRQ is ON to OFF) */ - if(OPL->IRQHandler) (OPL->IRQHandler)(OPL->IRQParam,0); } } } diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 446de08..b1641f5 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -92,8 +92,6 @@ typedef struct fm_opl_f { /* external event callback handler */ OPL_TIMERHANDLER TimerHandler; /* TIMER handler */ int TimerParam; /* TIMER parameter */ - OPL_IRQHANDLER IRQHandler; /* IRQ handler */ - int IRQParam; /* IRQ parameter */ OPL_UPDATEHANDLER UpdateHandler; /* stream update handler */ int UpdateParam; /* stream update parameter */ } FM_OPL; -- cgit v1.1 From b3b40917c75c28036b9c7e89a42ee6dfbeb3bf90 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:36 +0200 Subject: audio: UpdateHandler is not used anymore Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-24-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 2 -- hw/audio/fmopl.h | 2 -- 2 files changed, 4 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 5b8a884..99d09c5 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -1147,7 +1147,6 @@ int OPLWrite(FM_OPL *OPL,int a,int v) } else { /* data port */ - if(OPL->UpdateHandler) OPL->UpdateHandler(OPL->UpdateParam,0); #ifdef OPL_OUTPUT_LOG if(opl_dbg_fp) { @@ -1197,7 +1196,6 @@ int OPLTimerOver(FM_OPL *OPL,int c) if( OPL->mode & 0x80 ) { /* CSM mode total level latch and auto key on */ int ch; - if(OPL->UpdateHandler) OPL->UpdateHandler(OPL->UpdateParam,0); for(ch=0;ch<9;ch++) CSMKeyControll( &OPL->P_CH[ch] ); } diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index b1641f5..8410275 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -92,8 +92,6 @@ typedef struct fm_opl_f { /* external event callback handler */ OPL_TIMERHANDLER TimerHandler; /* TIMER handler */ int TimerParam; /* TIMER parameter */ - OPL_UPDATEHANDLER UpdateHandler; /* stream update handler */ - int UpdateParam; /* stream update parameter */ } FM_OPL; /* ---------- Generic interface section ---------- */ -- cgit v1.1 From 3fab7b675a6ff6314b93fc580299cc6b59f96138 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:37 +0200 Subject: audio: Remove unused typedefs Signed-off-by: Juan Quintela Message-id: 20170425223739.6703-25-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index 8410275..f89af08 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -4,10 +4,6 @@ #include typedef void (*OPL_TIMERHANDLER)(int channel,double interval_Sec); -typedef void (*OPL_IRQHANDLER)(int param,int irq); -typedef void (*OPL_UPDATEHANDLER)(int param,int min_interval_us); -typedef void (*OPL_PORTHANDLER_W)(int param,unsigned char data); -typedef unsigned char (*OPL_PORTHANDLER_R)(int param); /* !!!!! here is private section , do not access there member direct !!!!! */ -- cgit v1.1 From d52ccc0ecacbc61568138fa4c0fd58930078c664 Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:38 +0200 Subject: audio: un-export OPLResetChip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Quintela Reviewed-by: Philippe Mathieu-Daudé Message-id: 20170425223739.6703-26-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 2 +- hw/audio/fmopl.h | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index 99d09c5..dc9043c 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -1036,7 +1036,7 @@ void YM3812UpdateOne(FM_OPL *OPL, int16_t *buffer, int length) } /* ---------- reset one of chip ---------- */ -void OPLResetChip(FM_OPL *OPL) +static void OPLResetChip(FM_OPL *OPL) { int c,s; int i; diff --git a/hw/audio/fmopl.h b/hw/audio/fmopl.h index f89af08..fc9f16b 100644 --- a/hw/audio/fmopl.h +++ b/hw/audio/fmopl.h @@ -95,7 +95,6 @@ FM_OPL *OPLCreate(int clock, int rate); void OPLDestroy(FM_OPL *OPL); void OPLSetTimerHandler(FM_OPL *OPL,OPL_TIMERHANDLER TimerHandler,int channelOffset); -void OPLResetChip(FM_OPL *OPL); int OPLWrite(FM_OPL *OPL,int a,int v); unsigned char OPLRead(FM_OPL *OPL,int a); int OPLTimerOver(FM_OPL *OPL,int c); -- cgit v1.1 From 9ea5ada76f34a0ef048b131c3a166d8564199bdb Mon Sep 17 00:00:00 2001 From: Juan Quintela Date: Wed, 26 Apr 2017 00:37:39 +0200 Subject: audio: Use ARRAY_SIZE from qemu/osdep.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juan Quintela Reviewed-by: Philippe Mathieu-Daudé Message-id: 20170425223739.6703-27-quintela@redhat.com Signed-off-by: Gerd Hoffmann --- hw/audio/fmopl.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/hw/audio/fmopl.c b/hw/audio/fmopl.c index dc9043c..202f752 100644 --- a/hw/audio/fmopl.c +++ b/hw/audio/fmopl.c @@ -34,15 +34,11 @@ #include //#include "driver.h" /* use M.A.M.E. */ #include "fmopl.h" - +#include "qemu/osdep.h" #ifndef PI #define PI 3.14159265358979323846 #endif -#ifndef ARRAY_SIZE -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -#endif - /* -------------------- for debug --------------------- */ /* #define OPL_OUTPUT_LOG */ #ifdef OPL_OUTPUT_LOG -- cgit v1.1